專利名稱:一種高效的增量數(shù)據(jù)捕獲方法
技術領域:
本發(fā)明涉及數(shù)據(jù)庫技術領域,尤其涉及一種高效的增量數(shù)據(jù)捕獲方法,目的是提升大數(shù)據(jù)量的增量數(shù)據(jù)的捕獲效率。
背景技術:
在數(shù)據(jù)集成領域,為提升數(shù)據(jù)處理效率,增量數(shù)據(jù)捕獲已成為其中不可缺少的關鍵技術。目前業(yè)界比較常用的增量捕獲方式主要有基于時間戳的方式、基于數(shù)據(jù)庫觸發(fā)器的方式、基于數(shù)據(jù)庫日志的方式、傳統(tǒng)的快照表比對方式。時間戳方式,性能雖佳,但要求源數(shù)據(jù)必須有時間戳字段,而且這種方式也捕獲不到被刪除的數(shù)據(jù);數(shù)據(jù)庫觸發(fā)器方式,對源系統(tǒng)的業(yè)務處理性能影響比較大而且不穩(wěn)定;數(shù)據(jù)庫日志方式,實現(xiàn)成本較高;傳統(tǒng)的快照表比對方式,逐行比對,效率太差。下表是上述幾種增量捕獲方式的對比情況。
^:捕獲方式 I捕獲性能I對源系統(tǒng)影響I實現(xiàn)成本I其他局限性
時間戳方式較好很小_較低不能處理刪除操作的數(shù)據(jù)
觸發(fā)器方式較好很大_較低管理不方便_
數(shù)據(jù)庫日志較好很小_較高必須開啟數(shù)據(jù)庫日志
¥羅快照表 I差I很小I較低當然還有一些特定數(shù)據(jù)庫提供的方式,比如Oracle、SQL SERVER的⑶C,雖性能有比較大的提升,但配置復雜,且不支持比較舊的版本。所以尋找一種增量捕獲性能較好、對源系統(tǒng)侵入性較小且實現(xiàn)成本不高的增量捕獲技術是數(shù)據(jù)集成領域迫切需要的。
發(fā)明內(nèi)容
本發(fā)明的技術任務是針對上述現(xiàn)有技術的不足,提出一種高效的增量數(shù)據(jù)捕獲方法,這是一種新的快照比對方式。該方法通過分解數(shù)據(jù)進而分解數(shù)據(jù)比對過程,并行處理,能夠提高快照比對方式的增量捕獲性能,并且這種方法對源系統(tǒng)幾乎沒有侵入性,實現(xiàn)簡單。本發(fā)明的目的是按以下方式實現(xiàn)的,包括以下三個步驟:
1)對源數(shù)據(jù)創(chuàng)建新版本的快照;
2)新舊版本的快照數(shù)據(jù)比對;
3)釋放源數(shù)據(jù)的舊版本的快照;
在步驟I)中,對源數(shù)據(jù)創(chuàng)建新版本的快照,進一步說明,根據(jù)增量捕獲的結(jié)構規(guī)則,創(chuàng)建符合規(guī)則的新版本的快照數(shù)據(jù);
在步驟2)中,比對新舊版本的快照數(shù)據(jù),它還包括以下的步驟:
(1)捕獲增加Insert操作類型的數(shù)據(jù),進一步說,根據(jù)數(shù)據(jù)表的主鍵信息,識別出只在新版本快照中存在的數(shù)據(jù),即為增加操作類型的數(shù)據(jù);
(2)捕獲刪除Delete操作類型的數(shù)據(jù),進一步說,根據(jù)數(shù)據(jù)表的主鍵信息,識別出只在舊版本快照中存在的數(shù)據(jù),即為刪除操作類型的數(shù)據(jù);
(3)捕獲修改Update操作類型的數(shù)據(jù),進一步說,根據(jù)增量捕獲中設置的拆分規(guī)則,分別把新、舊版本的快照數(shù)據(jù),不包括增加、刪除操作類型的數(shù)據(jù)分解成若干個數(shù)據(jù)塊,新、舊版本的數(shù)據(jù)塊是一一對應的,以下把對應的新、舊版本的數(shù)據(jù)塊稱為一對數(shù)據(jù)塊;把對每一對數(shù)據(jù)塊的比對處理初始化為一個任務,加載到任務池中;按照任務池的隊列順序依次并行執(zhí)行任務;當任務執(zhí)行完畢時,在任務池中注銷該任務,再進一步說,每個任務的執(zhí)行過程是,先分別對每個數(shù)據(jù)庫逐行使用MD5算法進行計算,然后對計算后的數(shù)據(jù)進行逐行比對,主鍵相同但MD5值不相同的數(shù)據(jù)就是修改操作類型的數(shù)據(jù);
為了更高效地進行增量數(shù)據(jù)捕獲,根據(jù)增量捕獲的運行終端的資源可利用率決定任務池中各任務的執(zhí)行狀態(tài),當增量捕獲的運行終端的資源可利用率很低時,暫停執(zhí)行任務池中余下的任務;當增量捕獲的運行終端的可利用資源比較高時,按照最優(yōu)資源利用原則依次執(zhí)行余下的任務;
在步驟3)中,釋放源數(shù)據(jù)的舊版本的快照,進一步說明,由于舊版本的快照數(shù)據(jù)在以后的增量捕獲活動中不再使用,為節(jié)約資源,將其釋放掉。本發(fā)明的優(yōu)異效果:該方法通過分解數(shù)據(jù)進而分解數(shù)據(jù)比對過程,并行處理,能夠提高快照比對方式的增量捕獲性能,并且這種方法對源系統(tǒng)幾乎沒有侵入性,實現(xiàn)簡單。
圖1是增量數(shù)據(jù)捕獲過程的整體流程示意 圖2是快照數(shù)據(jù)比對流程示意圖。
具體實施例方式為使本發(fā)明的意圖、特征和優(yōu)點更通俗易懂,下面將結(jié)合附圖和具體實施方式
對本發(fā)明作進一步詳細的說明。包括如下三個步驟: O:對源數(shù)據(jù)創(chuàng)建新版本的快照;
2):新舊版本的快照數(shù)據(jù)比對;
3):釋放源數(shù)據(jù)的舊版本的快照;
在步驟I)中,根據(jù)增量捕獲數(shù)據(jù)的結(jié)構,對源數(shù)據(jù)創(chuàng)建新版本的快照;
在步驟2)中,為實現(xiàn)快照數(shù)據(jù)比對,還包括以下步驟:
1)通過比對新、舊版本的快照,找出只在新版本快照中有的數(shù)據(jù)即為增加(Insert)類型的數(shù)據(jù);
2)通過比對新、舊版本的快照,找出只在舊版本快照中有的數(shù)據(jù)即為刪除(Delete)類型的數(shù)據(jù);
3)把新、舊版本中的快照數(shù)據(jù)(不包括上述中的增加、刪除類型的數(shù)據(jù))按照增量捕獲設定的規(guī)則拆分成多個數(shù)據(jù)塊,把對每一對數(shù)據(jù)塊的比對處理初始化為一個任務,把任務加載到任務池中并行執(zhí)行,任務池中所有的任務執(zhí)行完成后,比對處理即結(jié)束,比對出的結(jié)果即為修改(Update)類型的數(shù)據(jù)。實施例:
獲取某ERP系統(tǒng)中SaleOrder數(shù)據(jù)表中的增量數(shù)據(jù),其中SaleOrder的主鍵字段是ID。其中增量捕獲設置的規(guī)則是SaleOrder表中所有的字段,且不設置捕獲范圍;數(shù)據(jù)量較大時,允許數(shù)據(jù)分解。
整體流程參照附圖1。首先根據(jù)SaleOrder的結(jié)構,創(chuàng)建快照表Sale0rderSnapV2。然后,比對新版本的快照表(Sale0rderSnapV2)與舊版本的快照表(SaleOrderSnapVl)的差異數(shù)據(jù),如附圖2所示。識別出只在Sale0rderSnapV2表中的數(shù)據(jù),即SaleOrder數(shù)據(jù)表中最近增加的數(shù)據(jù);識別出只在SaleOrderSnapVl表中的數(shù)據(jù),即SaleOrder數(shù)據(jù)表中最近被刪除的數(shù)據(jù);最后比對出SaleOrder數(shù)據(jù)表中最近修改的數(shù)據(jù)。進一步說明,包含以下步驟:
①分別把新版本的快照表(Sale0rderSnapV2)中的數(shù)據(jù)與舊版本的快照表(SaleOrderSnapVl)中的數(shù)據(jù)按照規(guī)則分解為若干對數(shù)據(jù)塊;
②把對每一對數(shù)據(jù)塊的比對處理初始為一個任務;
③把任務加載到數(shù)據(jù)比對任務池中;
④按照先進先出的原則依次執(zhí)行任務池中的任務。在執(zhí)行每一個任務之前,要判斷當前運行終端的資源可利用率,當資源可利用率較低時暫停執(zhí)行任務池余下的任務,等資源利用率達到最佳狀態(tài)再執(zhí)行任務池中余下的任務;
⑤任務執(zhí)行完畢時,從任務池中注銷該任務。所有的增量數(shù)據(jù)(包括增加、刪除、修改)都識別出來后,刪掉舊版本的快照數(shù)據(jù)(SaleOrderSnapVI)。以上對本發(fā)明所提供的一種高效的增量數(shù)據(jù)捕獲方法,進行的詳細的描述。本發(fā)明的應用場景,主要針對大數(shù)據(jù)量的數(shù)據(jù)表進行快速的捕獲增量數(shù)據(jù)。除說明書所述的技術 特征外,均為本專業(yè)技術人員的已知技術。
權利要求
1.一種高效的增量數(shù)據(jù)捕獲方法,其特征在于包括以下三個步驟: 1)對源數(shù)據(jù)創(chuàng)建新版本的快照; 2)新舊版本的快照數(shù)據(jù)比對; 3)釋放源數(shù)據(jù)的舊版本的快照; 在步驟I)中,對源數(shù)據(jù)創(chuàng)建新版本的快照,進一步說明,根據(jù)增量捕獲的結(jié)構規(guī)則,創(chuàng)建符合規(guī)則的新版本的快照數(shù)據(jù); 在步驟2)中,比對新舊版本的快照數(shù)據(jù),它還包括以下的步驟: (1)捕獲增加Insert操作類型的數(shù)據(jù),進一步說,根據(jù)數(shù)據(jù)表的主鍵信息,識別出只在新版本快照中存在的數(shù)據(jù),即為增加操作類型的數(shù)據(jù); (2)捕獲刪除Delete操作類型的數(shù)據(jù),進一步說,根據(jù)數(shù)據(jù)表的主鍵信息,識別出只在舊版本快照中存在的數(shù)據(jù),即為刪除操作類型的數(shù)據(jù); (3)捕獲修改Update操作類型的數(shù)據(jù),進一步說,根據(jù)增量捕獲中設置的拆分規(guī)則,分別把新、舊版本的快照數(shù)據(jù),不包括增加、刪除操作類型的數(shù)據(jù)分解成若干個數(shù)據(jù)塊,新、舊版本的數(shù)據(jù)塊是一一對應的,以下把對應的新、舊版本的數(shù)據(jù)塊稱為一對數(shù)據(jù)塊;把對每一對數(shù)據(jù)塊的比對處理初始化為一個任務,加載到任務池中;按照任務池的隊列順序依次并行執(zhí)行任務;當任務執(zhí)行完畢時,在任務池中注銷該任務,再進一步說,每個任務的執(zhí)行過程是,先分別對每個數(shù)據(jù)庫逐行使用MD5算法進行計算,然后對計算后的數(shù)據(jù)進行逐行比對,主鍵相同但MD5值不相同的數(shù)據(jù)就是修改操作類型的數(shù)據(jù); 為了更高效地進行增量數(shù)據(jù)捕獲,根據(jù)增量捕獲的運行終端的資源可利用率決定任務池中各任務的執(zhí)行狀態(tài),當增量捕獲的運行終端的資源可利用率很低時,暫停執(zhí)行任務池中余下的任務;當增量捕獲的運行終端的可利用資源比較高時,按照最優(yōu)資源利用原則依次執(zhí)行余下的任務; 在步驟3)中,釋放源數(shù)據(jù)的舊版本的快照,進一步說明,由于舊版本的快照數(shù)據(jù)在以后的增量捕獲活動中不再使用,為節(jié)約資源,將其釋放掉。
全文摘要
本發(fā)明涉及的一種高效的增量數(shù)據(jù)捕獲方法,主要采用把源數(shù)據(jù)按照規(guī)則分解成若干數(shù)據(jù)塊并行比對的方法來實現(xiàn)增量數(shù)據(jù)的捕獲,旨在解決數(shù)據(jù)交換領域中增量數(shù)據(jù)抽取的問題,以達到快速、高效、準確捕獲增量數(shù)據(jù)的目的。該方法通過分解數(shù)據(jù)進而分解數(shù)據(jù)比對過程,并行處理,能夠提高快照比對方式的增量捕獲性能,并且這種方法對源系統(tǒng)幾乎沒有侵入性,實現(xiàn)簡單。
文檔編號G06F9/38GK103226466SQ201310148508
公開日2013年7月31日 申請日期2013年4月26日 優(yōu)先權日2013年4月26日
發(fā)明者岳現(xiàn)國 申請人:浪潮集團山東通用軟件有限公司