楊曉亮
【摘 要】差異數(shù)據(jù)捕獲是數(shù)據(jù)庫同步的重要環(huán)節(jié),對后續(xù)的系統(tǒng)數(shù)據(jù)處理也起著決定性的作用。在進(jìn)行差異數(shù)據(jù)捕獲時,首要任務(wù)是取得復(fù)制對象的變化序列或當(dāng)前映像,在此過程中要求提供盡可能詳細(xì)的控制信息,選擇合適的差異數(shù)據(jù)捕獲方法可以有效的提高差異數(shù)據(jù)捕獲的遷移效率。本文對當(dāng)前比較常用的不同數(shù)據(jù)源之間數(shù)據(jù)同步的幾種實現(xiàn)方式及優(yōu)缺點進(jìn)行了分析和探討。
【關(guān)鍵詞】數(shù)據(jù)源;同步;變化
隨著分布式數(shù)據(jù)設(shè)計在系統(tǒng)應(yīng)用中的普及,越來越多的企業(yè)、教育機構(gòu)、政府部門都選擇建立自己的數(shù)據(jù)庫來完成日常數(shù)據(jù)的存儲。建立并使用數(shù)據(jù)庫的關(guān)鍵是解決數(shù)據(jù)同步問題。數(shù)據(jù)同步是指當(dāng)某個數(shù)據(jù)源的數(shù)據(jù)發(fā)生變化時,與之相關(guān)聯(lián)的數(shù)據(jù)源的數(shù)據(jù)也會隨之變化,可以簡單的理解為通過數(shù)據(jù)同步要讓各部門未來的變化信息及時的傳遞到數(shù)據(jù)中心,從而保證數(shù)據(jù)庫信息的完整。差異數(shù)據(jù)捕獲作為數(shù)據(jù)庫同步的基礎(chǔ)環(huán)節(jié),對數(shù)據(jù)遷移效率起著關(guān)鍵性的作用。當(dāng)前國內(nèi)出現(xiàn)了很多差異數(shù)據(jù)的捕獲方法,由于不同差異數(shù)據(jù)捕獲方法適用范圍和捕獲效率在不同的系統(tǒng)環(huán)境中差異較大,因此,對不同差異數(shù)據(jù)捕獲方法的特點進(jìn)行研究對提高差異數(shù)據(jù)系統(tǒng)同步和整合效率有著重要的理論和實踐意義。本文對當(dāng)前比較常用的幾種差異數(shù)據(jù)捕獲方法進(jìn)行了分析和比較。
一、觸發(fā)器法
(1)原理:在為復(fù)制對象創(chuàng)建相應(yīng)的觸發(fā)器過程中,當(dāng)對復(fù)制對象進(jìn)行修改、插入和刪除等DML命令時,觸發(fā)器被喚醒,將變化捕獲。
(2)優(yōu)點:能做到實時同步,數(shù)據(jù)遷移效率較高;可以與其他機制聯(lián)合用于同步復(fù)制和對等式復(fù)制等。
(3)缺點:占用的系統(tǒng)資源比較多,降低了原有應(yīng)用系統(tǒng)的運行效率;在復(fù)雜的系統(tǒng)環(huán)境里對配置要求較高,該捕獲方法實施難度偏大。當(dāng)數(shù)據(jù)庫系統(tǒng)中存在多觸發(fā)器機制時,該方法可以在保證效率的前提下完成作業(yè)。
二、時間戳法
(1)原理:在要同步的源表里有時間戳字段,每當(dāng)數(shù)據(jù)發(fā)生變化,時間戳?xí)涗洶l(fā)生變化的時間。
(2)優(yōu)點:基本不會對業(yè)務(wù)系統(tǒng)的性能產(chǎn)生影響,有效的保證了原有應(yīng)用系統(tǒng)的運行效率。
(3)缺點:要對原有系統(tǒng)進(jìn)行大幅度的調(diào)整(源表中要求有時間戳、刪除數(shù)據(jù)時要對系統(tǒng)進(jìn)行特殊處理);不能捕獲非通過應(yīng)用系統(tǒng)引起的操作數(shù)據(jù)變化。
三、日志法
(1)原理:通過對源數(shù)據(jù)庫日志的分析,來得源數(shù)據(jù)庫中的變化的數(shù)據(jù)。
(2)優(yōu)點:基本不會對業(yè)務(wù)系統(tǒng)的性能產(chǎn)生影響;大多數(shù)數(shù)據(jù)庫都有日志,取源方便;操作過程中對應(yīng)用系統(tǒng)的占用率較低。
(3)缺點:由于部分?jǐn)?shù)據(jù)庫系統(tǒng)的日志格式是隱藏的,要建立一個基于日志的變化捕獲程序難度較大;不同數(shù)據(jù)庫在具體細(xì)節(jié)上一般都會存在較大的差異,日志法獲得的異構(gòu)數(shù)據(jù)庫就可能差生很多新問題;日志法會加劇DBA日常數(shù)據(jù)庫管理工作的負(fù)擔(dān),加大了業(yè)務(wù)系統(tǒng)的運行強度。
四、控制表法
(1)原理:為每個要同步的源表創(chuàng)建一個控制表,控制表只包含源表的主鍵字段和一些控制信息字段(更新時間、更新類型等),當(dāng)源表中的某條記錄發(fā)生變化時,同時添加或修改控制表相應(yīng)主鍵記錄。
(2)優(yōu)點:及時獲得同步對象的凈變化,運行和數(shù)據(jù)傳輸?shù)男瘦^高,占用系統(tǒng)存儲空間較小,管理方便;應(yīng)用過程中會自動保存更新時間,操作者等控制信息,避免了同步?jīng)_突問題。
(3)缺點:控制表法要依靠觸發(fā)器才來完成,適用范圍受到一定程度的限制。
五、API法
(1)原理:在應(yīng)用程序和數(shù)據(jù)庫之間引人一類中間件,由它提供一系列API,在API上來完成應(yīng)用程序?qū)?shù)據(jù)庫修改的同時,記錄下同步對象的變化序列。
(2)優(yōu)點:具備日志法的大多數(shù)優(yōu)點,如基本不會對業(yè)務(wù)系統(tǒng)的性能產(chǎn)生影響、操作過程中對應(yīng)用系統(tǒng)的占用率較低。
(3)缺點:不能捕獲不經(jīng)過API的操作所引起的數(shù)據(jù)變化;應(yīng)用程序的可移植性差。
六、影子表法
(1)原理:初始化數(shù)據(jù)庫時,為每一個同步對象表建立一個影子表,即作為一份當(dāng)時的拷貝,以后通過比較當(dāng)前的影子表與源表獲取變化信息。
(2)優(yōu)點:適用范圍廣,移植性強,很適合解決異構(gòu)數(shù)據(jù)庫同步。
(3)缺點:占用空間大,不能獲得中間操作信息和控制信息;每次捕獲變化都要掃描源表和影子表,效率較低。
通過上文的分析可以看出,不同差異數(shù)據(jù)捕獲方法其特色較為明顯,在實際應(yīng)用中根據(jù)系統(tǒng)及采用同步方案的特點選擇合適的捕獲方法可以有效的提高數(shù)據(jù)捕獲的遷移效率,而且將對原有業(yè)務(wù)系統(tǒng)運行的負(fù)面影響降到最低。本文分析的是最為基礎(chǔ)的幾種數(shù)據(jù)捕獲方法,現(xiàn)實應(yīng)用中很多方法都是在此基礎(chǔ)上優(yōu)化或組合而來的,如觸發(fā)器與API相結(jié)合、觸發(fā)器與控制表結(jié)合。
【參考文獻(xiàn)】
[1]徐富亮,周祖德.變化數(shù)據(jù)捕獲技術(shù)研究[J].武漢理工大學(xué)學(xué)報(信息與管理工程版),2009(05).
[2]鄭祥云,張娟,葛文庚.數(shù)據(jù)庫同步中差異數(shù)據(jù)捕獲方案設(shè)計與實現(xiàn)[J].電腦知識與技術(shù),2009(07).
[3]楊鵬,楊海濤,王正華.異構(gòu)數(shù)據(jù)庫變化捕捉及同步策略[J].計算機工程,2008(16).
[4]楊亞楠,閆健卓,方麗英.“基于SQL重現(xiàn)法”變化捕獲方法的研究與實現(xiàn)[J].微計算機信息,2006(36).