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