摘 要:在分布式網(wǎng)絡(luò)結(jié)構(gòu)中,最大的問(wèn)題就是異構(gòu)數(shù)據(jù)庫(kù)之間的一致性問(wèn)題。針對(duì)該問(wèn)題,文中設(shè)計(jì)一種基于XML的異構(gòu)數(shù)據(jù)庫(kù)同步系統(tǒng)。該系統(tǒng)已Java/XML為基礎(chǔ),并通過(guò)Web界面來(lái)實(shí)現(xiàn)分布式數(shù)據(jù)庫(kù)之間的同步。實(shí)際應(yīng)用結(jié)果表明,該系統(tǒng)具有較好的可操作性和可擴(kuò)展性。
關(guān)鍵詞:數(shù)據(jù)同步;異構(gòu)數(shù)據(jù)庫(kù);JAVA/XML;Web
中圖分類號(hào):TP311.13
隨著現(xiàn)代網(wǎng)絡(luò)技術(shù)的發(fā)展和應(yīng)用范圍的擴(kuò)展,需要在不同結(jié)構(gòu)的網(wǎng)絡(luò)間進(jìn)行數(shù)據(jù)交換。這其中,最大的障礙就是異構(gòu)數(shù)據(jù)庫(kù)的存在,使得數(shù)據(jù)難以進(jìn)行有效和統(tǒng)一的管理與維護(hù)。其中,這種異構(gòu)性體現(xiàn)在多個(gè)方面,比如網(wǎng)絡(luò)中不同節(jié)點(diǎn)上計(jì)算機(jī)系統(tǒng)的異構(gòu)、各種類型操作系統(tǒng)的異構(gòu)、數(shù)據(jù)庫(kù)管理系統(tǒng)中數(shù)據(jù)模型的異構(gòu)等。
針對(duì)網(wǎng)絡(luò)數(shù)據(jù)交互中的異構(gòu)問(wèn)題,人們采用了多種方法,比如日志法、觸發(fā)器法、API法等。但是,這些方法各有優(yōu)缺點(diǎn),難以滿足用戶多方面、多層次的需求。為此,本文以異構(gòu)數(shù)據(jù)庫(kù)的同步為研究?jī)?nèi)容,以XML技術(shù)為基礎(chǔ),設(shè)計(jì)并實(shí)現(xiàn)了一種異構(gòu)數(shù)據(jù)庫(kù)進(jìn)行同步的系統(tǒng)。在所設(shè)計(jì)的同步系統(tǒng)中,具體劃分成客戶端和服務(wù)器端。前者主要負(fù)責(zé)對(duì)數(shù)據(jù)進(jìn)行捕獲、對(duì)數(shù)據(jù)的類型進(jìn)行轉(zhuǎn)換,以及對(duì)數(shù)據(jù)文件的寫入、壓縮和加密等;而后者則主要負(fù)責(zé)的實(shí)現(xiàn)數(shù)據(jù)文件的解密、解壓以及各種傳輸數(shù)據(jù)的解析和入庫(kù)操作等。
1 異構(gòu)數(shù)據(jù)庫(kù)數(shù)據(jù)同步系統(tǒng)
1.1 系統(tǒng)框架闡述
現(xiàn)有的以后數(shù)據(jù)庫(kù)系統(tǒng)在應(yīng)用過(guò)程中,存在的一些能夠給數(shù)據(jù)交互產(chǎn)生影響的問(wèn)題有多種,主要包括異構(gòu)數(shù)據(jù)庫(kù)之間的命名沖突、格式?jīng)_突以及結(jié)構(gòu)沖突等。所以,為了能夠?qū)崿F(xiàn)多種異構(gòu)數(shù)據(jù)庫(kù)之間的數(shù)據(jù)同步,主要解決思路就是要正確表達(dá)異構(gòu)數(shù)據(jù)庫(kù)之間的同步規(guī)則,即針對(duì)存在異構(gòu)特征的源數(shù)據(jù)庫(kù)與目標(biāo)數(shù)據(jù)庫(kù)之間存在的各種同步需求,以及采用的同步解決方法進(jìn)行聲明和處理;此外,還需要針對(duì)數(shù)據(jù)的變化進(jìn)行有效檢測(cè),并對(duì)其進(jìn)行及時(shí)捕獲;最后,還需要經(jīng)捕獲的數(shù)據(jù)傳送給目標(biāo)數(shù)據(jù)庫(kù),完成數(shù)據(jù)的更新過(guò)程,最終完成異構(gòu)數(shù)據(jù)庫(kù)的數(shù)據(jù)同步。
以上述思路為基礎(chǔ),文中所設(shè)計(jì)的系統(tǒng)就采用C/S架構(gòu)模式。在客戶端,需要完成同步規(guī)則定義、初始化、數(shù)據(jù)同步處理、同步數(shù)據(jù)文件處理以及FTP文件傳輸?shù)炔僮?,并設(shè)置相應(yīng)的功能模塊。在服務(wù)器端,其同樣包含了這幾個(gè)功能模塊,不過(guò),服務(wù)器端的數(shù)據(jù)同步處理與客戶端存在差異。在下面的圖1中,給出了本文所設(shè)計(jì)同步系統(tǒng)中所包含主要模塊的設(shè)計(jì)框圖。
1.2 同步規(guī)則分析
在同步系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)中,所依據(jù)的同步規(guī)則,是指系統(tǒng)中的客戶端和服務(wù)器端之間采用的一種數(shù)據(jù)同步和交互策略。常用的數(shù)據(jù)庫(kù)之間的同步策略有多種,比如:定時(shí)同步、日志同步以及即時(shí)同步等??紤]到這些策略的適用性,文中設(shè)計(jì)和采用了基于策略表的自定義同步技術(shù)。該技術(shù)需要在客戶端增加同步策略表,以策略表為依托完成不同數(shù)據(jù)表的配置過(guò)程。
1.3 數(shù)據(jù)掃描過(guò)程
在數(shù)據(jù)掃描過(guò)程中,主要采用基于時(shí)間戳的可配置數(shù)據(jù)掃描方法。這樣,客戶端就可以根據(jù)異構(gòu)規(guī)則來(lái)定義聲明中定義的同步對(duì)象數(shù)據(jù)庫(kù)以及掃描模式,使得系統(tǒng)能夠根據(jù)掃描表中的信息完成數(shù)據(jù)庫(kù)掃描過(guò)程。文中所設(shè)計(jì)系統(tǒng)中的掃描表包含了多種信息,比如需要同步的數(shù)據(jù)對(duì)象的名稱、捕獲周期、掃描模式等。此外,掃描模式還對(duì)掃描源數(shù)據(jù)庫(kù)中變動(dòng)數(shù)據(jù)的方式進(jìn)行了定義。
1.4 數(shù)據(jù)轉(zhuǎn)換處理過(guò)程
對(duì)于異構(gòu)數(shù)據(jù)庫(kù),其結(jié)構(gòu)和功能各不相同,為了保存相同語(yǔ)義的同步數(shù)據(jù),可能需要采用不同的數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)類型和數(shù)據(jù)名稱。所以,在完成數(shù)據(jù)捕獲后,則需要針對(duì)這些數(shù)據(jù)進(jìn)行轉(zhuǎn)換。概括起來(lái),數(shù)據(jù)的差異性主要體現(xiàn)在如下幾個(gè)方面:
(1)字段名稱的異構(gòu)。對(duì)于同一數(shù)據(jù)實(shí)體的字段,名稱存在差異。
(2)數(shù)據(jù)類型的異構(gòu)。由于相同數(shù)據(jù)實(shí)體中能夠所采用的數(shù)據(jù)類型表示方法也有可能存在差異,所以就需要針對(duì)兩種數(shù)據(jù)之間的數(shù)據(jù)類型變換函數(shù)進(jìn)行預(yù)先定義。
(3)數(shù)據(jù)結(jié)構(gòu)的異構(gòu)。需要說(shuō)明的是,如果在目標(biāo)數(shù)據(jù)庫(kù)所包含的字段只是源表的一部分,則需要針對(duì)冗余數(shù)據(jù)進(jìn)行捕獲操作。
對(duì)于這幾種異構(gòu)問(wèn)題,文中所采用的方法主要為基于異構(gòu)屏蔽的數(shù)據(jù)轉(zhuǎn)換技術(shù),在該方法中,首先需要對(duì)基于XML的異構(gòu)屏蔽文件進(jìn)行定義,才能實(shí)現(xiàn)源數(shù)據(jù)庫(kù)和目標(biāo)數(shù)據(jù)的異構(gòu)聲明操作,最終實(shí)現(xiàn)異構(gòu)數(shù)據(jù)庫(kù)中異構(gòu)數(shù)據(jù)的同步轉(zhuǎn)換。
2 系統(tǒng)實(shí)現(xiàn)與測(cè)試
本文所設(shè)計(jì)的數(shù)據(jù)同步系統(tǒng)主要以Java環(huán)境為依托,基于XML技術(shù)實(shí)現(xiàn)異構(gòu)數(shù)據(jù)庫(kù)的同步。同時(shí),還將系統(tǒng)的客戶端和服務(wù)器端在局域網(wǎng)的不同主機(jī)上進(jìn)行測(cè)試,在測(cè)試過(guò)程中,對(duì)于不同位置的網(wǎng)絡(luò)主機(jī),安裝有Oracel和Mysql數(shù)據(jù)庫(kù),并對(duì)實(shí)驗(yàn)中需要的同步數(shù)據(jù)庫(kù)進(jìn)行了定義。
對(duì)于測(cè)試過(guò)程中所出現(xiàn)的源數(shù)據(jù)庫(kù)中數(shù)據(jù)的變換情況,可以通過(guò)客戶端對(duì)這些數(shù)據(jù)進(jìn)行捕獲,然后進(jìn)行數(shù)據(jù)的轉(zhuǎn)換與交換操作。這樣,在服務(wù)器端對(duì)數(shù)據(jù)文件成功監(jiān)測(cè)的基礎(chǔ)上,就可以實(shí)現(xiàn)數(shù)據(jù)的轉(zhuǎn)換處理,完成數(shù)據(jù)的更新過(guò)程和數(shù)據(jù)同步過(guò)程。需要補(bǔ)充的是,在數(shù)據(jù)文件的處理過(guò)程中,所采用的加密標(biāo)準(zhǔn)為AES標(biāo)準(zhǔn),而壓縮方式則采用了標(biāo)準(zhǔn)文件壓縮程序,即Gzip。
3 結(jié)束語(yǔ)
本文主要針對(duì)存在于分布式網(wǎng)絡(luò)中的異構(gòu)數(shù)據(jù)庫(kù)間的數(shù)據(jù)同步問(wèn)題進(jìn)行研究,設(shè)計(jì)了基于XML的異構(gòu)數(shù)據(jù)庫(kù)數(shù)據(jù)同步系統(tǒng),能夠?qū)崿F(xiàn)客戶端和服務(wù)器端的數(shù)據(jù)庫(kù)同步,數(shù)據(jù)的一致性得到了維護(hù)。在系統(tǒng)實(shí)現(xiàn)過(guò)程中,考慮系統(tǒng)的平臺(tái)無(wú)關(guān)性,采用了Java作為開(kāi)發(fā)平臺(tái),并以XML作為中間件來(lái)實(shí)現(xiàn)異構(gòu)數(shù)據(jù)的數(shù)據(jù)同步。
參考文獻(xiàn):
[1]張洪.基于JAVA的異構(gòu)數(shù)據(jù)庫(kù)同步技術(shù)的研究和實(shí)現(xiàn)[J].中國(guó)科技信息,2009(23):125-127.
[2]楊鵬,楊海濤,王正華.異構(gòu)數(shù)據(jù)庫(kù)變化捕捉及同步策略[J].計(jì)算機(jī)工程,2008(34):53-55.
[3]林源,陳志泊.分布式異構(gòu)數(shù)據(jù)庫(kù)同步系統(tǒng)的研究與應(yīng)用[J].計(jì)算機(jī)工程與設(shè)計(jì),2010(31):5279-5281.
[4]熊輝,劉彥峰,郭大慶.分布式異構(gòu)數(shù)據(jù)庫(kù)遷移系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2008(31):57-59.
作者簡(jiǎn)介:周嵐(1977.06-),女,江蘇徐州人,講師,本科,研究方向:軟件開(kāi)發(fā)、數(shù)據(jù)庫(kù)、程序設(shè)計(jì)等。
作者單位:江蘇聯(lián)合職業(yè)技術(shù)學(xué)院徐州財(cái)經(jīng)分院,江蘇徐州 221008