王智軍
(赤峰學(xué)院 計算機(jī)科學(xué)與技術(shù)系,內(nèi)蒙古 赤峰 024000)
基于XML的異構(gòu)數(shù)據(jù)集成研究
王智軍
(赤峰學(xué)院 計算機(jī)科學(xué)與技術(shù)系,內(nèi)蒙古 赤峰 024000)
在企事業(yè)單位內(nèi)部,由于部門間相對獨(dú)立,構(gòu)建系統(tǒng)時缺乏統(tǒng)一的規(guī)劃和標(biāo)準(zhǔn),所以造成了現(xiàn)有的應(yīng)用系統(tǒng)是分散、異構(gòu)、封閉的系統(tǒng),相互之間不能共享信息,形成了一個個“信息孤島”.本文首先對數(shù)據(jù)集成涉及的相關(guān)技術(shù)進(jìn)行了研究.分析了目前流行的數(shù)據(jù)集成方法.按照不同的實(shí)現(xiàn)技術(shù),將數(shù)據(jù)集成方法分為三類,即數(shù)據(jù)轉(zhuǎn)換方法、數(shù)據(jù)聚合方法以及析取、轉(zhuǎn)換和裝載(Extract、Transform and Load,ETL)方法.然后,借鑒數(shù)據(jù)轉(zhuǎn)換方法以及ETL方法的數(shù)據(jù)集成實(shí)現(xiàn)思想,結(jié)合目前中小企業(yè)數(shù)據(jù)集成的需求,提出基于Java和XML技術(shù)實(shí)現(xiàn)異構(gòu)數(shù)據(jù)交換集成的通用解決方案.
數(shù)據(jù)集成;數(shù)據(jù)抽?。籈TL;XML;Java
隨著計算機(jī)技術(shù),特別是Internet技術(shù)的迅猛發(fā)展,許多行業(yè)、單位或機(jī)構(gòu)、部門內(nèi)部都逐步實(shí)現(xiàn)了業(yè)務(wù)、信息的計算機(jī)化管理.在企業(yè)實(shí)施信息化進(jìn)程中,由于企業(yè)內(nèi)各部門的業(yè)務(wù)和功能歸屬不同,以及各企業(yè)信息化水平存在差異等原因,造成企業(yè)擁有許多相互隔離的、由不同核心技術(shù)構(gòu)建的信息服務(wù)和管理系統(tǒng).系統(tǒng)中數(shù)據(jù)的表示不同,數(shù)據(jù)交流效果極差,形成“信息孤島”,從而使得企業(yè)內(nèi)以及企業(yè)間的協(xié)作效率與效果很不理想.
企業(yè)應(yīng)用集成EAI(EnterpriseApplicationIntegration)是解決這一問題的方法之一.
目前,企業(yè)數(shù)據(jù)集成有許多成型產(chǎn)品,按照不同的實(shí)現(xiàn)技術(shù),集成方法可以分為三類:數(shù)據(jù)轉(zhuǎn)換方法、數(shù)據(jù)倉庫法和虛擬法.
目前,由于Xml良好的可靠性與互操作性,確保了網(wǎng)絡(luò)中信息的傳輸與交互,加上Xml是基于WEB工作設(shè)計的,更適合于網(wǎng)絡(luò)化環(huán)境,因此在電子商務(wù)時代B2B的商業(yè)模式得到廣泛應(yīng)用.Xml的可擴(kuò)展性和自描述性更讓其在數(shù)據(jù)描述和信息共享方面有著天然的優(yōu)勢.其標(biāo)記可根據(jù)需求由企業(yè)自由定制,有極大的靈活性,可形成針對行業(yè)特點(diǎn)的不同標(biāo)記集.Xml Schema支持許多復(fù)雜的數(shù)據(jù)類型,引入原型和命名空間概念,可隨意擴(kuò)充等,使得其不但編寫簡單,而且內(nèi)容充實(shí)完整,可以給出Xml文檔詳細(xì)明確的定義.由S c h e m a定義約束的Xml文檔,有效性更加嚴(yán)格,內(nèi)容結(jié)構(gòu)更加嚴(yán)謹(jǐn).總之,Xml的結(jié)構(gòu)性、可擴(kuò)展性、自描述性、簡單性等多種特性,使之表示數(shù)據(jù)的方式真正做到了獨(dú)立于應(yīng)用系統(tǒng),不受任何特殊的軟件或者硬件平臺限制,并且這些數(shù)據(jù)能重復(fù)使用,簡單易懂,成為交換各種結(jié)構(gòu)化、半結(jié)構(gòu)化、非結(jié)構(gòu)化信息的良好方式.
此外,Xml本身突出表現(xiàn)數(shù)據(jù)結(jié)構(gòu)和語義的特點(diǎn),使其自然地與數(shù)據(jù)庫結(jié)合在一起。一旦將Xml數(shù)據(jù)文件與數(shù)據(jù)庫表關(guān)系關(guān)聯(lián)起來,不但可以保留關(guān)系數(shù)據(jù)庫表的結(jié)構(gòu)信息,還可以利用Xml文檔的優(yōu)勢在網(wǎng)絡(luò)及數(shù)據(jù)庫間交換數(shù)據(jù),并解決不同數(shù)據(jù)庫系統(tǒng)及數(shù)據(jù)關(guān)系、語義定義等數(shù)據(jù)表達(dá)方面的差異,如對應(yīng)關(guān)系中字段內(nèi)容不同、字段命名不同、數(shù)據(jù)類型不同等。這將較好地解決企業(yè)應(yīng)用系統(tǒng)間信息資源集成的分布和異構(gòu)等問題,使得數(shù)據(jù)交換的手段更為透明,并為EAI的發(fā)展提供了有效手段。
按照不同的實(shí)現(xiàn)技術(shù),集成方法可以分為三類.第一類是數(shù)據(jù)轉(zhuǎn)換方法,這種方法實(shí)現(xiàn)的是企業(yè)數(shù)據(jù)的松散集成,通過轉(zhuǎn)換工具實(shí)現(xiàn)應(yīng)用系統(tǒng)之間的數(shù)據(jù)轉(zhuǎn)換和交換,從而達(dá)到集成的目的,是一種較低層次的集成;第二類為數(shù)據(jù)聚合方法,在各種異構(gòu)數(shù)據(jù)源的基礎(chǔ)上,借助于中間件系統(tǒng)構(gòu)造一個虛擬的全局?jǐn)?shù)據(jù)模式,是一種集中式管理、分布式存儲的較高層次的集成模式;第三類是析取、轉(zhuǎn)換和裝載(Extract、Transform and Load , ETL)方法,通過對異構(gòu)數(shù)據(jù)源中的數(shù)據(jù)進(jìn)行分析、轉(zhuǎn)換和裝載,建立一個數(shù)據(jù)倉庫,是一種面向企業(yè)決策的數(shù)據(jù)集成方法.
1.1 數(shù)據(jù)轉(zhuǎn)換方法
集成轉(zhuǎn)換工具是脫離具體的DBMS和應(yīng)用系統(tǒng),通用性很強(qiáng)的獨(dú)立軟件,可以在任意兩個常見的數(shù)據(jù)源之間進(jìn)行數(shù)據(jù)轉(zhuǎn)換.目前成熟的集成數(shù)據(jù)轉(zhuǎn)換工具比較多,一般都采用向?qū)?qū)動方式和GUI圖形用戶界面,可以進(jìn)行Fox Pro、Acc ESS等桌面數(shù)據(jù)庫與Oracle,SQL Server等大型數(shù)據(jù)庫之間的數(shù)據(jù)存儲、轉(zhuǎn)換和調(diào)用.一般來說,這類工具都允許把一個數(shù)據(jù)庫中的數(shù)據(jù)(一個或多個表中的部分或全部行)轉(zhuǎn)入至另一個數(shù)據(jù)庫的一個表中(這個表可以存在或不存在).其系統(tǒng)原型圖如圖1所示:
圖1 數(shù)據(jù)轉(zhuǎn)換系統(tǒng)原型圖
1.2 數(shù)據(jù)聚合方法
數(shù)據(jù)聚合方法是將多個數(shù)據(jù)庫集成為一個統(tǒng)一的數(shù)據(jù)庫視圖的方法.可以認(rèn)為,數(shù)據(jù)聚合工具產(chǎn)生的數(shù)據(jù)聚合體是一種虛擬的企業(yè)數(shù)據(jù)庫,它包括了多個實(shí)體的物理數(shù)據(jù)庫.數(shù)據(jù)聚合方法利用中間件集成異構(gòu)數(shù)據(jù)源,該方法并不需改變原始數(shù)據(jù)的存儲和管理方式.其系統(tǒng)原型圖圖2所示:
圖2 數(shù)據(jù)聚合系統(tǒng)原型圖
1.3 ETL方法
ETL(extrac,transform and load)代表抽取、轉(zhuǎn)換和裝載過程.通過該過程,我們可以從多個數(shù)據(jù)源取得數(shù)據(jù),將取出的數(shù)據(jù)進(jìn)行轉(zhuǎn)換及清洗,最后裝載到另一個數(shù)據(jù)庫,數(shù)據(jù)中心或者數(shù)據(jù)倉庫,從而實(shí)現(xiàn)系統(tǒng)間數(shù)據(jù)集成,如圖3所示.
圖3 ETL系統(tǒng)原型圖
該方法是一種實(shí)現(xiàn)異構(gòu)數(shù)據(jù)源的集中式管理、集中式存儲的方法.ETL工具從多個數(shù)據(jù)源中抽取數(shù)據(jù),然后進(jìn)行數(shù)據(jù)轉(zhuǎn)換和加載,最終得到統(tǒng)一的、完備的數(shù)據(jù)倉庫.原來分散的應(yīng)用系統(tǒng)仍然獨(dú)立運(yùn)作,原來存在的異構(gòu)數(shù)據(jù)源仍然為各自的應(yīng)用系統(tǒng)提供數(shù)據(jù)服務(wù).
為了實(shí)現(xiàn)不同應(yīng)用系統(tǒng)中異構(gòu)數(shù)據(jù)的交換集成,必須提供一種統(tǒng)一的數(shù)據(jù)轉(zhuǎn)換模式.在進(jìn)行數(shù)據(jù)提取時,以便將異構(gòu)信息轉(zhuǎn)換成統(tǒng)一的標(biāo)準(zhǔn)結(jié)構(gòu)樣式.然后在數(shù)據(jù)共享加載時再將標(biāo)準(zhǔn)化的信息轉(zhuǎn)換成本地數(shù)據(jù)格式進(jìn)行加載,進(jìn)而完成異構(gòu)信息的共享集成.
建立各Xml Schema模式與不同數(shù)據(jù)源信息間的映射關(guān)系,作為一個數(shù)據(jù)結(jié)構(gòu)間的對應(yīng)關(guān)系,我們稱之為數(shù)據(jù)轉(zhuǎn)換模式定義,它給出了應(yīng)用系統(tǒng)數(shù)據(jù)到標(biāo)準(zhǔn)結(jié)構(gòu)Xml數(shù)據(jù)文件的轉(zhuǎn)換規(guī)則,如圖4所示.
圖4 數(shù)據(jù)抽取轉(zhuǎn)換集成原型
其中,中間的Xml數(shù)據(jù)文件可以建立專用的管理平臺來管理,也可以僅僅實(shí)現(xiàn)Xml文檔的直接流轉(zhuǎn).
網(wǎng)絡(luò)環(huán)境應(yīng)用中,以企業(yè)的數(shù)據(jù)交換區(qū)為核心,建立信息交換集成平臺,作為數(shù)據(jù)傳輸通道.其中所有企業(yè)應(yīng)用系統(tǒng)間需交流的信息以Xml數(shù)據(jù)文件的形式存儲在數(shù)據(jù)交換區(qū),可通過瀏覽器瀏覽,并提供上傳與下載操作,進(jìn)而實(shí)現(xiàn)不同應(yīng)用系統(tǒng)間信息的發(fā)布、獲取、協(xié)商及交換等功能,如圖5所示.該平臺上還包括用Xml Schema描述的各類交換數(shù)據(jù)的結(jié)構(gòu),一個交換數(shù)據(jù)項(xiàng)對應(yīng)一個Schema,供所有應(yīng)用下載,保證Xml數(shù)據(jù)文件所描述的數(shù)據(jù)擁有語義上的獨(dú)立性和穩(wěn)定性,并幫助操作者讀懂Xml文檔,即利用Xml Schema為異構(gòu)數(shù)據(jù)源提供一種統(tǒng)一的數(shù)據(jù)轉(zhuǎn)換結(jié)構(gòu)的描述與約束.各企業(yè)或各企業(yè)應(yīng)用系統(tǒng)間,就是通過該信息交換集成平臺,將可通過數(shù)據(jù)抽取轉(zhuǎn)換器生成標(biāo)準(zhǔn)結(jié)構(gòu)X ml數(shù)據(jù)文件的各異構(gòu)數(shù)據(jù)源聯(lián)系起來,并實(shí)現(xiàn)數(shù)據(jù)的集成和共享.
圖5 應(yīng)用實(shí)現(xiàn)框架
該集成方案的優(yōu)點(diǎn)是簡單易行,共同部分可以只是一些Xml文檔,對于這些文檔的管理只需存儲提取就可以了,各系統(tǒng)仍然按照原來的方式運(yùn)行,包括數(shù)據(jù)的存儲提取,只是在需要進(jìn)行信息交流時通過中間件技術(shù)把本地數(shù)據(jù)庫數(shù)據(jù)轉(zhuǎn)換成X ml數(shù)據(jù)文件或者進(jìn)行相反的轉(zhuǎn)換即可.
在系統(tǒng)整合過程中,程序設(shè)計語言可以采用跨平臺性強(qiáng)的Java語言.Java語言作為一種網(wǎng)絡(luò)編程語言,最大限度的利用了網(wǎng)絡(luò)資源,并且可以跨平臺、跨網(wǎng)絡(luò)運(yùn)行,其代碼可重用和可擴(kuò)展;通過多線程運(yùn)行機(jī)制來支持多任務(wù)和并行處理.利用Java語言的優(yōu)勢,使系統(tǒng)的新增部分能夠不受系統(tǒng)平臺的限制,最大限度的消除“信息孤島”,從而提高信息資源的利用率,讓原有系統(tǒng)發(fā)揮全新的更大的應(yīng)用價值.
集成交換系統(tǒng)分兩部分來實(shí)現(xiàn),一部分為MIS數(shù)據(jù)抽取端(服務(wù)端),主要用來實(shí)現(xiàn)數(shù)據(jù)的抽取,運(yùn)行在MIS側(cè);另一部分為決策支持系統(tǒng)數(shù)據(jù)加載端(客戶端),主要用來實(shí)現(xiàn)抽取所得數(shù)據(jù)的加載,運(yùn)行在決策支持系統(tǒng)側(cè).HTTP是防火墻的友好協(xié)議,能夠透過防火墻,所以集成交換系統(tǒng)兩端以HTTP進(jìn)行Xml數(shù)據(jù)文件的傳輸.
系統(tǒng)兩端各分三層來實(shí)現(xiàn),分別為數(shù)據(jù)源連接層、抽取轉(zhuǎn)換層/轉(zhuǎn)換加載層以及通信層.系統(tǒng)以Xml為公共數(shù)據(jù)的描述規(guī)范,涵蓋了從數(shù)據(jù)抽取/加載、轉(zhuǎn)換到通信的數(shù)據(jù)交換全過程.各層彼此聯(lián)系,又相互獨(dú)立,便于擴(kuò)展、維護(hù)和升級.系統(tǒng)框架結(jié)構(gòu)如圖6所示.各層具體功能如下:
圖6 系統(tǒng)框架結(jié)構(gòu)圖
5.1 數(shù)據(jù)源連接層
對于交換系統(tǒng)中使用的大量數(shù)據(jù)庫,可以抽象成數(shù)據(jù)源的概念.數(shù)據(jù)源連接層主要完成異構(gòu)數(shù)據(jù)源的封裝和連接的權(quán)限驗(yàn)證.我們服務(wù)端利用JDBC或ODBC數(shù)據(jù)庫訪問接口實(shí)現(xiàn).客戶端運(yùn)行在應(yīng)用服務(wù)器環(huán)境中,通過連接池來實(shí)現(xiàn)數(shù)據(jù)源連接,通過JNDI來獲取數(shù)據(jù)源.
5.2 抽取轉(zhuǎn)換層/轉(zhuǎn)換加載層
抽取轉(zhuǎn)換層主要完成從異構(gòu)數(shù)據(jù)源抽取數(shù)據(jù)(各企業(yè)MIS系統(tǒng)數(shù)據(jù)源異構(gòu)),并將抽取得到的數(shù)據(jù)轉(zhuǎn)換成標(biāo)準(zhǔn)的Xml文件.轉(zhuǎn)換加載層負(fù)責(zé)將獲取到的標(biāo)準(zhǔn)Xml文件進(jìn)行解析,將數(shù)據(jù)轉(zhuǎn)換成本地數(shù)據(jù)源數(shù)據(jù)格式并加載到?jīng)Q策支持系統(tǒng)數(shù)據(jù)庫.
5.3 通信層
通信層完成Xml文件的傳輸.通信層應(yīng)保證數(shù)據(jù)傳輸?shù)挠行?、可靠和安?
為了比較徹底高效地解決“信息孤島”問題,將來我們可以嘗試采用Xml數(shù)據(jù)庫的解決方案.Xml作為統(tǒng)一的數(shù)據(jù)表示格式,能夠幫助用戶從分散的系統(tǒng)和應(yīng)用中取出有效的信息整合成標(biāo)準(zhǔn)的Xml信息,然后提供給各種應(yīng)用方便的訪問.Xml數(shù)據(jù)庫提供了一個高效的、可擴(kuò)展的、靈活的Xml信息操作平臺,而且能夠方便地與其它系統(tǒng)和平臺進(jìn)行數(shù)據(jù)集成和共享,并且能夠讓信息真正在各個系統(tǒng)中順暢流通,從而獲得最大的商業(yè)價值.
〔1〕王寧.一種基于CORBA的異構(gòu)數(shù)據(jù)源集成系統(tǒng)的設(shè)計[J],軟件學(xué)報,1998(6):45-51.
〔2〕XML技術(shù)內(nèi)幕[M].機(jī)械工業(yè)出版社,2002.289-321.
〔3〕彭晨陽.Java實(shí)用系統(tǒng)開發(fā)指南 [M].機(jī)械工業(yè)出版社,2005.336-482.
〔4〕梁利姣,吳國平.一種基于XML的異構(gòu)數(shù)據(jù)源集成方案[J].現(xiàn)代計算機(jī),224-232.
TP311
A
1673-260X(2010)03-0019-03