一種基于xml和中間件的異構(gòu)數(shù)據(jù)庫(kù)集成的方法
【專利摘要】一種基于XML和中間件的異構(gòu)數(shù)據(jù)庫(kù)集成的方法是提出了一種新的基于XML和中間件實(shí)現(xiàn)異構(gòu)數(shù)據(jù)庫(kù)集成的解決方案:建立一個(gè)中央數(shù)據(jù)庫(kù),集成異構(gòu)數(shù)據(jù)庫(kù)中所有需要共享的數(shù)據(jù);采用XML作為數(shù)據(jù)傳輸格式;利用Web應(yīng)用服務(wù)器(BEAWebLogicServer)構(gòu)建異構(gòu)數(shù)據(jù)庫(kù)與中央數(shù)據(jù)庫(kù)之間的通訊骨架,保證通訊的安全、可靠。
【專利說(shuō)明】一種基于XML和中間件的異構(gòu)數(shù)據(jù)庫(kù)集成的方法
【技術(shù)領(lǐng)域】
[0001]一種基于XML和中間件的異構(gòu)數(shù)據(jù)庫(kù)集成的方法主要是涉及計(jì)算機(jī)領(lǐng)域中的數(shù)據(jù)存儲(chǔ)技術(shù)。
【背景技術(shù)】
[0002]異構(gòu)數(shù)據(jù)庫(kù)集成是一個(gè)既與各種數(shù)據(jù)庫(kù)有密切聯(lián)系,又有別于各種數(shù)據(jù)庫(kù)的新的領(lǐng)域。它的研究目標(biāo)是對(duì)物理上分布的多個(gè)不同結(jié)構(gòu)的數(shù)據(jù)庫(kù),在盡可能少地影響本地自治性的基
礎(chǔ)上,構(gòu)造具有用戶所需要的透明性的全局?jǐn)?shù)據(jù)庫(kù),以實(shí)現(xiàn)數(shù)據(jù)的共享和透明訪問(wèn)。
【發(fā)明內(nèi)容】
[0003]通過(guò)國(guó)家專利檢索沒(méi)有發(fā)現(xiàn)關(guān)于此系統(tǒng)方面的申請(qǐng)資料。
[0004]基于XML和中間件的異構(gòu)數(shù)據(jù)庫(kù)集成模型,是將企業(yè)或單位已有的各個(gè)分散的、獨(dú)立的、異構(gòu)系統(tǒng)通過(guò)中間件連接起來(lái),組成一個(gè)有機(jī)的整體,生成一中央數(shù)據(jù)庫(kù)。在它們之間通過(guò)用XML來(lái)作為統(tǒng)一的數(shù)據(jù)格式實(shí)現(xiàn)數(shù)據(jù)的交換和資源的共享。企業(yè)原有的各個(gè)系統(tǒng)之間相互獨(dú)立,接口各異,數(shù)據(jù)格式互不相同。模型將各子系統(tǒng)中的變化數(shù)據(jù)提取出來(lái),把數(shù)據(jù)表中的變化數(shù)據(jù)通過(guò)客戶端程序轉(zhuǎn)換為統(tǒng)一的數(shù)據(jù)格式XML文件,由JMS傳輸?shù)椒?wù)器,再由服務(wù)端程序接收消息,將數(shù)據(jù)集成到中央數(shù)據(jù)庫(kù)中。
[0005](I)子系統(tǒng)數(shù)據(jù)庫(kù)
為企業(yè)現(xiàn)有的、正在應(yīng)用的不同操作系統(tǒng)平臺(tái)下,不同的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),其都保持各自得相對(duì)獨(dú)立性和自治性,如Oracle、SQLServer、MySql、Access等,通過(guò)JDBC訪問(wèn),是我們要集成數(shù)據(jù)的信息來(lái)源。通過(guò)觸發(fā)器隨時(shí)記錄數(shù)據(jù)變化并寫入創(chuàng)建的相應(yīng)表中。
[0006](2)客戶端層
本層次的功能為:通過(guò)JDBC訪問(wèn)子數(shù)據(jù)庫(kù)系統(tǒng),用Java定時(shí)器定時(shí)提取變化的數(shù)據(jù),通過(guò)XML解析工具將各數(shù)據(jù)庫(kù)的更新的數(shù)據(jù)轉(zhuǎn)換為XML文檔,并將XML文檔包裝成適合JMS傳遞的消息,通過(guò)JMS客戶端發(fā)送程序發(fā)送給JMS主題隊(duì)列。
[0007]由于JMS沒(méi)有定義XML消息類型,要通過(guò)JMS傳遞XML消息,目前普遍的做法是將LXM作為一個(gè)TextMessage或?qū)ML序列化為一個(gè)DOM對(duì)象進(jìn)行傳遞。實(shí)驗(yàn)證明,前者的傳遞效率更高,因此本文所提出的模型也是將XML封裝在TextMessage中進(jìn)行傳遞,所以上面所講并將捌L文檔包裝成適合JIIS傳遞的消息實(shí)際上是將XML文檔轉(zhuǎn)換為文本消息TextMessage0定時(shí)器的時(shí)間可以根據(jù)實(shí)際情況設(shè)定。比如:如果為了中央數(shù)據(jù)庫(kù)能及時(shí)得到更新,可以將時(shí)間定為每一分鐘檢查數(shù)據(jù)庫(kù)的更新情況并執(zhí)行以上操作,所以該層次實(shí)現(xiàn)的具體功能可以總結(jié)如下:定時(shí)提取子數(shù)據(jù)庫(kù)系統(tǒng)中變化數(shù)據(jù):用XML解析工具轉(zhuǎn)換為統(tǒng)一格式的XML文檔;將XML文檔轉(zhuǎn)換為文本消息并進(jìn)發(fā)送。
[0008](3)中間件層
該層次主要通過(guò)應(yīng)用服務(wù)器中間件BEA WebLogic中配置的JMS服務(wù)器和消息主題或?qū)α?,?lái)實(shí)現(xiàn)客戶端應(yīng)用程序和中央服務(wù)器端應(yīng)用程序的消息傳遞。該層實(shí)現(xiàn)的具體功能就是屏蔽底層的通信復(fù)雜性,維持建立的消息主題或隊(duì)列,完成]MS服務(wù)器的發(fā)送和接收消息的功能。JMS服務(wù)器是整個(gè)模型的核心,是各個(gè)應(yīng)用系統(tǒng)交換數(shù)據(jù)的媒介,它確保消息通信的異步性、持久性和可靠性。
[0009](4)中央數(shù)據(jù)庫(kù)客戶端
該層次的主要功能為:本客戶端程序運(yùn)行就一直監(jiān)聽(tīng)JMS服務(wù)器的消息隊(duì)列或主題,是否有消息到來(lái)。若沒(méi)有消息就一直監(jiān)聽(tīng),若有消息到來(lái),則進(jìn)行相應(yīng)得處理。因?yàn)槲覀兪峭ㄟ^(guò)文本消息TextMessage來(lái)進(jìn)行通信的,所以接收到文本消息后就進(jìn)行轉(zhuǎn)換為XML文檔,將XMI。文檔依據(jù)中央數(shù)據(jù)庫(kù)與子數(shù)據(jù)庫(kù)之間的數(shù)據(jù)模式映射文件轉(zhuǎn)換為對(duì)應(yīng)于中央數(shù)據(jù)庫(kù)系統(tǒng)的XML文檔,并將該XML文檔寫入中央數(shù)據(jù)庫(kù)中。其具體實(shí)現(xiàn)內(nèi)容可以描述如下:監(jiān)聽(tīng)消息;接收到消息并轉(zhuǎn)換為XML文檔;將得到的XML文檔由映射文件轉(zhuǎn)換為對(duì)應(yīng)于中央數(shù)據(jù)庫(kù)系統(tǒng)數(shù)據(jù)的XML文檔;將轉(zhuǎn)換后的XML文檔通過(guò)解析工具寫入中央數(shù)據(jù)庫(kù)中。
[0010](5)中央數(shù)據(jù)庫(kù)
中央數(shù)據(jù)庫(kù)為需要共享的統(tǒng)一信息平臺(tái),需要共享的信息都存儲(chǔ)在此。其為進(jìn)一步的
數(shù)
據(jù)挖掘、信息共享等提供了統(tǒng)一的基礎(chǔ)。
[0011]模型流程:
(1)子數(shù)據(jù)庫(kù)系統(tǒng)發(fā)生變化,創(chuàng)建的觸發(fā)器,把變化的數(shù)據(jù)記錄在相應(yīng)的表中;
(2)客戶端程序定時(shí)時(shí)間到,讀取記錄數(shù)據(jù)變化的表,有數(shù)據(jù)存在,則提取變化數(shù)據(jù),將其轉(zhuǎn)換為XML文檔;
(3)將XML文檔轉(zhuǎn)換為TextMessage,發(fā)送到]MS服務(wù)器的主題或隊(duì)列中;
(4)監(jiān)聽(tīng)該主題或隊(duì)列的服務(wù)器端接收到該消息,通過(guò)相應(yīng)轉(zhuǎn)換工具將接收到的TextMessage消息解析成XML文檔或DOM對(duì)象;
(5)將得到的XML文檔由映射文件轉(zhuǎn)換為對(duì)應(yīng)于中央數(shù)據(jù)庫(kù)系統(tǒng)數(shù)據(jù)的XML文檔;
(6)解析XML文件,利用XML文件數(shù)據(jù)信息更新中央共享數(shù)據(jù)庫(kù),最終實(shí)現(xiàn)異構(gòu)數(shù)據(jù)庫(kù)集成共享和同步刷新。
[0012]實(shí)現(xiàn)模型中數(shù)據(jù)格式相互轉(zhuǎn)換:
異構(gòu)數(shù)據(jù)庫(kù)管理系統(tǒng)之間的數(shù)據(jù)不能直接交互,為了解決這一問(wèn)題,我們采用XML作為表示數(shù)據(jù)和傳輸數(shù)據(jù)的數(shù)據(jù)格式,屏蔽異構(gòu)性,容易實(shí)現(xiàn)跨平臺(tái)集成:雖然采用了 XML的格式,但是數(shù)據(jù)庫(kù)中的變化數(shù)據(jù)如何轉(zhuǎn)換為XML格式,就成為模型實(shí)現(xiàn)的重點(diǎn)。由于JMS沒(méi)有定義XML消息類型,要通過(guò)JMS傳遞XML消息,通常用TextMessage來(lái)傳遞,所以XML格式與文本消息格式的轉(zhuǎn)換也至關(guān)重要。同時(shí),各分布的異構(gòu)數(shù)據(jù)庫(kù)之間與中央共享數(shù)據(jù)庫(kù)之間,肯定存在數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)類型的不一致性,如何完成數(shù)據(jù)結(jié)構(gòu)合數(shù)據(jù)類型的轉(zhuǎn)換,也成為模型實(shí)現(xiàn)的關(guān)鍵??傊?,如何實(shí)現(xiàn)模型中相關(guān)的一系列的數(shù)據(jù)格式的相關(guān)轉(zhuǎn)換成為本模型實(shí)現(xiàn)的難點(diǎn)。
[0013]本次采用Jdom技術(shù)完成數(shù)據(jù)表與XML格式之間的格式轉(zhuǎn)換,通過(guò)利用xmloutputterl311類的outputString方法把dom樹文檔,變?yōu)槲谋鞠ⅰ?br>
[0014]中央數(shù)據(jù)庫(kù)與各個(gè)子數(shù)據(jù)庫(kù)之間同步:
實(shí)現(xiàn)異構(gòu)數(shù)據(jù)庫(kù)集成,就是在保持各個(gè)子數(shù)據(jù)庫(kù)系統(tǒng)相對(duì)獨(dú)立性和自治性的叢礎(chǔ)上,嬰把需要共享的數(shù)據(jù)傳輸?shù)街醒霐?shù)據(jù)庫(kù),所以如何實(shí)現(xiàn)中央數(shù)據(jù)庫(kù)與各個(gè)子數(shù)據(jù)庫(kù)之間同步至關(guān)重要。簡(jiǎn)單的說(shuō),就是當(dāng)中央數(shù)據(jù)庫(kù)建立之后,分布的子數(shù)據(jù)庫(kù)中數(shù)據(jù)發(fā)生變化后,中央數(shù)據(jù)庫(kù)的相應(yīng)數(shù)據(jù)應(yīng)當(dāng)隨之而改變。
[0015]要實(shí)現(xiàn)這一點(diǎn),通常可以采用兩種方式:一、是全部更新,當(dāng)同步周期(在模型實(shí)現(xiàn)中我們使用的是定時(shí)器)到來(lái)時(shí),我們將子數(shù)據(jù)庫(kù)數(shù)據(jù)信息全部發(fā)送到中央數(shù)據(jù)庫(kù)端,根據(jù)其更新中央數(shù)據(jù)庫(kù),以實(shí)現(xiàn)同步;因?yàn)樵缙诘臄?shù)據(jù)庫(kù)多采用Access,而Access又不存在儲(chǔ)發(fā)器,所以在集成早期的數(shù)據(jù)庫(kù)的時(shí)候,我們采用定時(shí)全部更新。當(dāng)定時(shí)時(shí)間到來(lái)時(shí),我們把原來(lái)得數(shù)據(jù)庫(kù)中的所有數(shù)據(jù)全部更新到中央數(shù)據(jù)庫(kù)。二、是我們僅僅將發(fā)生了改變的增量數(shù)據(jù)發(fā)送到中央數(shù)據(jù)庫(kù)以實(shí)現(xiàn)同步。顯然,第二種方式對(duì)網(wǎng)絡(luò)帶寬和服務(wù)器的壓力較小,性能遠(yuǎn)遠(yuǎn)優(yōu)于第一種方式。所以在后面的模型實(shí)現(xiàn)中我們采用的第二種方式來(lái)實(shí)現(xiàn)中央數(shù)據(jù)庫(kù)與各個(gè)子數(shù)據(jù)庫(kù)之間同步。利用數(shù)據(jù)庫(kù)觸發(fā)器記錄數(shù)據(jù)庫(kù)的增量信息。然后完成贈(zèng)量信息的傳輸和數(shù)據(jù)轉(zhuǎn)換等工作,實(shí)現(xiàn)中央數(shù)據(jù)庫(kù)與各個(gè)子數(shù)據(jù)庫(kù)之間同步。對(duì)于象Oracle、SQLServer、Mysql (Mysql 5.0也提供了觸發(fā)器功能)等數(shù)據(jù)庫(kù)其本身具有較強(qiáng)的功能,能提供觸發(fā)器功能,我們就采用第二種增量數(shù)據(jù)的更新。
[0016]實(shí)現(xiàn)數(shù)據(jù)安全的異步傳輸:
Java消息服務(wù)(JMS)規(guī)范為消息傳遞系統(tǒng)的訪問(wèn)定義了一組標(biāo)準(zhǔn)的接口。WebLogicServer提供了一種完全支持JMS API的企業(yè)級(jí)消息傳遞系統(tǒng)。本課題就是利用BEAffebLogic中的JMS功能來(lái)實(shí)現(xiàn)消息的安全異步傳輸?shù)?。在JMS兩種不同的消息傳遞模型點(diǎn)對(duì)點(diǎn)和發(fā)布訂閱模型中,JMS通過(guò)維持消息隊(duì)列或主題來(lái)保證消息傳遞的安全可靠傳輸。
[0017]特點(diǎn):
(I)跨、If臺(tái):XML是跨平臺(tái)數(shù)據(jù)表示和交換的標(biāo)準(zhǔn)JMS基于Java語(yǔ)言,因而也是平臺(tái)無(wú)關(guān)的。JMS雨I XML—起共同實(shí)現(xiàn)了平臺(tái)無(wú)關(guān)的行為和平臺(tái)無(wú)關(guān)的數(shù)據(jù)。
[0018](2)松耦合:各應(yīng)用系統(tǒng)對(duì)外提供一個(gè)基于XML數(shù)據(jù)格式的接口即可實(shí)現(xiàn)系統(tǒng)間的無(wú)縫
集成。
[0019](3)異步性:請(qǐng)求數(shù)據(jù)的應(yīng)用系統(tǒng)與發(fā)送數(shù)據(jù)的應(yīng)用系統(tǒng)不需要同時(shí)連接。
[0020](4)可靠性JMS的異步消息機(jī)制保證了應(yīng)用系統(tǒng)間數(shù)據(jù)傳輸?shù)目煽啃浴?br>
[0021](5)易擴(kuò)展:由于系統(tǒng)之間使用的都是標(biāo)準(zhǔn)接口,所以可以比較容易地增加和減少參與集成的子系統(tǒng)。
【權(quán)利要求】
1.一種基于XML和中間件的異構(gòu)數(shù)據(jù)庫(kù)集成的方法其特征是將子數(shù)據(jù)庫(kù)系統(tǒng)發(fā)生變化,創(chuàng)建的觸發(fā)器,把變化的數(shù)據(jù)記錄在相應(yīng)的表中。
2.客戶端程序定時(shí)時(shí)間到,讀取記錄數(shù)據(jù)變化的表,有數(shù)據(jù)存在,則提取變化數(shù)據(jù),將其轉(zhuǎn)換為XML文檔。
3.將XML文檔轉(zhuǎn)換為TextMessage,發(fā)送到]MS服務(wù)器的主題或隊(duì)列中。
4.監(jiān)聽(tīng)該主題或隊(duì)列的服務(wù)器端接收到該消息,通過(guò)相應(yīng)轉(zhuǎn)換工具將接收到的TextMessage消息解析成X札文檔或DOM對(duì)象。
5.將得到的XML文檔由映射文件轉(zhuǎn)換為對(duì)應(yīng)于中央數(shù)據(jù)庫(kù)系統(tǒng)數(shù)據(jù)的XML文檔。
6.解析XML文件,利用XML文件數(shù)據(jù)信息更新中央共享數(shù)據(jù)庫(kù),最終實(shí)現(xiàn)異構(gòu)數(shù)據(jù)庫(kù)集成共享和同步刷新。
【文檔編號(hào)】G06F17/30GK103809946SQ201210446237
【公開(kāi)日】2014年5月21日 申請(qǐng)日期:2012年11月9日 優(yōu)先權(quán)日:2012年11月9日
【發(fā)明者】袁帥 申請(qǐng)人:鎮(zhèn)江華揚(yáng)信息科技有限公司