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