《BI專案筆記》增量ETL資料抽取的策略及方法

2022-05-30 18:54:13 字數 1594 閱讀 5086

增量抽取 增量抽取只抽取自上次抽取以來資料庫中要抽取的表中新增或修改的資料。在etl使用過程中。增量抽取較全量抽取應用更廣。如何捕獲變化的資料是增量抽取的關鍵。對捕獲方法一般有兩點要求:準確性,能夠將業務系統中的變化資料按一定的頻率準確地捕獲到;效能,不能對業務系統造成太大的壓力,影響現有業務。目前增量資料抽取中常用的捕獲變化資料的方法有:

a.觸發器:在要抽取的表上建立需要的觸發器,一般要建立插入、修改、刪除三個觸發器,每當源表中的資料發生變化,就被相應的觸發器將變化的資料寫入乙個臨時表,抽取執行緒從臨時表中抽取資料,臨時表中抽取過的資料被標記或刪除。觸發器方式的優點是資料抽取的效能較高,缺點是要求業務表建立觸發器,對業務系統有一定的影響。

b.時間戳:它是一種基於快照比較的變化資料捕獲方式,在源表上增加乙個時間戳字段,系統中更新修改表資料的時候,同時修改時間戳字段的值。當進行資料抽取時,通過比較系統時間與時間戳字段的值來決定抽取哪些資料。有的資料庫的時間戳支援自動更新,即表的其它欄位的資料發生改變時,自動更新時間戳字段的值。有的資料庫不支援時間戳的自動更新,這就要求業務系統在更新業務資料時,手工更新時間戳字段。同觸發器方式一樣,時間戳方式的效能也比較好,資料抽取相對清楚簡單,但對業務系統也有很大的傾入性(加入額外的時間戳字段),特別是對不支援時間戳的自動更新的資料庫,還要求業務系統進行額外的更新時間戳操作。另外,無法捕獲對時間戳以前資料的delete和update操作,在資料準確性上受到了一定的限制。

c.全表比對:典型的全表比對的方式是採用md5校驗碼。etl工具事先為要抽取的表建立乙個結構類似的md5臨時表,該臨時表記錄源表主鍵以及根據所有欄位的資料計算出來的md5校驗碼。每次進行資料抽取時,對源表和md5臨時表進行md5校驗碼的比對,從而決定源表中的資料是新增、修改還是刪除,同時更新md5校驗碼。md5方式的優點是對源系統的傾入性較小(僅需要建立乙個md5臨時表),但缺點也是顯而易見的,與觸發器和時間戳方式中的主動通知不同,md5方式是被動的進行全表資料的比對,效能較差。當表中沒有主鍵或唯一列且含有重覆記錄時,md5方式的準確性較差。

d.日誌對比:通過分析資料庫自身的日誌來判斷變化的資料。oracle的改變資料捕獲(cdc,changeddatacapture)技術是這方面的代表。cdc特性是在oracle9i資料庫中引入的。cdc能夠幫助你識別從上次抽取之後發生變化的資料。利用cdc,在對源表進行insert、update或delete等操作的同時就可以提取資料,並且變化的資料被儲存在資料庫的變化表中。這樣就可以捕獲發生變化的資料,然後利用資料庫檢視以一種可控的方式提供給目標系統。cdc體系結構基於發布者/訂閱者模型。發布者捕捉變化資料並提供給訂閱者。訂閱者使用從發布者那裡獲得的變化資料。通常,cdc系統擁有乙個發布者和多個訂閱者。發布者首先需要識別捕獲變化資料所需的源表。然後,它捕捉變化的資料並將其儲存在特別建立的變化表中。它還使訂閱者能夠控制對變化資料的訪問。訂閱者需要清楚自己感興趣的是哪些變化資料。乙個訂閱者可能不會對發布者發布的所有資料都感興趣。訂閱者需要建立乙個訂閱者檢視來訪問經發布者授權可以訪問的變化資料。cdc分為同步模式和非同步模式,同步模式實時的捕獲變化資料並儲存到變化表中,發布者與訂閱都位於同一資料庫中。非同步模式則是基於oracle的流複製技術。

綜上所述:本bi專案中採取時間戳方式.

《BI專案筆記》增量ETL資料抽取的策略及方法

原文 bi專案筆記 增量etl資料抽取的策略及方法 增量抽取 增量抽取只抽取自上次抽取以來資料庫中要抽取的表中新增或修改的資料。在etl使用過程中。增量抽取較全量抽取應用更廣。如何捕獲變化的資料是增量抽取的關鍵。對捕獲方法一般有兩點要求 準確性,能夠將業務系統中的變化資料按一定的頻率準確地捕獲到 效...

ETL增量抽取方案

一 etl體系結構 資料庫 抽取 轉換 載入 目的資料來源 二 etl抽取方案 1 全量抽取 全量抽取類似於資料遷移或資料複製,它將資料來源中的表或檢視的資料原封不動的從資料庫中抽取出來,並轉換成自己的etl工具可以識別的格式,全量抽取比較簡單。全量抽取一般只在系統初始化時使用,全量一次後,就要每天...

ETL增量抽取方式

增量是以乙個時間段為計量單位,記錄該段時間內較以前增加的資料記錄。增量抽取是將該段時間內增長的記錄查詢出來。增量抽取一般有三種抽取模式,用於捕獲源系統新增的資料到系目標庫中 1 時間戳方式,要求源表中存在乙個或多個字段 時間戳 其值隨著新紀錄的增加而不斷增加,執行資料抽取時,程式通過時間戳對資料進行...