摘 要:在傳統(tǒng)數(shù)據(jù)庫同步技術(shù)基礎(chǔ)上,針對數(shù)據(jù)集成系統(tǒng)的異構(gòu)性,研究了一種新的基于事務日志的數(shù)據(jù)同步模型。通過對異構(gòu)DBMS的事務日志進行分析,提出一種通用的事務日志的變化捕獲方法,結(jié)合數(shù)據(jù)庫的事務工作過程,在窗口機制的約束下將提取的增量數(shù)據(jù)按照統(tǒng)一的規(guī)范集成到共享數(shù)據(jù)庫形成全局模式,再將增量數(shù)據(jù)加載到共享端實現(xiàn)數(shù)據(jù)過濾和映射。實驗結(jié)果表明,在正確設置具體應用環(huán)境下的時間窗口時,該模型可有效降低數(shù)據(jù)同步的時間開銷,保證了數(shù)據(jù)一致性。
關(guān)鍵詞:異構(gòu)性;事務日志;數(shù)據(jù)變化捕獲;數(shù)據(jù)同步
引言
為了屏蔽異構(gòu)的應用系統(tǒng)在集成共享數(shù)據(jù)庫時造成的“信息孤島”局面,需要將異構(gòu)的數(shù)據(jù)副本(replica)集成到統(tǒng)一數(shù)據(jù)平臺,按照預處理規(guī)則完成數(shù)據(jù)變化捕獲、數(shù)據(jù)分發(fā)、數(shù)據(jù)轉(zhuǎn)儲與加載,以及沖突數(shù)據(jù)的檢測和解決,以向用戶提供統(tǒng)一的數(shù)據(jù)全局模式[1-2],實現(xiàn)數(shù)據(jù)的同步更新。
數(shù)據(jù)的同步更新方法中:文件傳輸方法[3]的缺點是效率和可靠性較差。數(shù)據(jù)復制方法[4]將主節(jié)點的數(shù)據(jù)更新副本拷貝到從節(jié)點并修改從節(jié)點上的副本,主要應用在具有高自治性的分布式數(shù)據(jù)庫系統(tǒng)中。數(shù)據(jù)變化捕獲[5](Change Data Capture,CDC)方法利用觸發(fā)器、時間戳機制,將數(shù)據(jù)更新記錄到CDC初始化時創(chuàng)建的表或者隊列進行發(fā)布。CDC方法在近幾年的數(shù)據(jù)同步領(lǐng)域獲得了關(guān)注,通過它不僅能獲得待同步副本對象的變化序列或當前映像,還能提供詳細的控制信息[6]。而CDC方式主要有下面幾種,其主要性能參數(shù)如表1所示[7-8]。
然而,上述所有CDC方法都不能完全實現(xiàn)實時、雙向和增量同步,文獻[9]基于數(shù)據(jù)庫日志的CDC方法可以實現(xiàn)對不同的日志類型進行分析,并利用應用程序接口讀取日志文件,分析了針對不同類型日志文件的可靠性讀取規(guī)則和方法,但是對數(shù)據(jù)變化捕獲算法缺乏深入的研究,而且缺少統(tǒng)一描述。文獻[10]的RTDWH是數(shù)據(jù)倉庫中的CDC方法,雖然可以保證數(shù)據(jù)更新的成功率,但是對事務處理性能耗損較大。
因此,文章提出一種異構(gòu)環(huán)境下的基于事務日志的數(shù)據(jù)同步模型(Transaction Log-based Data Synchronous Model,TLDS),從事務角度闡述了主要模塊的工作流程和原理。此外通過對事務日志的結(jié)構(gòu)進行深入分析,設計了基于事務日志的變化捕獲算法。最后進行了實驗并對結(jié)果進行分析,保證了數(shù)據(jù)更新效果的同時對系統(tǒng)的性能影響也有所降低。
1 TLDS模型
TLDS模型要達到如下功能:各業(yè)務子系統(tǒng)維護的共享數(shù)據(jù)能實時同步到共享數(shù)據(jù)庫中;對于已經(jīng)進入統(tǒng)一數(shù)據(jù)共享與交換平臺的數(shù)據(jù),可以提供自動實時同步或者按需手動同步。按照該功能需求,結(jié)合數(shù)據(jù)交互工具OGG的工作原理,設計如圖1的TLDS模型。
1.1 事務日志
事務日志記錄一系列事務對數(shù)據(jù)庫更新的日志序列,是維護數(shù)據(jù)完整性和一致性的重要依據(jù),包括所有數(shù)據(jù)操作語言(DML)和數(shù)據(jù)定義語言(DDL)的記錄。它以事務為單位持續(xù)寫入,記錄了在每個事務期間,對數(shù)據(jù)的更改及撤消更改所需的控制信息,包括事務開始(表示為
1.2 數(shù)據(jù)變化捕獲、傳輸、轉(zhuǎn)換與加載
(1)數(shù)據(jù)變化引起新事務產(chǎn)生,該新事務由LGWR寫入日志后,標識該日志記錄的LSN和該事務的TID會相繼自增。日志的提取操作從初始時刻的head file開始,如果用戶對數(shù)據(jù)庫進行如下的事務操作:
TX={
直至polltime1設置的時間段結(jié)束,停止事務日志對數(shù)據(jù)的繼續(xù)讀取,記錄這個事務日志的LSN號作為捕獲檢查點(capture checkpoint)。由于事務TX1和TX4最終只有
(2)數(shù)據(jù)序列在等到trail傳送隊列的緩存被寫滿或者到達指定的時間,即達到2.3節(jié)設置的窗口邊界值的條件之后,停止數(shù)據(jù)傳送,并記錄還未寫入trail傳送隊列的事務日志的LSN號作為傳輸檢查點(pump checkpoint)。已提交的TX事務操作段內(nèi)已經(jīng)提交的事務序列有TX2和TX3,如圖2所示,pump checkpoint寫在
(3)對已傳送的事務進行數(shù)據(jù)轉(zhuǎn)換與加載,trail傳送隊列以元
組的形式記錄數(shù)據(jù)更新信息,將他們被發(fā)送到目的端后,對更新信息的主鍵值以及更新的前、后像值經(jīng)過本地解析還原并創(chuàng)建出對應的SQL更新語句。利用數(shù)據(jù)庫的本地接口將這些SQL語句應用到目標端,實現(xiàn)目標DB的同步執(zhí)行。更新信息成功提交到數(shù)據(jù)庫后,也要記錄下這個事務日志的LSN號作為保留檢查點(replicat checkpoint)保存已經(jīng)完成本地應用的位置,保持數(shù)據(jù)的完整性。
1.3 窗口機制
文章引入窗口機制,對事務日志定義了事務窗口、用戶需求窗口、時間周期大小窗口和緩沖區(qū)窗口等以避免數(shù)據(jù)處理不協(xié)調(diào),而以時間周期窗口和緩沖區(qū)窗口較為常見。事務日志的關(guān)系如下:
(1)IF Ta.beginLSN (2)IF Tb.commitLSN 在以上條件下定義窗口的交替或者遷移。窗口的交替或者遷移可以由任何事件觸發(fā),觸發(fā)后產(chǎn)生事務集T={ti|Li∈tj,i∈LSN,j∈TId},即只要滿足: 兩個條件就能判定Ta,Tb∈Wk,即事務a和b都是屬于該窗口內(nèi)的,并且Wk.l和Wk.r分別表示其左右邊界,其中的a,b,k均為自然數(shù)。 2 實驗結(jié)果及分析 實驗環(huán)境:分別使用WIN環(huán)境下的SQL server 2000和Oracle 11gR2,通過Exp/Imp保持SourceD, TargetDB相關(guān)Schema中的初始數(shù)據(jù)一致;安裝OGG,對源數(shù)據(jù)庫的歸檔模式、最小附加日志模式和強制日志等參數(shù)進行設置;分別建立ggate測試用戶,添加manager管理服務;分別開啟復制隊列和同步隊列并添加檢查點表;開啟同步任務。實驗結(jié)果如表2所示。 結(jié)果及分析:根據(jù)上述結(jié)果,會發(fā)現(xiàn)日志文件規(guī)模影響到數(shù)據(jù)同步時間和同步發(fā)生頻率。日志文件規(guī)模較小時,同步發(fā)生頻率可以稍微偏高,日志分析工具的運行會影響數(shù)據(jù)庫效率,這種發(fā)生頻率主要應用在對實時性要求相對高的場合;但是日志文件規(guī)模設置較大時,又會出現(xiàn)數(shù)據(jù)同步時間過長(必須在晚上等非工作時間運行),主要應用到對數(shù)據(jù)實時性要求不高的場合。 3 前景展望 文章通過事務日志的分析,研究了一種TLDS模型,在忽略異構(gòu)數(shù)據(jù)庫的DBMS、數(shù)據(jù)模式、數(shù)據(jù)類型的基礎(chǔ)上,實現(xiàn)已有的業(yè)務系統(tǒng)和共享數(shù)據(jù)庫之間的數(shù)據(jù)同步,使數(shù)據(jù)在本地更改的同時傳送到其他業(yè)務節(jié)點上,并對該節(jié)點上的數(shù)據(jù)副本進行修改。下一步的工作是針對異構(gòu)數(shù)據(jù)源日志的可靠性讀取及相關(guān)的應用問題進行更加深入的研究。 參考文獻 [1]Pucciani G,Domenici A,Donno F,et al.A performance study on the synchronisation of heterogeneous Grid databases using CONStanza[J].Future Generation Computer Systems,2010,26(6):820-834. [2]Gustafsson T,Hansson J.Dynamic on-demand updating of data in real-time database systems[C].SAC '04 Proceedings of the 2004 ACM symposium on Applied computing. New York:ACM,2004. [3]張虎,董小社,伍衛(wèi)國,等.一種基于日志合并優(yōu)化的數(shù)據(jù)同步機制[J].小型微型計算機系統(tǒng),2006,27(12):2183-2188. [4]Saito Y,Shapiro M.Optimistic Replication[J].ACM Computing Surve ys (CSUR),2005,37(1):42-81. [5]Dan Snoddy,James Spyker,Mir Rupik,et al.Change Data Capture: what is it and how it impacts solution architecture[C].CASCON '09 Proceedings of the 2009 Conference of the Center for Advanced Studies on Collaborative Research.Riverton,New Jersey:IBM Corporat ion,2009. [6]許力,馬瑞新.基于快照比對的增量數(shù)據(jù)捕獲研究與實現(xiàn)[C].第三屆全國信息檢索與內(nèi)容安全學術(shù)會議,蘇州,2007. [7]劉勝,楊岳湘,鄧勁生,等.基于關(guān)鍵屬性比對的增量數(shù)據(jù)抽取方法[J].計算機工程與應用,2012,48(4):115-117. [8]張春玲,呂震宇,劉遵峰.基于虛擬日志壓縮的數(shù)據(jù)同步方案[J].計算機工程,2010,36(18):67-69. [9]鄒先霞,賈維嘉,潘久輝.基于數(shù)據(jù)庫日志的變化數(shù)據(jù)捕獲研究[J].小型微型計算機系統(tǒng),2012,33(3):532-536. [10]Shi Jin-gang, Bao Yu-bin, Leng Fang-ling, et al.Study on Log-Based Change Data Capture and Handling Mechanism in Real-Time Data Warehouse[C].Proceedings of 2008 International Conference on Computer Science and Software Engineering,Wuhan, Hubei:IEEE Conference Publications,2008.