ETL增量抽取方式_第1頁
ETL增量抽取方式_第2頁
ETL增量抽取方式_第3頁
ETL增量抽取方式_第4頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、ETL增量抽取方式ETL增量抽?。阂獙崿F增量抽取,關鍵是如何準確快速的捕獲變化的數據。優(yōu)秀的增量抽取機制要求ETL能夠將業(yè)務系統(tǒng)中的變化數據按一定的頻率準確地捕獲到,同時不能對業(yè)務系統(tǒng)造成太大的壓力,影響現有業(yè)務。相對全量抽取而言,增量抽取的設計更復雜1、觸發(fā)器方式觸發(fā)器方式是普遍采取的一種增量抽取機制。該方式是根據抽取要求,在要被抽取的源表上建立插入、修改、刪除3個觸發(fā)器,每當源表中的數據發(fā)生變化,就被相應的觸發(fā)器將變化的數據寫入一個增量日志表,ETL的增量抽取則是從增量日志表中而不是直接在源表中抽取數據,同時增量日志表中抽取過的數據要及時被標記或刪除。為了簡單起見,增量日志表一般不存儲增量

2、數據的所有字段信息,而只是存儲源表名稱、更新的關鍵字值和更新操作類型(knsen、update或delete),ETL增量抽取進程首先根據源表名稱和更新的關鍵字值,從源表中提取對應的完整記錄,再根據更新操作類型,對目標表進行相應的處理。例如,對于源表為Oracle類型的數據庫,采用觸發(fā)器方式進行增量數據捕獲的過程如下:這樣,對表T的所有DML操作就記錄在增量日志表DML_LOG中,注意增量日志表中并沒有完全記錄增量數據本身,只是記錄了增量數據的來源。進行增量ETL時,只需要根據增量日志表中的記錄情況,反查源表得到真正的增量數據。Sql代碼1. (1)創(chuàng)建增量日志表DML_LOG:2.3. cr

3、eatetableDML_LOG(4.5. IDNUMBERprimarykey,/自增主鍵6.7. TABLENAMEVARCHAR2(200)/源表名稱8.9. RECORDIDNUMBER/源表增量記錄的主鍵值10.11. DMLTYPECHH(1)o/增量類型,I表示新增:U表示更新;D表示刪除12.13. EXECUTEDATEDATE/發(fā)生時間14.15. );16.17. (2)為DML_LOG創(chuàng)建一個序列SEQ_DML_LOGk,以便觸發(fā)器寫增量日志表時生成ID值。18.19. (3)針對要監(jiān)聽的每一張表,創(chuàng)建一個觸發(fā)器,例如對表Test創(chuàng)建觸發(fā)器如下:20.21. creat

4、eOrreplacetriggerTBEFOREINSERTORUPDATE22.23. ORDELETEONTforeachrow24.25. declare1dmltypevarchar2(1);26.27. begin28.29. ifINSERTINGthenl_dmltype:=I;30.31. elsifUPDATINGthenI_dml_type:=。tY;32.33. elsifDELETINGthenl_dml_type:=D;34.35. endif;36.37. ifDELETINGthen38.39. insertintoDML_LOG(ID,TABLE_NAMEREC

5、ORD-40.41. ID,EXECUTE_DATEDMLjYPE)42.43. values(seq_dml_log.nextval,Test,:old.ID,sysdate,44.45. l_dml_type);46.47. else48.49. insertintoDML_LOG(ID,TABLE_NAMERECORD_50.51. ID,EXECUTE_DAEDMLjYPE)52.53. values(seq_dml_log.nextval,。Test,:new.ID,sysdate,L54.55. tirol_type);56.57. endif;58.59. end;2、時間戳方式

