基于XML 的異構(gòu)數(shù)據(jù)交換的研究_第1頁
基于XML 的異構(gòu)數(shù)據(jù)交換的研究_第2頁
基于XML 的異構(gòu)數(shù)據(jù)交換的研究_第3頁
基于XML 的異構(gòu)數(shù)據(jù)交換的研究_第4頁
基于XML 的異構(gòu)數(shù)據(jù)交換的研究_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、基于XML 的異構(gòu)數(shù)據(jù)交換的研究                 【摘  要】XML 的可擴(kuò)展性和自描述性以及其它特性為異構(gòu)數(shù)據(jù)交換提供了新的思路?;赬ML 本文提出了1種異構(gòu)數(shù)據(jù)交換的方法,并結(jié)合應(yīng)用實(shí)例給出了它的具體的實(shí)現(xiàn)過程。    【關(guān)鍵詞】異構(gòu)數(shù)據(jù)庫,數(shù)據(jù)交換, XMLSchema,XMLKeywords: Heterogeneous databases, Data exchange, XML Schem

2、a, XML1  前言 畢業(yè)論文 數(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本身

3、的異構(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

4、 的最大優(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,而不必

5、使用特殊的工具。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)行處理?;谀0宓霓D(zhuǎn)換方法的好處在于轉(zhuǎn)換的步驟比較簡(jiǎn)單,只要給出模板,就可以快速地生成相應(yīng)的XML文檔。不足之處在于,基于模

6、板驅(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)的?;谀P偷霓D(zhuǎn)換方法用這個(gè)預(yù)先定義好的數(shù)據(jù)模型來映射XML與關(guān)系數(shù)據(jù)庫數(shù)據(jù)之間的關(guān)系?;谀P偷霓D(zhuǎn)換方法的關(guān)鍵在于設(shè)計(jì)1個(gè)靈活的映射模型,為了更好的支持其逆向映射的特點(diǎn),這個(gè)映射模型必須是易于“

7、讀懂”的、易于操縱的,能夠很好的與達(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ù)器為Micros

8、oft公司的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)系模式

9、為基礎(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)

10、系如下:    表1(學(xué)生基本信息表):  Table studet(      Id        char(10)    not null,/學(xué)號(hào)    name        char(15)    null,/姓名    sex        char(2)      null,/性別 &#

11、160;   class      char(10)    null,/所在班級(jí)    age        Integer      null,/年齡    constraint PK_student primary key(Id)    )表2(班級(jí)情況表):  Table depart(    class        char(1

12、0)    not null,/班級(jí)    boy_num      Integer      null,/男生人數(shù)    girl_num    Integer      null,/女生人數(shù)    monitor      char(15)    null,/班長    teacher      char

13、(15)    null,/班主任constraint PK_depart primary key(class)constraint fk_RCforeign 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)鍵代碼(這里僅列出

14、與表1有關(guān)的代碼,至于其它三個(gè)表,類同):/產(chǎn)生1個(gè)新的數(shù)據(jù)集DataSet ds=new DataSet(“studentXML”);/連接數(shù)據(jù)源OleDbConnection conn=newOleDbConnetion(”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。Fil

15、l(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í)行這些代碼后,

16、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ù)庫之間表的字段名、字段類型、字段長度的不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 Serve

17、r數(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。下

18、面是其主要代碼:    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)化為

19、數(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ù)庫     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ù)器端

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論