多源異構數(shù)據(jù)增量抽取的方法及裝置的制造方法
【技術領域】
[0001] 本發(fā)明涉及數(shù)據(jù)庫技術領域,具體地,涉及一種多源異構數(shù)據(jù)增量抽取的方法及 裝置。
【背景技術】
[0002] 隨著信息技術的發(fā)展,越來越多的業(yè)務數(shù)據(jù)被產(chǎn)生,對于企業(yè)來說,數(shù)據(jù)是企業(yè)的 財富,是一種重要的戰(zhàn)略資源。當企業(yè)積累了一定量的數(shù)據(jù)時,基于數(shù)據(jù)倉庫技術,對數(shù)據(jù) 進行挖掘分析,能夠從中發(fā)現(xiàn)很多有價值的信息。在數(shù)據(jù)倉庫的構建過程中,需要將各種分 布的、異構的數(shù)據(jù)源中的數(shù)據(jù)抽取后進行清洗、轉換和加載(Extraction Transformation& Load,ETL),最后進入到數(shù)據(jù)倉庫中。ETL是數(shù)據(jù)倉庫實施過程中非常重要的一個步驟,通常 占到數(shù)據(jù)倉庫整個開發(fā)時間的60%~80%左右。ETL處理抽取效率的高低、轉換質量的好 壞,直接影響著數(shù)據(jù)倉庫的建設和數(shù)據(jù)挖掘結果的有效性。根據(jù)抽取方式不同,ETL抽取過 程大體上分為全量抽取和增量抽取。全量抽取一般在數(shù)據(jù)倉庫剛剛建立或者數(shù)據(jù)倉庫尚未 存在數(shù)據(jù)的情況下使用,而且該過程的使用十分方便。增量抽取只是針對某個時間段內曾 有過操作的數(shù)據(jù)進行操作,相對于全量抽取,它是數(shù)據(jù)倉庫后期維護的重要組成部分。而 且,在數(shù)據(jù)集成領域,為提升數(shù)據(jù)處理效率,增量數(shù)據(jù)抽取已成為其中不可缺少的關鍵技 術。
[0003] 由于企業(yè)的許多業(yè)務數(shù)據(jù)所處的平臺和使用的數(shù)據(jù)源存在差異,造成不同地域的 業(yè)務數(shù)據(jù)庫中的增量數(shù)據(jù)難以抽取集成到統(tǒng)一的數(shù)據(jù)倉庫中,從而不能全面的提供準確的 業(yè)務數(shù)據(jù),也就不能為決策者給予所需要的信息。雖然現(xiàn)有的ETL工具可以對來自多數(shù)據(jù)源 的數(shù)據(jù)進行抽取、轉換和加載工作,但是在使用效率和操作性等方面存在很多不足,而且對 多地市分布的異構數(shù)據(jù)源不能完全支持使用,因此建立高效的支持多源異構的ETL增量抽 取過程對于后期進行業(yè)務數(shù)據(jù)挖掘非常重要。
[0004] 增量抽取需要快速而準確的獲取自上次抽取以來數(shù)據(jù)庫中要抽取的表中變化的 數(shù)據(jù),同時又不能對業(yè)務系統(tǒng)造成太大壓力。在ETL使用過程中,增量抽取的方式較全量抽 取應用更廣,實現(xiàn)過程也更加復雜。目前增量數(shù)據(jù)抽取常用的捕獲變化數(shù)據(jù)的方式有如下 幾種:
[0005] (1)觸發(fā)器方式
[0006] 觸發(fā)器方式的主要思想是通過激活觸發(fā)器達到捕獲變化數(shù)據(jù)的目的。這種方式在 要抽取的表上建立需要的觸發(fā)器,一般需要建立插入、修改和刪除三種觸發(fā)器。每當源表中 的數(shù)據(jù)發(fā)生變化,觸發(fā)器捕獲變更的數(shù)據(jù)并把數(shù)據(jù)保存到中間臨時表里,然后抽取線程將 這些變更的數(shù)據(jù)從臨時表里取出并加載到數(shù)據(jù)倉庫。
[0007] (2)時間戳方式
[0008] 時間戳方式主要是根據(jù)日期和時間來捕獲被操作過的記錄,該方式的主要思想是 通過時間戳的更新捕獲曾操作過的記錄。這種捕獲數(shù)據(jù)的方式需要源表中有時間戳字段或 者可以增加時間戳字段。在數(shù)據(jù)抽取過程中,只需要將上次獲取的時間與當前源表記錄的 時間戳字段中的時間進行比對,獲取那些曾被操作過的數(shù)據(jù)加載到數(shù)據(jù)倉庫中。
[0009] (3)全表刪除方式
[0010] 全表刪除方式實現(xiàn)較簡單,該方式是在數(shù)據(jù)抽取之前,首先進行全表的數(shù)據(jù)刪除 操作,再將源表中的所有數(shù)據(jù)全部重新加載進來。
[0011] (4)全表比對方式
[0012] 全表比對方式是將源表中的記錄與目標表中的記錄進行逐一的比對,捕獲新增 的,不一致和不存在的數(shù)據(jù),分別對應發(fā)生增加、修改和刪除操作的記錄,然后根據(jù)比對結 果做出相應操作。目前,又衍生出一種新的全表比對方式,該方式需要為源表和目標表分別 創(chuàng)建一個結構一樣的MD5臨時表,該表存著兩個字段,一是對應源表和目標表中分別記錄的 主鍵值,另一個是將源表和目標表每條記錄的字段以及數(shù)據(jù)值經(jīng)過MD5分別加密后得到的 MD5校驗碼。在增量數(shù)據(jù)抽取時,首先,將源表與目標表中的記錄和數(shù)據(jù)進行MD5加密,接著, 將對應表中記錄的主鍵值和加密結果分別存放至對應的MD5臨時表。緊接著,比較兩個臨時 表中的主鍵值和校驗碼,如果兩臨時表主鍵值相同,MD5校驗碼比對結果不同,則說明源數(shù) 據(jù)發(fā)生變化,需要進行Update操作;如果源表對應的MD5臨時表中主鍵存在,而目標表對應 的MD5臨時表沒有該主鍵,則說明需要新增數(shù)據(jù),進行Insert操作;如果源表對應的MD5臨時 表中主鍵不存在,而目標表對應的MD5臨時表卻有該主鍵,說明該數(shù)據(jù)已經(jīng)被刪除,則進行 Delete 操作。
[0013] (5)日志表方式
[0014] 對于生產(chǎn)數(shù)據(jù)庫,可以創(chuàng)建一個業(yè)務日志表,用于記錄特定的業(yè)務數(shù)據(jù)的變化情 況。當進行增量數(shù)據(jù)抽取時,只需要讀取業(yè)務日志表中的數(shù)據(jù),繼而捕獲變化的數(shù)據(jù)以及相 應的操作。
[0015] (6)事務日志分析方式
[0016] 事務日志分析方式就是通過分析數(shù)據(jù)庫本身的日志文件來捕獲變化數(shù)據(jù)從而完 成增量數(shù)據(jù)抽取。在增量抽取過程中,根據(jù)指定的時間,獲取源數(shù)據(jù)庫的日志文件中數(shù)據(jù)操 縱語言記錄(DDL)的信息,得到最近一次增量抽取之后所進行的所有操作,再根據(jù)這些信息 對數(shù)據(jù)倉庫進行相應的操作來完成本次的增量抽取。
[0017] (7)數(shù)據(jù)庫捕獲方式(CDC)
[0018] 數(shù)據(jù)庫捕獲方式的原理是通過分析數(shù)據(jù)庫自身的日志來判斷變化的數(shù)據(jù)。Oracle 針對變化的數(shù)據(jù)引入了變化數(shù)據(jù)捕獲CDC(Change Data Capture)方式。CDC可以自動捕獲 到最近一次數(shù)據(jù)抽取之后被操作過的記錄,并且在對源庫中的數(shù)據(jù)表插入、更新和刪除操 作后,將操作的數(shù)據(jù)提取到變更表中,最后使用可控的方式利用視圖提供給數(shù)據(jù)倉庫完成 數(shù)據(jù)抽取。
[0019] 下面分別對上面提到的7種變化數(shù)據(jù)捕獲方法分析各自的不足:
[0020] (1)觸發(fā)器方式需要在源業(yè)務系統(tǒng)中建立三種觸發(fā)器,需要對源數(shù)據(jù)庫進行修改, 如果數(shù)據(jù)的變化十分頻繁,對系統(tǒng)性能開銷會造成很大壓力,而且用戶一般不允許修改源 數(shù)據(jù)庫。
[0021] (2)時間戳方式實現(xiàn)較簡單,但是這種方法無法捕獲到數(shù)據(jù)的刪除操作,不能支持 表被物理刪除的場景。另外,源數(shù)據(jù)庫中的表并不完全都具有時間戳字段,所以時間戳方式 在數(shù)據(jù)抽取的完備性上不足,數(shù)據(jù)準確性也不能得到保證。
[0022] (3)全表刪除方式的實現(xiàn)是最簡單的,但是這種方式只適用于對抽取時間不嚴格 或者數(shù)據(jù)量較小的場景,對于處理大數(shù)據(jù)量,顯然時間的消耗是不能接受的。
[0023] (4)全表比對方式的規(guī)則十分簡單且容易實現(xiàn),而且對源表結構沒有侵入性,但是 在實施過程中需要進行一一比對,在性能上相對來說比較差。
[0024] (5)日志表方式抽取的規(guī)則方便而簡單,對源表結構沒有侵入性,但是日志表需要 在建表初期由用戶建立,這種方式對用戶的技術水平要求過高,而且對系統(tǒng)的開銷很大,在 性能上也不是最佳的方式,后期維護麻煩。
[0025] (6)事務日志分析方式和日志表方式類似,雖然它擁有自己的系統(tǒng)事務日志而不 需要用戶去建立,但是性能也不是最佳的。
[0026] (7)數(shù)據(jù)庫捕獲方式自行實現(xiàn)ETL過程,但由于業(yè)務系統(tǒng)數(shù)據(jù)庫版本與產(chǎn)品不統(tǒng) 一,實現(xiàn)過程相對復雜,并且需要深入研究方能實現(xiàn),CDC產(chǎn)品推出時間短,存在一些BUG., 暫時無法推廣使用。
[0027] 通過上述可知,現(xiàn)有數(shù)據(jù)增量抽取的方案,準確率和效率低,以及完備性不足。
【發(fā)明內容】
[0028] 本發(fā)明實施例提供了一種多源異構數(shù)據(jù)增量抽取的方法及裝置,用以提高增量抽 取的準確率,效率以及完備性。
[0029] -方面,本發(fā)明實施例提供了一種多源異構數(shù)據(jù)增量抽取的方法,用以提高增量 抽取的準確率,效率以及完備性,該方法包括:
[0030] 解析源數(shù)據(jù)庫事務日志,從解析結果中獲取源數(shù)據(jù)庫中變化數(shù)據(jù)表的主鍵信息、 數(shù)據(jù)操作類型和操作時間戳信息;
[0031 ]根據(jù)主鍵信息、數(shù)據(jù)操作類型和操作時間戳信息,確定增量變化的數(shù)據(jù),將增量變 化的數(shù)據(jù)抽取到數(shù)據(jù)倉庫中。
[0032] 另一方面,本發(fā)明實施例還提供了一種多源異構數(shù)據(jù)增量抽取的裝置,用以提高 增量抽取的準確率,效率以及完備性,該裝置包括:
[0033] 解析單元,用于從解析結果中獲取源數(shù)據(jù)庫中變化數(shù)據(jù)表的主鍵信息、數(shù)據(jù)操作 類型和操作時間戳信息;
[0034] 抽取單元,用于根據(jù)所述主鍵信息、數(shù)據(jù)操作類型和操作時間戳信息,確定增量變 化的數(shù)據(jù),將增量變化的數(shù)據(jù)抽取到數(shù)據(jù)倉庫中。
[0035]與現(xiàn)有技術中傳統(tǒng)的時間戳方式無法捕獲被物理刪除的數(shù)據(jù),以及目前的ETL工 具在抽取、轉換和加載工作中使用效率和操作性等方面存在很多不足,不能完全支持對多 地市分布的異構數(shù)據(jù)源進行抽取相比較,本發(fā)明實施例提供的技術方案,以數(shù)據(jù)庫事務日 志為基礎,首先解析源數(shù)據(jù)庫事務日志,獲取源數(shù)據(jù)庫事務日志的分析結果,從中可以得到 數(shù)據(jù)庫的具體變化數(shù)據(jù),從該具體變化數(shù)據(jù)中讀取主鍵信息、數(shù)據(jù)操作類型以及操作時間 戳信息等,再結合傳統(tǒng)的時間戳方式捕獲增量變化的數(shù)據(jù),最后根據(jù)操作類型字段進行批 量操作執(zhí)行增量抽取。通過解析數(shù)據(jù)庫事務日志,可以根據(jù)操作類型字段設置批量操作,節(jié)