6、時間戳方式是指增量抽取時,抽取進程通過比較系統(tǒng)時間與抽取源表的時間戳字段的值來決定抽取哪些數據。這種方式需要在源表上增加一個時間戳字段,系統(tǒng)中更新修改表數據的時候,同時修改時間戳字段的值。有的數據庫(例如SqlServer)的時間戳支持自動更新,即表的其它字段的數據發(fā)生改變時,時間戳字段的值會被自動更新為記錄改變的時刻。在這種情下,進行ETL實施時就只需要在源表加上時間戳字段就可以了。對于不支持時間戳自動更新的數據庫,這就要求業(yè)務系統(tǒng)在更新業(yè)務數據時,通過編程的方式手工更新時間戳字段。使用時間戳方式可以正常捕獲源表的插入和更新操作,但對于刪除操作則無能為力,需要結合其它機制才能完成。更新時間戳

7、:3、全表刪除插入方式全表刪除插入方式是指每次抽取前先刪除目標表數據,抽取時全新加載數據。該方式實際上將增量抽取等同于全量抽取。對于數據量不大,全量抽取的時間代價小于執(zhí)行增量抽取的算法和條件代價時,可以采用該方式。4、全表比對方式全表比對即在增量抽取時,ETL進程逐條比較源表和目標表的記錄,將新增和修改的記錄讀取出來。優(yōu)化之后的全部比對方式是采用MD5校驗碼,需要事先為要抽取的表建立一個結構類似的MD5臨時表,該臨時表記錄源表的主鍵值以及根據源表所有字段的數據計算出來的(回)MD5校驗碼,每次進行數據抽取時,對源表和MD5臨時表進行MD5校驗碼的比對,如有不同,進行update操作:如目標表沒

8、有存在該主鍵值,表示該記錄還沒有,則進行insert操作。然后,還需要對在源表中已不存在而目標表仍保留的主鍵值,執(zhí)行delete操作。5、日志表方式對于建立了業(yè)務系統(tǒng)的生產數據庫,可以在數據庫中創(chuàng)建業(yè)務日志表,當特定需要監(jiān)控的業(yè)務數據發(fā)生變化時,由相應的業(yè)務系統(tǒng)程序模塊來更新維護日志表內容。增量抽取時,通過讀日志表數據決定加載哪些數據及如何加載。日志表的維護需要由業(yè)務系統(tǒng)程序用代碼來完成。6、系統(tǒng)日志分析方式該方式通過分析數據庫自身的日志來判斷變化的數據。關系犁數據庫系統(tǒng)都會將所有的DML操作存儲在日志文件中,以實現數據庫的備份和還原功能。ETL增暈抽取進程通過對數據庫的日志進行分析,提取對相

