摘要:文章分析JMS和XML兩種技術(shù)在實(shí)現(xiàn)異構(gòu)數(shù)據(jù)庫之間數(shù)據(jù)通信方面的優(yōu)勢(shì);然后提出異構(gòu)數(shù)據(jù)庫集成的目標(biāo)和主要問題,通過對(duì)數(shù)據(jù)庫集成方案、數(shù)據(jù)的傳輸方式和傳輸格式、異構(gòu)數(shù)據(jù)庫訪問等問題的分析,提出一種基于JMS和XML的異構(gòu)數(shù)據(jù)庫集成模型。
關(guān)鍵詞:異構(gòu)數(shù)據(jù)庫集成;JMS;XML;OpenJMS
中圖分類號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2008)31-0789-03
The Research of JMS and XML based Heterogeneous Database Integration
ZHAO Xiao-jun
(Economics and Management School, Zhengzhou Institute of Light Industry, Zhengzhou 450052, China)
Abstract: The thesis introduces JMS and XML, and analyses the advantage in realizing of two kinds of technology that constructs the data communication betweenheterogeneous databases,then it puts forward the goal and subject matter of integration of heterogeneous database,and proposes a integrated model of heterogeneous database based on JMS and XML by the analysis of database integrated scheme、means and form of transmitting data、accessing heterogeneous database.
Key words: integration of heterogeneous database; JMS; XML; OpenJMS
在計(jì)算機(jī)科技日新月異的今天,人們對(duì)信息的需求越來越廣泛,人們迫切需要從多方面獲得數(shù)據(jù)。而數(shù)據(jù)庫管理系統(tǒng)的多元化,使得人們面對(duì)的往往是不同的數(shù)據(jù)庫管理系統(tǒng),乃至于不同的操作系統(tǒng)等,應(yīng)用程序之間難以實(shí)現(xiàn)相互的協(xié)同。在許多企業(yè)和政府部門,由于信息系統(tǒng)開發(fā)的階段性,存在著許多完全獨(dú)立的異構(gòu)數(shù)據(jù)庫應(yīng)用系統(tǒng),它們因?yàn)楠?dú)立開發(fā)而形成了一個(gè)個(gè)信息孤島。這些企業(yè)/政府部門迫切需要集成這些獨(dú)立的應(yīng)用系統(tǒng)和數(shù)據(jù)庫以實(shí)現(xiàn)信息共享。這就使得結(jié)構(gòu)不同的數(shù)據(jù)庫即異構(gòu)數(shù)據(jù)庫的集成成為數(shù)據(jù)庫應(yīng)用技術(shù)的一個(gè)重要研究課題。
JMS具有Java語言特有的平臺(tái)無關(guān)性,它采用同步/異步機(jī)制處理分布式應(yīng)用,能夠非常容易地實(shí)現(xiàn)企業(yè)系統(tǒng)之間的松散耦合,并且能夠通過消息服務(wù)提供商實(shí)現(xiàn)可靠和健壯的消息傳遞,滿足了分布式環(huán)境下異構(gòu)平臺(tái)的交互行為的需要。XML以與平臺(tái)、語言和協(xié)議無關(guān)的格式描述和交換數(shù)據(jù),其自描述性使其非常適用于不同應(yīng)用間的數(shù)據(jù)交換,逐步成為數(shù)據(jù)表示和信息交換的工業(yè)標(biāo)準(zhǔn),提供了異構(gòu)數(shù)據(jù)庫之間進(jìn)行數(shù)據(jù)交換的一條有效的途徑。
本文結(jié)合湖北交通科技計(jì)劃項(xiàng)目《湖北港航電子政務(wù)系統(tǒng)》展開對(duì)異構(gòu)數(shù)據(jù)庫集成方法的研究,提出了一種基于JMS和XML的異構(gòu)數(shù)據(jù)庫集成模型。
1 JMS技術(shù)
異構(gòu)數(shù)據(jù)庫集成的一個(gè)難點(diǎn)就是如何解決不同平臺(tái)不同數(shù)據(jù)庫數(shù)據(jù)傳輸?shù)膯栴},JMS具有Java語言特有的平臺(tái)無關(guān)性,它能夠滿足分布式環(huán)境下異構(gòu)平臺(tái)的交互行為的需要,是最好的選擇。
JMS是JAVA消息服務(wù)的縮寫,它是一種接口規(guī)范;它的體系結(jié)構(gòu)由供給者、客戶和消息組成。
1.1 JMS消息模型
JMS消息由三部分組成:消息頭,消息屬性和消息主體。對(duì)于消息主體,JMS規(guī)范定義了5種消息類型:ByteMessage, 字節(jié)流消息;MapMessage, 映射集消息;TextMessage, 文本消息;StreamMessage, Java原類型流消息;ObjectMessageJava對(duì)象消息。
JMS可以實(shí)現(xiàn)消息的同步和異步接收。
1.2 JMS兩種消息傳輸模式:點(diǎn)對(duì)點(diǎn),訂閱/發(fā)布
點(diǎn)對(duì)點(diǎn)提供傳統(tǒng)的排隊(duì)機(jī)制。此模式中,客戶端應(yīng)用通過一個(gè)隊(duì)列發(fā)送消息到一個(gè)順序獲得消息的接收客戶端。一個(gè)JMS消息隊(duì)列是表示消息發(fā)送者目標(biāo)及消息接收者數(shù)據(jù)源的管理對(duì)象。
發(fā)布/訂閱是一種一對(duì)多的發(fā)布模式。此模式中,客戶端應(yīng)用向主題發(fā)布消息,主題則被其他對(duì)此主題感興趣的客戶所訂閱。所有訂閱客戶將收到每一份消息(遵從一定的服務(wù)質(zhì)量、連接和選擇)。
JMS規(guī)范允許客戶端應(yīng)用使用兩種模式的混合。
1.3 JMS工具
1) 管理對(duì)象:是一種由JMS管理員使用客戶端創(chuàng)建的包含JMS配置信息的對(duì)象,并被用于實(shí)際應(yīng)用中管理JMS應(yīng)用。管理對(duì)象中包含JMS客戶所需要的相關(guān)信息,包括連接到JMS提供者以及本地地址等參數(shù)。
目的地對(duì)象:是JMS客戶發(fā)送和接收的消息的目標(biāo)對(duì)象。
連接工廠:是JMS客戶用來創(chuàng)建一個(gè)到JMS提供者之間的連接的管理對(duì)象。
2) 連接: 封裝了與JMS提供者的一個(gè)虛擬的連接
3) 會(huì)話:是產(chǎn)生和銷毀消息中的單線程上下文。
4) 消息消費(fèi)者:是由會(huì)話創(chuàng)建的對(duì)象,用于接收發(fā)送到目的地的消息
5) 消息生產(chǎn)者:由會(huì)話對(duì)象創(chuàng)建,用于發(fā)送消息。
1.4 JMS接口
JMS標(biāo)準(zhǔn)接口與上面的幾種工具一一對(duì)應(yīng),而且,每一種消息傳輸模式—一點(diǎn)對(duì)點(diǎn)和發(fā)布/訂閱—一依據(jù)標(biāo)準(zhǔn)接口都定義了一套子接口。
1.5 JMS應(yīng)用開發(fā)
廣義上講,JMS應(yīng)用程序就是一個(gè)或多個(gè)進(jìn)行消息交換的JMS客戶端。開發(fā)JMS客戶端通常有如下步驟:
1) 通過JNDI查找ConnectionFactory對(duì)象;
2) 通過JNDI查找一個(gè)或多個(gè)Destination對(duì)象;
3) ConnectionFactory根據(jù)需要派送的消息來創(chuàng)建一個(gè)JMS Connection對(duì)象;
4) 使用 JMS Connection對(duì)象來創(chuàng)建一個(gè)或多個(gè) JMS Session對(duì)象;
5) 使用 JMS Connection對(duì)象和 Destination對(duì)象來創(chuàng)建所必須的Message Producer對(duì)象和MessageConsumer對(duì)象;
6) 如果需要發(fā)送消息,則通過消息生產(chǎn)者創(chuàng)建一條或多條消息
7) 告訴 JMS Connection對(duì)象可以開始發(fā)送消息。
1.6 JMS提供的消息傳輸可靠性機(jī)制
JMS通過以下四種設(shè)置來保證消息傳輸?shù)目煽啃裕?/p>
1) 事務(wù)性會(huì)話可以確保消息的發(fā)送和接收操作的正確執(zhí)行;
2) 持久性消息傳輸方式可以保證消息在既便是出現(xiàn)系統(tǒng)錯(cuò)誤或者通信錯(cuò)誤的情況下仍然能最終到達(dá)目的地;
3) 持久訂閱者可以保證能夠收到所有發(fā)布的消息,即使訂閱者有時(shí)處于非活動(dòng)狀態(tài)。
4) JMS通過定義消息優(yōu)先級(jí)來盡可能的實(shí)現(xiàn)優(yōu)先傳遞較高優(yōu)先級(jí)的消息。
2 XML技術(shù)
XML以與平臺(tái)、語言和協(xié)議無關(guān)的格式描述和交換數(shù)據(jù),使得它為異構(gòu)數(shù)據(jù)庫之間提供了一個(gè)最佳的數(shù)據(jù)交換規(guī)范。
XML具有以下幾個(gè)特點(diǎn):
1) 易于擴(kuò)展,結(jié)構(gòu)性強(qiáng);
2) 靈活的數(shù)據(jù)表示;
3) 易于處理;
4) 與平臺(tái)無關(guān);
5) 異構(gòu)系統(tǒng)間信息互通。
XML以一種開放的自我描述的方式定義了數(shù)據(jù)結(jié)構(gòu),在描述數(shù)據(jù)內(nèi)容的同時(shí)能突出對(duì)結(jié)構(gòu)的描述,從而體現(xiàn)出數(shù)據(jù)的之間的關(guān)系;同時(shí),它能夠確保在通過網(wǎng)絡(luò)進(jìn)行交互合作時(shí),具有良好的可靠性與互操作性。
由以上特點(diǎn)可以看出XML在數(shù)據(jù)表示以及數(shù)據(jù)庫之間數(shù)據(jù)交換方面的有著獨(dú)有的優(yōu)勢(shì)。
3 基于JMS和XML的異構(gòu)數(shù)據(jù)庫集成模型設(shè)計(jì)
異構(gòu)數(shù)據(jù)庫集成是指利用網(wǎng)絡(luò)提供的功能,以及現(xiàn)有的數(shù)據(jù)庫資源,向用戶提供一種分布式的數(shù)據(jù)庫訪問環(huán)境,使用戶能透明地訪問各種不同廠家生產(chǎn)的數(shù)據(jù)庫管理系統(tǒng)(DBMS)。
異構(gòu)數(shù)據(jù)庫集成的主要難點(diǎn)是如何解決不同平臺(tái)不同數(shù)據(jù)庫之間的數(shù)據(jù)通信和多個(gè)數(shù)據(jù)源的集成。這也是建立異構(gòu)數(shù)據(jù)庫集成模型的關(guān)鍵問題。
要解決這兩個(gè)問題,需要從四個(gè)方面考慮:異構(gòu)數(shù)據(jù)庫集成方案,數(shù)據(jù)的傳輸方式,數(shù)據(jù)的傳輸格式,異構(gòu)數(shù)據(jù)庫訪問。
下面通過對(duì)四個(gè)問題的深入探討,提出一種異構(gòu)數(shù)據(jù)庫集成模型。
3.1 異構(gòu)數(shù)據(jù)庫集成方案
異構(gòu)數(shù)據(jù)庫集成中,為了滿足數(shù)據(jù)庫集成后應(yīng)用系統(tǒng)的各種服務(wù)需要,要保證集成后的數(shù)據(jù)具有一定的集成性、完整性、一致性和訪問安全性,這給數(shù)據(jù)庫的集成提出了要求。
目前,集成異構(gòu)數(shù)據(jù)庫主要有以下四種方案:
1) 給各種異構(gòu)數(shù)據(jù)庫都建立用戶交互接口,不進(jìn)行任何模式的集成。
2) 建立聯(lián)邦數(shù)據(jù)庫系統(tǒng)FDBS(Federated DataBase System)。它是由一組互相協(xié)作的但保持各自自治性的成員數(shù)據(jù)庫系統(tǒng)組成,各個(gè)成員數(shù)據(jù)庫之間僅存在著松散的聯(lián)邦式耦合關(guān)系,沒有全局統(tǒng)一模式,它們通過定義輸入、輸出模式進(jìn)行彼此之間的數(shù)據(jù)訪問,從而實(shí)現(xiàn)不同程度的數(shù)據(jù)集成
3) 利用中間件集成異構(gòu)數(shù)據(jù)庫。中間件位于異構(gòu)數(shù)據(jù)庫系統(tǒng)(數(shù)據(jù)層)和應(yīng)用程序(應(yīng)用層)之間,向下協(xié)調(diào)各數(shù)據(jù)庫系統(tǒng),向上為訪問集成數(shù)據(jù)的應(yīng)用提供統(tǒng)一數(shù)據(jù)模式。
4) 建立數(shù)據(jù)倉庫。它是把來自于多個(gè)數(shù)據(jù)庫的數(shù)據(jù)副本都存儲(chǔ)在單一的數(shù)據(jù)庫中。在這種結(jié)構(gòu)中,所有數(shù)據(jù)庫的數(shù)據(jù)都被抽取出來,合成一個(gè)全局模式,并存儲(chǔ)在數(shù)據(jù)倉庫中。
本文提出一種集成方案:
合并各個(gè)異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)模式,構(gòu)成全局模式,依據(jù)全局模式建立中央數(shù)據(jù)庫;并且實(shí)現(xiàn)中央數(shù)據(jù)庫與各異構(gòu)數(shù)據(jù)庫數(shù)據(jù)的一致性更新。
3.2 數(shù)據(jù)的傳輸方式
在異構(gòu)數(shù)據(jù)庫集成中,要有效解決數(shù)據(jù)分布的異構(gòu)性、實(shí)現(xiàn)客戶訪問的透明性以及保持每個(gè)成員數(shù)據(jù)庫系統(tǒng)的自治性,就必須解決不同平臺(tái)不同數(shù)據(jù)庫之間的數(shù)據(jù)通信;而要解決數(shù)據(jù)通信,首先要解決數(shù)據(jù)的傳輸方式問題。
目前,在分布式應(yīng)用中,完成不同系統(tǒng)間的數(shù)據(jù)傳輸有多種方式:CORBA、DCOM、Remote Procedure Call(RPC)和基于消息的傳輸?shù)鹊取?/p>
相比較而言,基于消息的傳輸更適應(yīng)于松耦合的環(huán)境,消息的傳輸具有以下的優(yōu)點(diǎn):
1) 松耦合;
2) 消息路由和傳送更容易;
3) 負(fù)載更靈活,如可以是二進(jìn)制附件。
基于JMS消息中間件和其他消息中間件比較起來具有以下優(yōu)點(diǎn):
1) 跨平臺(tái)性;
2) 應(yīng)用簡單;
3) 存在大量廠家支持;
4) 采用XML進(jìn)行消息交換。
OpenJMS是一種開源的,小型的具有獨(dú)立JMS功能實(shí)現(xiàn)的,比較成熟的消息中間件,它既可以實(shí)現(xiàn)消息的可靠傳輸,又可以對(duì)遺留數(shù)據(jù)庫系統(tǒng)的影響減縮到最小。OpenJMS實(shí)現(xiàn)了JMS API 1.0.2版本。它的總大小還不到40M,而且OpenJMS服務(wù)器的啟動(dòng)只占用極少量的系統(tǒng)資源,只需要將它所包含的openjms java包添加在編寫的程序里即可實(shí)現(xiàn)消息的發(fā)送和接收。也可以通過OpenJMS服務(wù)器的可視化界面對(duì)消息的發(fā)送進(jìn)行管理。
SUN公司的JMQ,IBM公司的MQSeries和BEA公司的Weblogic JMS,這些產(chǎn)品一般都是存在于基于J2EE平臺(tái)建立的企業(yè)應(yīng)用中,需要占用巨大的系統(tǒng)資源。
3.3 數(shù)據(jù)的傳輸格式
選擇OpenJMS實(shí)現(xiàn)異構(gòu)數(shù)據(jù)庫集成中數(shù)據(jù)傳輸,要解決不同平臺(tái)不同數(shù)據(jù)庫之間的數(shù)據(jù)通信,還需要建立一個(gè)數(shù)據(jù)傳輸?shù)母袷綐?biāo)準(zhǔn)。
從數(shù)據(jù)模型的角度來看,XML具有自描述性、平臺(tái)無關(guān)性、可擴(kuò)展性和能夠描述不同復(fù)雜程度的數(shù)據(jù)的特點(diǎn),因此它很適合用來描述各種異構(gòu)數(shù)據(jù)源并實(shí)現(xiàn)它們之間的轉(zhuǎn)換。
從數(shù)據(jù)交換規(guī)范的角度來看;XML可以保證在數(shù)據(jù)傳輸中,數(shù)據(jù)的規(guī)范性和消息格式的一致性。XML減輕了接收者語法分析和確認(rèn)的負(fù)擔(dān),它為豐富的功能性數(shù)據(jù)結(jié)構(gòu)提供了清晰的標(biāo)準(zhǔn)化途徑;并且它具有平臺(tái)無關(guān)的特性,已成為異構(gòu)數(shù)據(jù)庫數(shù)據(jù)交換的首選語言。因此,XML可作為各異構(gòu)平臺(tái)間信息傳遞的標(biāo)準(zhǔn)。
以上這些特性表明了XML可以作為異構(gòu)數(shù)據(jù)庫集成中數(shù)據(jù)傳輸?shù)臉?biāo)準(zhǔn)格式。
3.4 異構(gòu)數(shù)據(jù)庫訪問
異構(gòu)數(shù)據(jù)庫集成必然要涉及到對(duì)不同平臺(tái)不同數(shù)據(jù)庫的訪問,由于Java語言的平臺(tái)無關(guān)的特性, Java語言來實(shí)現(xiàn)異構(gòu)數(shù)據(jù)庫訪問和它們之間的數(shù)據(jù)通信是最好的選擇。
JDBC(Java Database Connectivity),是支持基于SQL功能的一個(gè)通用的應(yīng)用程序編程接口,是一種連接不同數(shù)據(jù)庫的規(guī)范。
JDBC除了具有ODBC的上述特點(diǎn)外,更具有對(duì)硬件平臺(tái)、操作系統(tǒng)異構(gòu)性的支持。
JDBC提供了連接數(shù)據(jù)庫的幾種方法:直接通信、通過JDBC Driver通信以及通過JDBC-ODBC橋進(jìn)行通信。
3.5 集成模型的建立
通過上面的分析,提出一種基于JMS和XML的異構(gòu)數(shù)據(jù)庫集成方案。如圖1。
建立一個(gè)中央數(shù)據(jù)庫,集成異構(gòu)數(shù)據(jù)庫中所有需要共享的數(shù)據(jù);采用OpenJMS消息中間件構(gòu)建異構(gòu)數(shù)據(jù)庫與中央數(shù)據(jù)庫之間的通訊骨架,保證通訊的安全、可靠;由XML來定義數(shù)據(jù)傳輸?shù)母袷剑瑢?shí)現(xiàn)了數(shù)據(jù)信息的標(biāo)準(zhǔn)化。
基于JMS和XML的異構(gòu)數(shù)據(jù)庫集成模型,是集成各異構(gòu)數(shù)據(jù)庫局部數(shù)據(jù)模式建立全局模式,根據(jù)全局模式建立一個(gè)中央數(shù)據(jù)庫,將原有的各個(gè)分散的、獨(dú)立的系統(tǒng)的數(shù)據(jù)庫通過JMS消息中間件與中央數(shù)據(jù)庫連接起來,組成一個(gè)有機(jī)的整體,在它們之間通過XML來實(shí)現(xiàn)數(shù)據(jù)的交換和資源的共享。
由于原有的各個(gè)子系統(tǒng)數(shù)據(jù)庫之間相互獨(dú)立,接口各異,數(shù)據(jù)格式互不相同,文章在模型中對(duì)原有數(shù)據(jù)庫進(jìn)行了封裝,利用通用的程序提取變化數(shù)據(jù)并轉(zhuǎn)換為統(tǒng)一格式的XML文檔封裝進(jìn)消息中,然后將消息通過OpenJMS消息中間件傳遞給中央數(shù)據(jù)庫,中央數(shù)據(jù)庫接收到消息后,取出消息中的XML文檔依據(jù)數(shù)據(jù)模式映射文件轉(zhuǎn)換為對(duì)應(yīng)于中央數(shù)據(jù)庫的XML文檔,最后實(shí)現(xiàn)XML與數(shù)據(jù)庫的轉(zhuǎn)換,將XML文檔中的數(shù)據(jù)存儲(chǔ)到中央數(shù)據(jù)庫中,實(shí)現(xiàn)子系統(tǒng)數(shù)據(jù)庫與中央數(shù)據(jù)庫數(shù)據(jù)的一致性更新,從而達(dá)到異構(gòu)數(shù)據(jù)庫集成的目的。
參考文獻(xiàn):
[1] 沈良忠,黃德才.JMS和XML的分布式應(yīng)用研究[J].鐵路計(jì)算機(jī)應(yīng)用,2004,13(1):14-16.
[2] 吳永英,呂繼云,班鵬新.基于JMS和XML的數(shù)據(jù)集成研究[J].計(jì)算機(jī)應(yīng)用研究,2004,7:43-45.
[3] 張良,佟俐娟.異構(gòu)數(shù)據(jù)庫集成中數(shù)據(jù)傳輸問題的研究[J].計(jì)算機(jī)應(yīng)用研究,2004,11:65-66.
[4] 殷曉嵐,付遠(yuǎn)彬,李京.企業(yè)數(shù)據(jù)集成模式的研究[J].計(jì)算機(jī)工程與應(yīng)用,2002,12:253-255.
[5] 粱鷹,羅偉其.異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)轉(zhuǎn)換在大型信息系統(tǒng)中的實(shí)現(xiàn)[J].計(jì)算機(jī)工程與應(yīng)用,2000,9:103-106.