<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • 基于XML的異構(gòu)數(shù)據(jù)交換的研究

    • 相關(guān)推薦

    基于XML的異構(gòu)數(shù)據(jù)交換的研究

    畢業(yè)論文

    基于XML的異構(gòu)數(shù)據(jù)交換的研究

    摘 要:XML 的可擴(kuò)展性和自描述性以及其它特性為異構(gòu)數(shù)據(jù)交換提供了新的思路。基于XML 本文提出了1種異構(gòu)數(shù)據(jù)交換的方法,并結(jié)合應(yīng)用實(shí)例給出了它的具體的實(shí)現(xiàn)過程。
    關(guān)鍵詞:異構(gòu)數(shù)據(jù)庫,數(shù)據(jù)交換, XMLSchema,XML
    中圖法分類號(hào):TP311  文獻(xiàn)標(biāo)示碼:A
    Keywords: Heterogeneous databases, Data exchange, XML Schema, XML
    1 前言 畢業(yè)論文 論文網(wǎng)
    數(shù)據(jù)庫應(yīng)用發(fā)展到今天,己有相當(dāng)數(shù)量的企業(yè)和科研機(jī)構(gòu)積累了大量的、以不同形式存儲(chǔ)的、依賴于不同數(shù)據(jù)庫管理系統(tǒng)的數(shù)據(jù),如何共享這些數(shù)據(jù)信息,是企業(yè)進(jìn)1步發(fā)展所需解決的問題。另外,由于歷史等原因,Internet上的數(shù)據(jù)庫系統(tǒng)不少也是分布、異構(gòu)的,Internet上大量信息必須通過數(shù)據(jù)庫系統(tǒng)才能有效管理,如何合理地使用這些異構(gòu)數(shù)據(jù)庫,己成為當(dāng)前急待解決的問題。異構(gòu)數(shù)據(jù)庫系統(tǒng)是相關(guān)的多個(gè)數(shù)據(jù)庫系統(tǒng)的集合,用以實(shí)現(xiàn)數(shù)據(jù)的共享和透明訪問。異構(gòu)數(shù)據(jù)庫系統(tǒng)的異構(gòu)性主要體現(xiàn)在以下幾個(gè)方面: 1)計(jì)算機(jī)體系結(jié)構(gòu)的異構(gòu)。2)基礎(chǔ)操作系統(tǒng)的異構(gòu)。3) DBMS本身的異構(gòu)。本文中討論的異構(gòu)數(shù)據(jù)庫屬于第3種類型,即在不同DBMS的兩個(gè)異構(gòu)數(shù)據(jù)庫系統(tǒng)間(Oracle數(shù)據(jù)庫和SQL Server數(shù)據(jù)庫)進(jìn)行信息交流。
    2 XML與數(shù)據(jù)庫
    2。1 XML及其相關(guān)技術(shù)
     XML即為“可擴(kuò)展的標(biāo)記語言”(eXtensible Markup Language ),是1套定義語義標(biāo)記的規(guī)則。是由W3C組織于1998 年2月制定的1種通用語言規(guī)范, 是SGML的簡(jiǎn)化子集, 專門為Web 應(yīng)用程序而設(shè)計(jì)。XML 作為1種可擴(kuò)展性標(biāo)記語言, 其自描述性使其非常適用于不同應(yīng)用間的數(shù)據(jù)交換, 而且這種交換是不以預(yù)先規(guī)定1組數(shù)據(jù)結(jié)構(gòu)定義為前提。XML 的最大優(yōu)點(diǎn)是對(duì)數(shù)據(jù)描述和數(shù)據(jù)傳送能力, 因此具備很強(qiáng)的開放性。
    為了對(duì)XML文檔的結(jié)構(gòu)與允許值進(jìn)行定義和檢查,有兩種辦法:1是使用DTD文檔類型定義;2是使用XML Schema。這兩者均為XML規(guī)范的1部分。DTD的用途很多,可用來定義內(nèi)容的模式、限制數(shù)據(jù)的范圍、限制屬性的數(shù)據(jù)類型等。但DTD也有1些不足之處:DTD本身不符合XML規(guī)范;它不支持名稱空間(Namespace);擴(kuò)展性差;數(shù)據(jù)類型有限等。 XML Schema相對(duì)于DTD的明顯好處是Schema文檔本身符合XML規(guī)范,而不是象DTD那樣使用特殊格式。用戶與開發(fā)者可以使用相同的工具來處理XML Schema,而不必使用特殊的工具。
    2。2 關(guān)系數(shù)據(jù)庫與XML之間的映射方法
     根據(jù)映射關(guān)系的建立方式不同,我們可以得到兩種數(shù)據(jù)轉(zhuǎn)換方法:基于模板驅(qū)動(dòng)的轉(zhuǎn)換方法和基于模型驅(qū)動(dòng)的轉(zhuǎn)換方法。
    2。2。1基于模板驅(qū)動(dòng)的映射方法
    基于模板的映射方法并不預(yù)先定義好XML文檔與其他數(shù)據(jù)之間的映射關(guān)系,而是在XML文檔中嵌入帶參數(shù)的SQL命令。這些命令在轉(zhuǎn)換過程中被系統(tǒng)所識(shí)別和執(zhí)行,執(zhí)行的結(jié)果被替換到指令所在的位置,從而生成目標(biāo)XML文檔,并用數(shù)據(jù)傳輸諸如中間件等實(shí)體軟件進(jìn)行處理。基于模板的轉(zhuǎn)換方法的好處在于轉(zhuǎn)換的步驟比較簡(jiǎn)單,只要給出模板,就可以快速地生成相應(yīng)的XML文檔。不足之處在于,基于模板驅(qū)動(dòng)的映射是1種淺層映射,以XML內(nèi)嵌的SQL執(zhí)行的數(shù)據(jù)結(jié)果集為依據(jù),不涉及數(shù)據(jù)庫賴以存在的關(guān)系模式,它只是將關(guān)系數(shù)據(jù)庫的數(shù)據(jù)轉(zhuǎn)換為XML文檔,并沒有提取出關(guān)系模式,它舍棄了關(guān)系模式的種種約束條件,因此對(duì)于反向的轉(zhuǎn)換更是無能為力。
    2。2。2基于模型驅(qū)動(dòng)的映射方法
    基于模型驅(qū)動(dòng)的映射,當(dāng)把數(shù)據(jù)從數(shù)據(jù)庫傳送到XML文檔或把數(shù)據(jù)從XML文檔傳送到數(shù)據(jù)庫時(shí),不是僅僅依賴內(nèi)嵌SQL命令,而是用1個(gè)具體的模型實(shí)現(xiàn)的。基于模型的轉(zhuǎn)換方法用這個(gè)預(yù)先定義好的數(shù)據(jù)模型來映射XML與關(guān)系數(shù)據(jù)庫數(shù)據(jù)之間的關(guān)系。基于模型的轉(zhuǎn)換方法的關(guān)鍵在于設(shè)計(jì)1個(gè)靈活的映射模型,為了更好的支持其逆向映射的特點(diǎn),這個(gè)映射模型必須是易于“讀懂”的、易于操縱的,能夠很好的與達(dá)關(guān)系數(shù)據(jù)庫的各種約束。關(guān)系數(shù)據(jù)庫的理論依據(jù)是關(guān)系模型,而XML文檔的依據(jù)是XML Schema或DTD等。本文將用XML Schema來描述關(guān)系數(shù)據(jù)。
    3。 應(yīng)用實(shí)例
     在本文中,數(shù)據(jù)庫的異構(gòu)主要是DBMS的異構(gòu),1個(gè)是Oracle的DBMS,1個(gè)是SQL Server的DBMS,我們以學(xué)校學(xué)生管理系統(tǒng)為例。該系統(tǒng)分為院和系兩部分。各系里的管理系統(tǒng)其前端開發(fā)上具是Sybases公司的PowerBuilder 9。0,后臺(tái)數(shù)據(jù)庫系統(tǒng)是Oracle公司的Oracle 8i。另外,學(xué)院有1套自己的管理軟件,該軟件后臺(tái)數(shù)據(jù)庫服務(wù)器為Microsoft公司的SQLServer 2005,為了達(dá)到系向院級(jí)實(shí)時(shí)傳遞學(xué)生管理信息和保持信息1致性的目的,且考慮到學(xué)生管理信息數(shù)據(jù)量大、重要性高的特點(diǎn),需要設(shè)計(jì)1種高效、安全的數(shù)據(jù)傳送方法來實(shí)現(xiàn)學(xué)生信息的交流。正是在此背景下,設(shè)計(jì)了1種利用XML來實(shí)現(xiàn)這兩個(gè)異構(gòu)數(shù)據(jù)庫信息交流方法。
    本系統(tǒng)具體實(shí)現(xiàn)總體上可分為兩個(gè)部分,其1是客戶端Oracle數(shù)據(jù)庫中的數(shù)據(jù)到XML文檔的映射過程,其2是XML文檔到SQL Server數(shù)據(jù)庫的映射過程。由于本系統(tǒng)實(shí)現(xiàn)的木的是將各系學(xué)生管理系統(tǒng)數(shù)據(jù)庫中的“有效信息”根據(jù)需要上傳到學(xué)院管理系統(tǒng)的數(shù)據(jù)庫中,所以客戶端和服務(wù)器端的實(shí)現(xiàn)都是以SQL Server數(shù)據(jù)庫的關(guān)系模式為基礎(chǔ),即以SQL Server數(shù)據(jù)庫中的表及其相互關(guān)系為基礎(chǔ)的,客戶端上傳的數(shù)據(jù)必須符合學(xué)院的管理系統(tǒng)的標(biāo)準(zhǔn)。
    從目的和技術(shù)兩個(gè)方面出發(fā),依據(jù)本系統(tǒng)的具體特點(diǎn),本系統(tǒng)實(shí)現(xiàn)的第1步就是通過SQL Server關(guān)系數(shù)據(jù)庫將關(guān)系模式映射為XML模式,即通過關(guān)系數(shù)據(jù)庫中具體的表及其相互關(guān)系,映射為標(biāo)準(zhǔn)的XML文檔描述語言XML Schema。從而為客戶端生成XML文檔提供1個(gè)格式上的標(biāo)準(zhǔn)。下面是整個(gè)系統(tǒng)的具體實(shí)現(xiàn)。
    3。1 SQL Server數(shù)據(jù)庫中表及其相互關(guān)系
     學(xué)生信息在SQL Server數(shù)據(jù)庫中有兩個(gè)表,這兩個(gè)表中的數(shù)據(jù)正是我們交換的信息,各個(gè)表的信息和表之間的約束關(guān)系如下:
     表1(學(xué)生基本信息表):
    Table studet(
      Id    10)  not null,//學(xué)號(hào)
     name    15)  null,//姓名
     sex    2)   null,//性別 畢業(yè)論文 論文網(wǎng)
     class   10)  null,//所在班級(jí)
     age    Integer   null,//年齡
     constraint PK_student primary key(Id)
     )
    表2(班級(jí)情況表):
    Table depart(
     class    10)  not null,//班級(jí)
     boy_num   Integer   null,//男生人數(shù)
     girl_num  Integer   null,//女生人數(shù)
     monitor   15)  null,//班長(zhǎng)
     teacher   15)  null,//班主任
    constraint PK_depart primary key(class)
    constraint fk_RC
    foreign key (calss) References student (calss)
     )
    3。2 通過ADO。NET將關(guān)系數(shù)據(jù)庫映射為XML Schema
    利用ADO。NET組件將SQL Server關(guān)系數(shù)據(jù)庫映射為XML Schema,該XMLSchema正是我們把Oracle數(shù)據(jù)庫服務(wù)器中數(shù)據(jù)映射為XML文檔所要依據(jù)的XMLSchema,下面是C#中產(chǎn)生XML Schema的部分關(guān)鍵代碼(這里僅列出與表1有關(guān)的代碼,至于其它三個(gè)表,類同):
    //產(chǎn)生1個(gè)新的數(shù)據(jù)集
    DataSet ds=new DataSet(“studentXML”);
    //連接數(shù)據(jù)源
    OleDbConnection conn=new
    OleDbConnetion(@”server=student;uid=system;pwd=manager;datasource=student”)
    //生成數(shù)據(jù)適配器(僅列出表的相關(guān)代碼student)
    OIeDbDataAdapter da_index=new OIeDbDataAdapter("SELECT*FROM student”,conn);
    //用適配器填充數(shù)據(jù)集
    da_index。Fill(ds,”student”);
    //在數(shù)據(jù)集中添加表與表之間的關(guān)系
    ds。Relations。Add(ds。Tables["student"]。Columns["class"],
             ds。Tables["depart"]。Columns["class"]);
    //生成XML文件
    ds。WriteXml(“。。。。jhsy。xml",XmlWriteMode。WriteSchema);
    通過執(zhí)行這些代碼后,1個(gè)標(biāo)準(zhǔn)XML Schema格式文檔即可生成。
    3。3 從Oracle數(shù)據(jù)庫到XML文檔的映射
    具體方法是先將數(shù)據(jù)庫中的數(shù)據(jù)檢索、過濾到數(shù)據(jù)窗口中,然后用程序方法來實(shí)現(xiàn)數(shù)據(jù)到XML文檔的映射。主要用到的函數(shù)就是FileWrite(),由于異構(gòu)數(shù)據(jù)庫之間表的字段名、字段類型、字段長(zhǎng)度的不1致性,所以在程序中,還要有將Oracle數(shù)據(jù)庫中數(shù)據(jù)進(jìn)行變換以符合SQL Server數(shù)據(jù)庫中表和字段定義要求的功能。此外,還要符合SQL Server中表的主、外鍵定義。具體流程如下圖:

    3。4 將有效的XML文檔轉(zhuǎn)化為ADO。NET數(shù)據(jù)
    XML數(shù)據(jù)文檔經(jīng)過有解析和效性驗(yàn)證后,下1步是如何將其映射到SQL Server數(shù)據(jù)庫中,XML數(shù)據(jù)文檔并不是直接1步就映射到庫中的,它先通過C # 。net提供的ADO。NET來轉(zhuǎn)化,先將文檔的數(shù)據(jù)加載到DataSet(數(shù)據(jù)集)中,然后才從ADO。NET映射到數(shù)據(jù)庫中的。
     ADO。NET是為在XML環(huán)境中上作而設(shè)計(jì)的,ADO。NET使用XML進(jìn)行遠(yuǎn)程傳輸,所以數(shù)據(jù)可以在不支持ADO。NET的應(yīng)用程序和系統(tǒng)之間交換,ADO。NET提供了1些強(qiáng)大的功能來讀寫XML文檔,使用ADO。NET關(guān)系數(shù)據(jù)的類被包含在System。Xml這1命名空間中。要把XML文檔加載到SQL Serve:數(shù)據(jù)庫中,應(yīng)先把XML文檔轉(zhuǎn)換為ADO。NET的DataSet。下面是其主要代碼:
     DataSet ds_ xml=new DataSet("studentXML");
     ds。ReadXml(“。。。。。。 jhsy。xml",XmlReadMode。ReadSchema);
    ReadXml()函數(shù)是專門用來處理XML數(shù)據(jù)文檔的,它有兩個(gè)參數(shù),第1個(gè)參數(shù)是要讀取的XML數(shù)據(jù)文檔,第2個(gè)參數(shù)是讀取的模式,我們選取ReadSchema模式,即以XML Schema為XML數(shù)據(jù)文檔的模式描述語言。
    3。5將ADO。NET數(shù)據(jù)加載到數(shù)據(jù)庫中
     雖然此時(shí)XML數(shù)據(jù)文檔己經(jīng)轉(zhuǎn)化為數(shù)據(jù)集ds_ xml中的數(shù)據(jù),但還不能直接更新數(shù)據(jù)庫,因?yàn)闆]有1個(gè)數(shù)據(jù)適配器,自接更新是不成功的,因此,再新建1個(gè)數(shù)據(jù)集ds_ server,該數(shù)據(jù)集通過數(shù)據(jù)適配器dal與SQL Server數(shù)據(jù)庫聯(lián)系,此數(shù)據(jù)集中的數(shù)據(jù)可直接更新數(shù)據(jù)庫,然后,由于ds_ server數(shù)據(jù)集和ds_xml數(shù)據(jù)集的數(shù)據(jù)模式是相同的(都是XML Schema),所以它們可以“合并”,C # 。net中提供了Merger函數(shù)用來合并兩個(gè)具有相同數(shù)據(jù)模式的數(shù)據(jù)集,最后通過dal來更新SQL Server數(shù)據(jù)庫。
     //連接SQL Server數(shù)據(jù)庫 畢業(yè)論文 論文網(wǎng)
     string C;
    OleDbConnection OleDbConn=new OleDbConnection(ConnString);
    //建立1個(gè)新的數(shù)據(jù)集
    DataSet ds1 server=new DataSet("studentXML");
    //建立服務(wù)器端數(shù)據(jù)適配器
    OIeDbDataAdapter dal=new OIeDbDataAdapter("SELECT*FROM student",OleDbConn);
    //填充服務(wù)器端數(shù)據(jù)集
    da1。Fi11(ds_ server,“student”);
    //將數(shù)據(jù)集ds_ xml并入到ds_ server集中
    ds1 server。Merge(ds_ xml。Tables[“student”]);
    //更新服務(wù)器端數(shù)據(jù)庫
    dal。Update(ds_ server,“student”);
    至此,基于XML的整個(gè)異構(gòu)數(shù)據(jù)庫之間的信息交換己全部實(shí)現(xiàn),從整個(gè)實(shí)現(xiàn)過程,可知,XML作為1個(gè)數(shù)據(jù)交換的中間件,的確能很好的實(shí)現(xiàn)各個(gè)數(shù)據(jù)庫之間的數(shù)據(jù)轉(zhuǎn)換,從而達(dá)到了數(shù)據(jù)共享和信息交流的目的。
    4。結(jié)束語
    本文較為詳盡的闡述了如何利用XML實(shí)現(xiàn)SQL Server和Oracle之間的數(shù)據(jù)轉(zhuǎn)換,雖然它只是單機(jī)版中的數(shù)據(jù)轉(zhuǎn)換而并不是企業(yè)網(wǎng)絡(luò)信息數(shù)據(jù)的交換,但本文旨在展現(xiàn)它在信息交換上的優(yōu)越性。相信XML在未來的EDI中將發(fā)揮主流作用,成為企業(yè)間信息交換的標(biāo)準(zhǔn),不久的將來各行業(yè)都1定會(huì)出現(xiàn)自己的通用的XML標(biāo)記語言, XML的應(yīng)用也會(huì)越來越廣泛,它最終將取代HTML在網(wǎng)絡(luò)信息革命的主導(dǎo)地位。
    參考文獻(xiàn):
    [1]楊劍,唐慧佳。基于XML的異構(gòu)數(shù)據(jù)交換系統(tǒng)的研究與實(shí)現(xiàn)[J]。計(jì)算機(jī)工程。2005,(19):195-197
    [2]夏秀峰,張悅,周大海。基于XML的異種數(shù)據(jù)庫間的數(shù)據(jù)交換技術(shù)[J]。微處理機(jī)。2005,(5):31-35
    [3]田小霞,肖馳。基于XML 的異構(gòu)數(shù)據(jù)庫的中間件的設(shè)計(jì)與研究[J]。電腦學(xué)習(xí)。2006,(2):55-56
    [4]張于峰,洪治全,張翼。用XML實(shí)現(xiàn)異構(gòu)數(shù)據(jù)庫信息交換[J]。西南科技大學(xué)學(xué)報(bào)。2006,(2):40-43 畢業(yè)論文 論文網(wǎng)

    【基于XML的異構(gòu)數(shù)據(jù)交換的研究】相關(guān)文章:

    基于XML的智能應(yīng)用程序的研究03-07

    基于XML的作業(yè)答疑系統(tǒng)XML+SQL03-30

    基于XML的紡織品工藝信息系統(tǒng)的研究與實(shí)現(xiàn)03-07

    基于SDO的異構(gòu)服務(wù)數(shù)據(jù)模型研究03-28

    基于Web3D的異構(gòu)數(shù)據(jù)存儲(chǔ)及通信研究03-10

    基于XML的三層C/S模型03-20

    基于XML的果園環(huán)境數(shù)據(jù)采集和數(shù)據(jù)表示03-19

    CAN與以太網(wǎng)數(shù)據(jù)交換的研究與分析12-05

    基于XML的三個(gè)常用元數(shù)據(jù)描述工具的評(píng)價(jià)與比較03-07

    基于ASP和XML的校園二手商品網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)SQL03-30

    主站蜘蛛池模板: 无码人妻精品中文字幕免费| 久久国产乱子精品免费女| 国产乱码精品一区二区三区四川人| 亚洲?V无码成人精品区日韩| 四虎影视884a精品国产四虎| 日韩精品国产自在久久现线拍| 亚洲国产精品乱码一区二区 | 久久精品无码午夜福利理论片| 欧美午夜精品久久久久久浪潮| 国产99久久九九精品无码 | 久久精品国产亚洲精品2020| 久久精品亚洲男人的天堂| 98香蕉草草视频在线精品看| 久久99热精品| 久久这里只有精品首页| 国产AV午夜精品一区二区三区| 蜜国产精品jk白丝AV网站| 人妻少妇精品中文字幕av蜜桃| 正在播放国产精品每日更新| 午夜精品久久影院蜜桃| 日韩一区二区精品观看| 欧美激情精品久久久久久久九九九 | 欧美精品综合视频一区二区| 国产亚洲精品免费视频播放| 91亚洲精品自在在线观看| 2021年精品国产福利在线| 在线电影国产精品| 91精品国产91热久久久久福利 | 久久99国产精品二区不卡| 91原创国产精品| 精品国产日产一区二区三区| 亚洲天堂久久精品| MM1313亚洲精品无码| 精品国产香蕉伊思人在线在线亚洲一区二区 | 老司机精品影院91| 午夜精品久久久久久久无码| 最新国产乱人伦偷精品免费网站| 中文字幕精品一区二区三区视频| 亚洲精品天堂成人片?V在线播放| 亚洲欧美日韩国产成人精品影院 | 国产精品熟女一区二区|