9、關源表在特定時間后發(fā)生的DML操作信息,就可以得知自上次抽取時刻以來該表的數據變化情況,從而指導增量抽取動作。有些數據庫系統(tǒng)提供了訪問日志的專用的程序包(例如Oracle的LogMinder),使數據庫日志的分析工作得到大大簡化。7、特定數據庫方式(Oracle)以下介紹常見的針對特有數據庫系統(tǒng)的增景抽取方式。7.1Oracle改變數據捕獲(changeddatacapture,CDC方式:OracleCDC特性是在Oraele9i數據庫中引入的。CDC能夠幫助識別從上次抽取之后發(fā)生變化的數據。利用CDQ在對源表進行insert、upclate或delete等操作的同時就可以提取數據,并且變化

10、的數據被保存在數據庫的變化表中。這樣就可以捕獲發(fā)生變化的數據,然后利用數據庫視圖以一種可控的方式提供給ETL抽取進程,作為增量抽取的依據。CDC方式對源表數據變化情況的捕獲有兩種方式:同步CDC和異步CDG同步CDC使用源數據庫觸發(fā)器來捕獲變更的數據。這種方式是實時的,沒有任何延遲。當DML操作提交后,變更表中就產生了變更數據。異步CDC使用數據庫重做日志(redolog)文件,在源數據庫發(fā)生變更以后,才進行數據捕獲。7.2Oracle閃回查詢方式:Oracle9i以上版本的數據庫系統(tǒng)提供了閃回查詢機制,允許用戶查詢過去某個時刻的數據庫狀態(tài)。這樣,抽取進程可以將源數據庫的(BI)當前狀態(tài)和上次

11、抽取時刻的狀態(tài)進行對比,快速得出源表數據記錄的變化情況。8、比較和分析可見,ETL在進行增量抽取操作時,有以上各種機制可以選擇?,F從兼容性、完備性、性能和侵入性3個方面對這些機制的優(yōu)劣進行比較分析。數據抽取需要面對的源系統(tǒng),并不一定都是關系型數據庫系統(tǒng)。某個ETL過程需要從若干年前的遺留系統(tǒng)中抽取Excel或者CSV文本數據的情形是經常發(fā)牛的。這時,所有基于關系型數據庫產品的增量機制都無法工作,時間戳方式和全表比對方式可能有一定的利用價值,在最壞的情況下,只有放棄增量抽取的思路,轉而采用全表刪除插入方式。完備性方面,時間戳方式不能捕獲delete操作,需要結合其它方式一起使用。增量抽取的性能因

12、素表現在兩個方面,一是抽取進程本身的性能,二是對源系統(tǒng)性能的負面影響。觸發(fā)器方式、日志表方式以及系統(tǒng)日志分析方式由于不需要在抽取過程中執(zhí)行比對步驟,所以增量抽取的性能較佳。全表比對方式需要經過復雜的比對過程才能識別出更改的記錄,抽取性能最差。在對源系統(tǒng)的性能影響方面,觸發(fā)器方式由于是直接在源系統(tǒng)業(yè)務表上建立觸發(fā)器,同時寫臨時表,對于頻繁操作的業(yè)務系統(tǒng)可能會有一定的性能損失,尤其是當業(yè)務表上執(zhí)行批量操作時,行級觸發(fā)器將會對性能產生嚴重的影響;同步CDC方式內部采用觸發(fā)器的方式實現,也同樣存在性能影響的問題;全表比對方式和日志表方式對數據源系統(tǒng)數據庫的性能沒有任何影響,只是它們需要業(yè)務系統(tǒng)進行額外

13、的運算和數據庫操作,會有少許的時間損耗;時間戳方式、系統(tǒng)日志分析方式以及基于系統(tǒng)日志分析的方式(異步CDC和閃回查詢)對數據庫性能的影響也是非常小的。對數據源系統(tǒng)的侵入性是指業(yè)務系統(tǒng)是否要為實現增抽取機制做功能修改和額外操作,在這一點上,時間戳方式值得特別關注該方式除了要修改數據源系統(tǒng)表結構外,對于不支持時間戳字段自動更新的關系型數據庫產品,還必須要修改業(yè)務系統(tǒng)的功能,讓它在源表t執(zhí)行每次操作時都要顯式的更新表的時間戳字段,這在ETL實施過程中必須得到數據源系統(tǒng)高度的配合才能達到,并且在多數情況下這種要求在數據源系統(tǒng)看來是比較“過分”的,這也是時間戳方式無法得到廣泛運用的主要原因。另外,觸發(fā)器方式需要在源表上建立觸發(fā)器,這種在某些場合中也遭到拒絕。還有一些需要建立臨時表的方式,例如全表比對和日志表方式。可能因為開放給ETL進程的數據庫權限的限制而無法實施。同樣的情況也可能發(fā)生在基于系統(tǒng)日志分析的方式上,因為大多數的數據庫產品只允許特定組的用戶甚至只有DBA才能執(zhí)行日志分析。閃回杏詢在侵入性方面的影響是最小的。(旦)各種數據增量抽取機制的優(yōu)劣性綜合分析如表l所示。增量機制觸發(fā)器方式兼容性關系型數據庫完備性高抽取性能優(yōu)對源系統(tǒng)性能影響

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論