王曉瑞+++黃祥志+++沈夏炯+++周珂+++王棟
摘 要: 針對地理信息在異構(gòu)數(shù)據(jù)庫之間的同步傳輸問題,基于XML節(jié)點映射模型,結(jié)合Web Service分布式遠程調(diào)用方式,在異構(gòu)數(shù)據(jù)庫之間建立一種數(shù)據(jù)同步模型。該模型結(jié)合數(shù)據(jù)庫模式匹配的特點,將異構(gòu)數(shù)據(jù)庫間的數(shù)據(jù)信息進行節(jié)點映射,降低XML查詢的掃描代價,提高中心服務(wù)節(jié)點查詢匹配集合的速率。實際應(yīng)用表明,提出的基于XML節(jié)點映射模型可以有效的解決異構(gòu)數(shù)據(jù)庫之間的同步傳輸問題。
關(guān)鍵詞: SOA; 異構(gòu)數(shù)據(jù)庫; 數(shù)據(jù)同步; XML; Web Service
中圖分類號:TP391 文獻標志碼:A 文章編號:1006-8228(2016)05-12-04
Abstract: Aiming at the synchronization problem between heterogeneous databases for geographic information, this paper establishes a data synchronization model based on the XML node mapping model and combined with the Web Service distributed remote call method. This model combines the characteristics of database schema matching, maps the data information between heterogeneous databases, reduces the scan cost of XML query, and increases the speed of query matching set of the central service node. The practical application shows that the proposed XML based node mapping model can effectively solve the problem of data synchronization between heterogeneous databases.
Key words: SOA; heterogeneous database; data synchronization; XML; Web Service
0 引言
隨著航天技術(shù)的發(fā)展,發(fā)射衛(wèi)星數(shù)量逐漸增多,地理數(shù)據(jù)信息也隨之俱增,需存儲的數(shù)據(jù)信息量越來越大。地理信息往往分散存儲于同構(gòu)或異構(gòu)的數(shù)據(jù)庫,這是為了有效整合分散、異構(gòu)的地理數(shù)據(jù)信息資源,緩解地理科研行業(yè)間的“信息孤島”問題,有些傳統(tǒng)數(shù)據(jù)庫廠商提出中間件方案,但這種方式無法滿足分布式同構(gòu)或異構(gòu)數(shù)據(jù)庫間的同步問題。有些研究提出基于文件傳輸?shù)耐郊夹g(shù),但是這種方式需要通過云盤或其他方式拷貝文件,存在嚴重的安全隱患。也有些研究提出基于管道同步技術(shù),即通過數(shù)據(jù)管道同步數(shù)據(jù),但這種方法對數(shù)據(jù)通道依賴大,需要建立專門的數(shù)據(jù)管道管理平臺,開銷大,對網(wǎng)絡(luò)條件要求較高,不適合廣域網(wǎng)[1]。林源、陳志泊提出的分布式異構(gòu)數(shù)據(jù)庫同步系統(tǒng),它基于WCF 構(gòu)建的應(yīng)用程序服務(wù),針對異地數(shù)據(jù)庫表的數(shù)據(jù)結(jié)構(gòu)定義一致時,提出使用存儲過程完成數(shù)據(jù)同步,若更新時發(fā)現(xiàn)數(shù)據(jù)庫表字段不一致,則優(yōu)先選擇在該數(shù)據(jù)庫中添加新的表字段,但這種方法使用前需要為每張表建立一套元數(shù)據(jù)表、觸發(fā)器和存儲過程,因此,其僅限于在同構(gòu)數(shù)據(jù)庫之間完成數(shù)據(jù)同步,在面對異構(gòu)數(shù)據(jù)庫之間同步問題時,會耗費大量的時間,且會帶來數(shù)據(jù)庫之間數(shù)據(jù)不完整的問題[2]。
本文基于Web Service的數(shù)據(jù)同步,采用XML數(shù)據(jù)格式封裝數(shù)據(jù)庫中的數(shù)據(jù),憑借XML半結(jié)構(gòu)化、自描述性等特點突破傳統(tǒng)數(shù)據(jù)模型對數(shù)據(jù)模式的嚴格約束,適用于異構(gòu)數(shù)據(jù)庫之間的數(shù)據(jù)同步,能夠解決跨平臺等問題[1]。針對地理信息在異構(gòu)數(shù)據(jù)庫之間的同步傳輸問題,設(shè)計一種異構(gòu)數(shù)據(jù)庫之間數(shù)據(jù)同步模型,其結(jié)合數(shù)據(jù)庫模式匹配的特點,采用XML節(jié)點映射模型,減少XML文檔的掃描代價,并快速獲取查詢模式中節(jié)點匹配的集合?;诠?jié)點映射與樹匹配的處理方式主要依賴于XML文檔索引的設(shè)計,通過對異構(gòu)數(shù)據(jù)庫中存在的有效字段,根據(jù)屬性特征進行分層且有效的映射投影,達到提高XML的查詢和解析速率的效果。
1 異構(gòu)數(shù)據(jù)庫同步和數(shù)據(jù)同步模型
地理數(shù)據(jù)信息存在存儲時分散、邏輯上統(tǒng)一的問題,為解決地理數(shù)據(jù)信息在異構(gòu)數(shù)據(jù)庫間的同步問題,結(jié)合SOA架構(gòu),設(shè)計出基于XML節(jié)點的映射模型,與Web Service遠程訪問技術(shù)相結(jié)合,使分散的異構(gòu)數(shù)據(jù)庫中地理數(shù)據(jù)信息分層分級的匯總至統(tǒng)一的中心數(shù)據(jù)庫中,實現(xiàn)中心數(shù)據(jù)庫數(shù)據(jù)信息的統(tǒng)一,為用戶提供“一站式”的數(shù)據(jù)共享服務(wù),便于信息的檢索與分配[3]。
1.1 異構(gòu)數(shù)據(jù)庫同步
異構(gòu)數(shù)據(jù)庫同步是異構(gòu)數(shù)據(jù)庫集成技術(shù)的一種應(yīng)用,其中各個數(shù)據(jù)庫均具有自身的自治性,同步主要實現(xiàn)數(shù)據(jù)庫間的數(shù)據(jù)信息資源的共享和數(shù)據(jù)庫間的透明訪問,且實現(xiàn)數(shù)據(jù)同步的同時,每個數(shù)據(jù)庫系統(tǒng)仍保有自己的應(yīng)用特性、完整性控制和安全性控制[4-5]。
1.2 XML映射模型
XML映射模型借鑒目前常用的關(guān)系型數(shù)據(jù)庫數(shù)據(jù)映射的思想。數(shù)據(jù)映射(Data Mapping,DM)是在源數(shù)據(jù)模型與目標數(shù)據(jù)模型之間建立對應(yīng)關(guān)系[6]。常見的DM有手工編碼和可視化操作兩種方式。手工編碼是利用常用的編碼技術(shù)手段手動獲取數(shù)據(jù)并將其封裝成XML,便于數(shù)據(jù)遷移;可視化操作是數(shù)據(jù)庫支持用戶自定義數(shù)據(jù)項之間的對應(yīng)關(guān)系。但這兩種都需要將該應(yīng)用轉(zhuǎn)化成可運行的程序[7]。
⑴ 基于表結(jié)構(gòu)映射
數(shù)據(jù)庫通常存在一些基本表,一個基本表描述著一個事物,一個事物具有多個屬性,一條記錄是多個屬性對應(yīng)的值的集合,根據(jù)不同集合對應(yīng)的域值的不同,可以針對表結(jié)構(gòu)來映射節(jié)點。以常用日志表結(jié)構(gòu)為例來組織XML,結(jié)構(gòu)如圖1所示。
這種基于表設(shè)計的XML封裝優(yōu)點是簡潔明了,方便編程,伸縮性強,適合于關(guān)系型數(shù)據(jù)庫中兩個數(shù)據(jù)模型一致的情況[10],特別適合單個表結(jié)構(gòu)且無外鍵關(guān)聯(lián)的關(guān)系型數(shù)據(jù)庫表的情況。
⑵ 基于對象的節(jié)點映射模型
鑒于表設(shè)計具有的局限性,不能滿足存在多個外鍵的表結(jié)構(gòu)。針對“一對多,多對多”具有多個外鍵相互關(guān)聯(lián)的表結(jié)構(gòu),為了方便用戶解析,提出基于對象的節(jié)點映射模型。該設(shè)計是將數(shù)據(jù)庫表的一個基本表描述成一個事物,并以XML樹形結(jié)構(gòu)的形式表示出來,且XML的節(jié)點允許有多個,能夠形象的表現(xiàn)出多張外鍵關(guān)聯(lián)表的之間的從屬關(guān)系。同樣以軟硬件信息表結(jié)構(gòu)為例,如圖2所示為基于對象的軟硬件節(jié)點映射。
基于XML對象化設(shè)計具有層次感,直觀形象,伸縮性強,易擴展和易解析等優(yōu)點。適合描述關(guān)系型數(shù)據(jù)庫中具有多個外鍵關(guān)聯(lián)的數(shù)據(jù)庫表結(jié)構(gòu)的情況,同樣也適用于描述無外鍵關(guān)聯(lián)的單個表數(shù)據(jù)結(jié)構(gòu)的情況。
1.3 數(shù)據(jù)同步模型
為了研究異構(gòu)數(shù)據(jù)庫之間數(shù)據(jù)同步技術(shù),本文結(jié)合數(shù)據(jù)庫模式匹配的思想,建立基于XML節(jié)點映射的數(shù)據(jù)同步模型,并在實際應(yīng)用中驗證該數(shù)據(jù)同步模型的有效性。
傳統(tǒng)數(shù)據(jù)庫均不提供將數(shù)據(jù)庫表數(shù)據(jù)自動映射為自定義XML的功能,但存在將關(guān)系型數(shù)據(jù)庫表數(shù)據(jù)映射為XML的中間件,然而這些中間件不能有效完成分布式數(shù)據(jù)庫同步模型的XML節(jié)點映射。所以在此設(shè)計一種異構(gòu)數(shù)據(jù)庫間數(shù)據(jù)同步模型如圖3所示。
⑴ 首先分析源數(shù)據(jù)庫表結(jié)構(gòu)和目標數(shù)據(jù)庫表結(jié)構(gòu)。基于對象建立節(jié)點映射模型,充分利用了XML自身的優(yōu)勢,從而達到最優(yōu)的結(jié)構(gòu)化的模式映射,實現(xiàn)了數(shù)據(jù)信息在多源數(shù)據(jù)庫和不同目標數(shù)據(jù)庫之間的安全高效靈活的傳輸。
⑵ 其次,當同步代理模塊A和B之間同步時,為方便傳遞XML,并在分布式情況下達到高效、可靠、靈活的效果,需要借助于中間件。中間件是一種介于操作系統(tǒng)和應(yīng)用程序之間的軟件,具備管理計算機資源和進行網(wǎng)絡(luò)通信的功能。常用的中間件主要有遠程過程調(diào)用中間件(Remote Procedure Call,RPC)、面向消息的中間件(Message-Oriented Middleware,MOM)、請求代理中間件(Object Request Brokers,ORB)和實物處理監(jiān)控中間件(Transaction processing monitors)[11]??紤]源數(shù)據(jù)庫和目標數(shù)據(jù)庫可能在同一個計算機上,也有可能位于兩臺計算機上或者是兩個不同的操作系統(tǒng)上,本文使用遠程訪問中間件。Web Service是一種常用的RPC,它能夠完全結(jié)合XML、XSD等具有跨平臺性、互操作性的文件結(jié)構(gòu)創(chuàng)建分布式應(yīng)用系統(tǒng)的新平臺;能夠?qū)崿F(xiàn)跨防火墻通信、應(yīng)用程序的集成、B2B的集成以及軟件和數(shù)據(jù)的重用。它提供了一種松散的粗粒度的分布計算模式,由Web Service組成的中間層,無疑可以縮短開發(fā)周期、減少程序的邏輯復(fù)雜度并提高代碼的利用率。Web Service可以實現(xiàn)跨域訪問,它是SOA的一種實現(xiàn)技術(shù),使用該技術(shù),可以構(gòu)造標準化程度極高的Web服務(wù)。所以我們搭建了Web Service平臺,提供一個供同步代理模塊A調(diào)用的接口,便于使用標準的HTTP(S)協(xié)議來傳送XML數(shù)據(jù)。
⑶ 建立一個定時器,系統(tǒng)將自動定時觸發(fā)同步代理模塊A,實現(xiàn)其自動化,無需同步系統(tǒng)使用者的任何操作,減少對系統(tǒng)操作者的技術(shù)要求。
⑷ 以上三步是實現(xiàn)基于XML同步模型的先期準備工作,當啟動定時器時,計時器觸發(fā)同步代理模塊A使其通過SQL語句查詢源數(shù)據(jù)庫并返回新的數(shù)據(jù)源,接下來執(zhí)行下面的第⑸步。
⑸ 同步代理模塊A在接收到返回的數(shù)據(jù)集后,按照第一步中確定的數(shù)據(jù)轉(zhuǎn)換模式,通過一定的技術(shù)手段使數(shù)據(jù)集轉(zhuǎn)化成基于節(jié)點映射的標準結(jié)構(gòu)的XML,將XML以轉(zhuǎn)換為字符串形式后自發(fā)的調(diào)用中間件中對應(yīng)的同步服務(wù)。
⑹ 同步代理模塊B將獲取的XML數(shù)據(jù)按照對象封裝的特點,逐步解析,并將解析后的同步信息插入到目的數(shù)據(jù)庫中。
至此,異構(gòu)數(shù)據(jù)庫之間數(shù)據(jù)同步已經(jīng)完成,此后,系統(tǒng)將按照計時器中設(shè)定的時間,定時觸發(fā)同步代理模塊A,繼續(xù)下一次的數(shù)據(jù)同步。
2 數(shù)據(jù)同步模型實驗分析
異構(gòu)數(shù)據(jù)庫之間數(shù)據(jù)同步不僅受環(huán)境因素的影響,也受服務(wù)資源及軟硬件性能指標的影響。當一個服務(wù)節(jié)點同時接收多個站點的同步信息時,由于網(wǎng)絡(luò)帶寬等因素,造成的網(wǎng)絡(luò)擁塞,同樣會影響數(shù)據(jù)同步的效率[8-9]。而當同時有多個站點同時同步信息時,會形成一個控制隊列。在此不再對控制隊列作介紹,只關(guān)注利用XML技術(shù)解決異構(gòu)數(shù)據(jù)庫之間的同步問題,尤其是如何減少XML的查詢掃描時間,并快速獲取查詢模式中節(jié)點匹配集合的問題。
目前,我們設(shè)計的異構(gòu)數(shù)據(jù)庫數(shù)據(jù)同步模型已投入實際應(yīng)用。在實際應(yīng)用時,采用Java技術(shù),服務(wù)部署在Linux平臺下Tomcat容器中,通過公共服務(wù)端口,完成Web Service服務(wù)間數(shù)據(jù)通信。系統(tǒng)實際應(yīng)用中,每天的數(shù)據(jù)同步量已到達10萬條之多,在網(wǎng)絡(luò)服務(wù)帶寬為4Mbps的場景下,設(shè)定中心節(jié)點接收同步數(shù)據(jù)并開始計時,至解析結(jié)束所消耗的時間記為Ta,從解析后將數(shù)據(jù)插入到數(shù)據(jù)庫中的用時記為Tb,分別測試1萬、5萬、10萬條數(shù)據(jù)同步量下的Ts、Ta、Tr的值。改進前后的實驗數(shù)據(jù)如表1、表2所示。
通過對圖4、圖5、圖6、圖7中數(shù)據(jù)同步模型改進前后所消耗時間的對比分析可知,隨著同步數(shù)據(jù)量的增多,改進后的模型對XML樹結(jié)構(gòu)查詢時間減少,因為改進后的模型減少了查詢時對無關(guān)節(jié)點的匹配次數(shù),數(shù)據(jù)解析時間的增長率也逐漸減小。數(shù)據(jù)入庫時間和改進前相比,也有減緩的趨勢。實際應(yīng)用表明,本文提出的異構(gòu)數(shù)據(jù)庫間的數(shù)據(jù)同步模型能有效的提高數(shù)據(jù)同步的效率。
3 結(jié)束語
針對地理信息在異構(gòu)數(shù)據(jù)庫之間的同步傳輸?shù)膯栴},本文結(jié)合Web Service提出了一種基于XML的節(jié)點映射模型,它結(jié)合數(shù)據(jù)庫模式匹配的特點,將異構(gòu)數(shù)據(jù)庫間的數(shù)據(jù)信息進行節(jié)點映射。針對一個或多個對象節(jié)點的映射,分層分級設(shè)計XML,降低查詢時無關(guān)節(jié)點標簽的匹配次數(shù),提高查詢匹配集合的速率,有效的減緩解析數(shù)據(jù)時間花費的增長率,方便對象化數(shù)據(jù)的入庫,減少對應(yīng)的入庫時間,從而提高數(shù)據(jù)同步的效率。實際應(yīng)用表明,本文提出的同步模型能有效的提高異構(gòu)數(shù)據(jù)庫之間的數(shù)據(jù)同步效率,解決了當前異構(gòu)數(shù)據(jù)庫間的數(shù)據(jù)同步效率低下的難題。進一步提高了異構(gòu)數(shù)據(jù)庫間的數(shù)據(jù)同步速率。
然而本文在數(shù)據(jù)查詢方面對數(shù)據(jù)同步的效率的影響并沒有作進一步研究,接下來的研究是,在進一步完善降低標簽匹配度方案的同時,逐步提高設(shè)計模型中數(shù)據(jù)查詢的效率,找出一種實際平均性能良好的查詢處理和優(yōu)化技術(shù),進而提高異構(gòu)數(shù)據(jù)庫間的數(shù)據(jù)同步速率[12]。
參考文獻(References):
[1] 田淼.分布式異構(gòu)數(shù)據(jù)庫同步中間件的設(shè)計與實現(xiàn)[D].地理信息科學(xué)學(xué)報碩士學(xué)位論文,2012.
[2] 林源,陳志泊.分布式異構(gòu)數(shù)據(jù)庫同步系統(tǒng)的研究與應(yīng)用[J].計算機工程與設(shè)計,2010.31(24).
[3] 諸云強,馮敏,宋佳.基于SOA的地球系統(tǒng)科學(xué)數(shù)據(jù)共享平臺架構(gòu)設(shè)計與實現(xiàn)[J].地理信息科學(xué)學(xué)報,2009.3.
[4] 李鐵軍,郝文寧,王偉一.一個輕量級的異構(gòu)數(shù)據(jù)庫同步系統(tǒng)[J].計算機與信息技術(shù),2007.
[5] 陳為民,文學(xué)東.分布式地理數(shù)據(jù)庫同步更新系統(tǒng)設(shè)計與實現(xiàn)[J].測繪通報,2012.11.
[6] 黎建輝,吳威,閻保平.一個基于XML元數(shù)據(jù)映射與轉(zhuǎn)換方法[J].微電子學(xué)與計算機,2008.
[7] http://www.cnblogs.com/GaoJunTao/archive/2010/01/22/1653848.html.
[8] 盧宇,龔忠友,吳進營等.基于Web服務(wù)的分布式異構(gòu)數(shù)據(jù)同步設(shè)計[J].微計算機應(yīng)用,2011.32(12).
[9] 盧宇,吳進營,樂仁昌等.基于SOA架構(gòu)的分布式異構(gòu)數(shù)據(jù)同步通信控制策略分析[J].計算機應(yīng)用,2012.32(5).
[10] 楊柳,蔡英蔚.基于XML格式異構(gòu)數(shù)據(jù)同步模型的研究[J].中國電力教育,2008.32(5).
[11] 百度百科.http://baike.baidu.com/link?url=_URd0bJHHbuSr8k_jcYOonUEAzcCMVkPbEGlM1FuDQURVGdgr6qBbdioYaKhgIjFwCDY-MYXXxn8XLQ2Ln-2aa
[12] 畢鑫,王國仁,趙相國等.XML數(shù)據(jù)中Twing查詢處理與優(yōu)化技術(shù)研究綜述[J].計算機科學(xué)與檢索,2013.7(9).