數據抽取
出自 MBA智库百科(https://wiki.mbalib.com/)
目錄 |
數據抽取是指從源數據源系統抽取目的數據源系統需要的數據。實際應用中,數據源較多採用的是關係資料庫。
(一) 全量抽取
全量抽取類似於數據遷移或數據複製,它將數據源中的表或視圖的數據原封不動的從數 據庫中抽取出來,並轉換成自己的ETL 工具可以識別的格式。全量抽取比較簡單。
(二) 增量抽取
增量抽取只抽取自上次抽取以來資料庫中要抽取的表中新增或修改的數據。在ETL 使用過程中,增量抽取較全量抽取應用更廣。如何捕獲變化的數據是增量抽取的關鍵。對捕獲方法一般有兩點要求:準確性,能夠將業務系統中的變化數據按一定的頻率準確地捕獲到;性能,不能對業務系統造成太大的壓力,影響現有業務。目前增量數據抽取中常用的捕獲變化數據的方法有:
(a) 觸發器方式(又稱快照式)
在要抽取的表上建立需要的觸發器,一般要建立插入、修改、刪除三個觸發器,每當源表中的數據發生變化,就被相應的觸發器將變化的數據寫入一個臨時表,抽取線程從臨時表中抽取數據,臨時表中抽取過的數據被標記或刪除。 優點:數據抽取的性能高,ETL 載入規則簡單,速度快,不需要修改業務系統表結構,可以實現數據的遞增載入。 缺點:要求業務表建立觸發器,對業務系統有一定的影響,容易對源資料庫構成威脅。
(b) 時間戳方式
它是一種基於快照比較的變化數據捕獲方式,在源表上增加一個時間戳欄位,系統中更新修改表數據的時候,同時修改時間戳欄位的值。當進行數據抽取時,通過比較上次抽取時間與時間戳欄位的值來決定抽取哪些數據。有的資料庫的時間戳支持自動更新,即表的其它欄位的數據發生改變時,自動更新時間戳欄位的值。有的資料庫不支持時間戳的自動更新,這就要求業務系統在更新業務數據時,手工更新時間戳欄位。
優點:同觸發器方式一樣,時間戳方式的性能也比較好,ETL 系統設計清晰,源數據抽取相對清楚簡單,可以實現數據的遞增載入。
缺點:時間戳維護需要由業務系統完成,對業務系統也有很大的傾
入性(加入額外的時間戳欄位),特別是對不支持時間戳的自動更新的資料庫,還要求業務系統進行額外的更新時間戳操作;另外,無法捕獲對時間戳以前數據的delete和update 操作,在數據準確性上受到了一定的限制。
(c) 全表刪除插入方式
每次ETL 操作均刪除目標表數據,由ETL 全新載入數據。
優點:ETL 載入規則簡單,速度快。
缺點:對於維表加外鍵不適應,當業務系統產生刪除數據操作時,綜合資料庫將不會記錄到所刪除的歷史數據,不可以實現數據的遞增載入;同時對於目標表所建立的關聯關係,需要重新進行創建。
(d) 全表比對方式
全表比對的方式是ETL 工具事先為要抽取的表建立一個結構類似的臨時表,該臨時表記錄源表主鍵以及根據所有欄位的數據計算出來,每次進行數據抽取時,對源表和臨時表進行的比對,如有不同,進行Update 操作,如目標表沒有存在該主鍵值,表示該記錄還沒有,即進行Insert 操作。
優點:對已有系統表結構不產生影響,不需要修改業務操作程式,所有抽取規則由ETL完成,管理維護統一,可以實現數據的遞增載入,沒有風險。
缺點:ETL 比對較複雜,設計較為複雜,速度較慢。與觸發器和時間戳方式中的主動通知不同,全表比對方式是被動的進行全表數據的比對,性能較差。當表中沒有主鍵或唯一列且含有重覆記錄時,全表比對方式的準確性較差。
(e)日誌表方式
在業務系統中添加系統日誌表,當業務數據發生變化時,更新維護日誌表內容,當作ETL 載入時,通過讀日誌表數據決定載入那些數據及如何載入。 優點:不需要修改業務系統表結構,源數據抽取清楚,速度較快。可以實現數據的遞增載入。 缺點:日誌表維護需要由業務系統完成,需要對業務系統業務操作程式作修改,記錄日誌信息。日誌表維護較為麻煩,對原有系統有較大影響。工作量較大,改動較大,有一定風險。
(f) Oracle 變化數據捕捉(CDC 方式)
通過分析資料庫自身的日誌來判斷變化的數據。Oracle 的改變數據捕獲(CDC,Changed Data Capture)技術是這方面的代表。CDC 特性是在Oracle9i 資料庫中引入的。CDC 能夠幫助你識別從上次抽取之後發生變化的數據。利用CDC,在對源表進行insert、update 或 delete 等操作的同時就可以提取數據,並且變化的數據被保存在資料庫的變化表中。這樣就可以捕獲發生變化的數據,然後利用資料庫視圖以一種可控的方式提供給目標系統。CDC 體繫結構基於發佈/訂閱模型。發佈者捕捉變化數據並提供給訂閱者。訂閱者使用從發佈者那裡獲得的變化數據。通常,CDC 系統擁有一個發佈者和多個訂閱者。發佈者首先需要識別捕獲變化數據所需的源表。然後,它捕捉變化的數據並將其保存在特別創建的變化表中。它還使訂閱者能夠控制對變化數據的訪問。訂閱者需要清楚自己感興趣的是哪些變化數據。一個訂閱者可能不會對發佈者發佈的所有數據都感興趣。訂閱者需要創建一個訂閱者視圖來訪問經發佈者授權可以訪問的變化數據。CDC 分為同步模式和非同步模式,同步模式實時的捕獲變化數據並存儲到變化表中,發佈者與訂閱都位於同一資料庫中;非同步模式則是基於Oracle 的流複製技術。
優點:提供了易於使用的API 來設置CDC 環境,縮短ETL 的時間。不需要修改業務系統表結構,可以實現數據的遞增載入。
缺點:業務系統資料庫版本與產品不統一,難以統一實現,實現過程相對複雜,並且需深入研究方能實現。或者通過第三方工具實現,價格昂貴。