一:數據抽取
數據抽取,是指從源數據系統抽取目的數據源系統需要的數據,這里的源數據源就是數據輸入的各種類型的數據庫(一般是關系型數據庫),目的數據源就是數據輸出的數據庫
數據抽取分為全量抽取和增量抽取。
二:全量抽取
全量抽取,類似於數據遷移或數據復制,他將數據源中的表或視圖原封不動的從數據庫中抽取出來,並轉換成自己的ETL工具可以識別的格式。
全量抽取比較簡單。-------具體抽取方式還待研究。
三:增量抽取
增量抽取,只抽取自上次抽取以來數據庫中要抽取的表中新增或修改的數據,在ETL使用過程中,增量抽取較全量抽取應用更廣,如何捕獲變化的數據是增量抽取的關鍵。
對捕獲方法一般有兩點要求:准確性,能夠將業務系統中變化的數據按照一定的頻率准確的捕獲到;
性能,不能對業務系統造成太大的壓力,影響現有業務系統。
四:增量抽取常用的捕獲變化數據的方法
1:觸發器(又稱快照式)---會降低源數據庫的性能,所以一般不會采取
介紹:在抽取的表上建立需要的觸發器,一般要建立插入,修改,刪除三個觸發器,每當源表中的數據發生變化,就被相應的觸發器將變化的數據寫入一個臨時表,抽取線程
從臨時表中抽取數據,臨時表中抽取過的數據被標記或是刪除。
----------------------------------------------------------------------------------------------------------------------------
增量抽取時的觸發器建立,針對三種觸發器,如何寫入臨時表,如何從臨時表中抽取,如何標記或者刪除臨時表數據。
----------------------------------------------------------------------------------------------------------------------------
優點:數據抽取的性能高,ETL加載規則簡單,速度快,不需要修改業務系統表結構,可以實現數據的遞增加載。
缺點:要求業務系統建立觸發器,對業務系統有一定的影響,容易對源數據庫構成威脅。(會降低數據庫的性能,所以一般不采用)
2:時間戳方式(比較常用)
介紹:它是一種基於快照比較的變化數據捕獲方式,在源表上增加一個時間戳字段,系統中更新修改表數據的時候,同時修改時間戳字段的值。當進行數據抽取時,通過比較上次
抽取時間與時間戳字段的值來決定抽取那些數據。有的數據庫的時間戳支持自動更新,即表的其他字段的數據發生變化時,自動更新時間戳字段。有的數據庫不支持時間戳的自動
更新,這就要求業務系統在更新業務數據時,手工更新時間戳字段。
---------------------------------------------------------------------------------------------------------------------------
通過什么方式來更新時間戳,如何比較抽取時間與源表時間戳字段,如何決定抽取那些數據,如何實現抽取。
---------------------------------------------------------------------------------------------------------------------------
優點:同觸發器方式一樣,時間戳方式的性能也比較好,ETL系統設計清晰,源數據抽取相對清楚簡單,可以實現數據的遞增加載。
缺點:時間戳維護需要由業務系統完成,對業務系統有很大的傾入性(加入額外的時間戳字段),特別是對不支持時間戳的自動更新的數據庫,還要求業務系統進行額外的更新時間戳
操作;另外,無法捕獲對時間戳以前數據的delete和update操作,在數據准確上受到一定的限制。
3:全表刪除插入方式
介紹:每次ETL操作均刪除目標表數據,由ETL全新加載數據。
優點:ETL加載規則簡單,速度快。
缺點:對於維表加外鍵不合適,當業務系統產生刪除數據時,綜合系統將不會記錄到所刪除的歷史數據,不可以實現數據的遞增加載;同時對於目標表所建立的關聯關系,需要重新
進行加載。
4:全表比對方式---性能較差
介紹:全表比對的方式是ETL工具事先為要抽取的表建立一個結構類似的臨時表,該臨時表記錄源表主鍵以及根據所有字段的數據計算出來,每次進行數據抽取時,對源表和臨時表
進行比對,如有不同,進行update操作,若目標表沒有該主鍵值,表示該記錄還沒有,則進行insert操作。
優點:對已有系統的表結構不產生影響,不需要修改業務操作程序,所有抽取工作由ETL完成,管理維護統一,可以實現數據的遞增加載,沒有風險。
缺點:ETL比較復雜,設計比較復雜,速度較慢,與觸發器和時間戳的主動通知的方式不同,全表比對方式是被動的進行全表數據比較,性能較差,當表中沒有主鍵或為一列且含有
重復記錄時,全表對比方式的准確性較差。
5:日志表方式---較為麻煩
介紹:在業務系統中添加系統日志表,當業務數據發生變化時,更新維護日志表內容,當作ETL加載時,通過讀日志表數據決定加載那些數據及如何加載。
優點:不需要修改業務系統表結構,源數據抽取清楚,速度較快,可以實現數據的遞增加載。
缺點:日志表維護需要由業務系統來完成,需要對業務系統業務操作程序做修改,記錄日志信息,日志表維護較為麻煩,對原有系統有較大影響,工作量大,改動較大,有一定的風險 。
數據抽取,是指從源數據系統抽取目的數據源系統需要的數據,這里的源數據源就是數據輸入的各種類型的數據庫(一般是關系型數據庫),目的數據源就是數據輸出的數據庫
數據抽取分為全量抽取和增量抽取。
二:全量抽取
全量抽取,類似於數據遷移或數據復制,他將數據源中的表或視圖原封不動的從數據庫中抽取出來,並轉換成自己的ETL工具可以識別的格式。
全量抽取比較簡單。-------具體抽取方式還待研究。
三:增量抽取
增量抽取,只抽取自上次抽取以來數據庫中要抽取的表中新增或修改的數據,在ETL使用過程中,增量抽取較全量抽取應用更廣,如何捕獲變化的數據是增量抽取的關鍵。
對捕獲方法一般有兩點要求:准確性,能夠將業務系統中變化的數據按照一定的頻率准確的捕獲到;
性能,不能對業務系統造成太大的壓力,影響現有業務系統。
四:增量抽取常用的捕獲變化數據的方法
1:觸發器(又稱快照式)---會降低源數據庫的性能,所以一般不會采取
介紹:在抽取的表上建立需要的觸發器,一般要建立插入,修改,刪除三個觸發器,每當源表中的數據發生變化,就被相應的觸發器將變化的數據寫入一個臨時表,抽取線程
從臨時表中抽取數據,臨時表中抽取過的數據被標記或是刪除。
----------------------------------------------------------------------------------------------------------------------------
增量抽取時的觸發器建立,針對三種觸發器,如何寫入臨時表,如何從臨時表中抽取,如何標記或者刪除臨時表數據。
----------------------------------------------------------------------------------------------------------------------------
優點:數據抽取的性能高,ETL加載規則簡單,速度快,不需要修改業務系統表結構,可以實現數據的遞增加載。
缺點:要求業務系統建立觸發器,對業務系統有一定的影響,容易對源數據庫構成威脅。(會降低數據庫的性能,所以一般不采用)
2:時間戳方式(比較常用)
介紹:它是一種基於快照比較的變化數據捕獲方式,在源表上增加一個時間戳字段,系統中更新修改表數據的時候,同時修改時間戳字段的值。當進行數據抽取時,通過比較上次
抽取時間與時間戳字段的值來決定抽取那些數據。有的數據庫的時間戳支持自動更新,即表的其他字段的數據發生變化時,自動更新時間戳字段。有的數據庫不支持時間戳的自動
更新,這就要求業務系統在更新業務數據時,手工更新時間戳字段。
---------------------------------------------------------------------------------------------------------------------------
通過什么方式來更新時間戳,如何比較抽取時間與源表時間戳字段,如何決定抽取那些數據,如何實現抽取。
---------------------------------------------------------------------------------------------------------------------------
優點:同觸發器方式一樣,時間戳方式的性能也比較好,ETL系統設計清晰,源數據抽取相對清楚簡單,可以實現數據的遞增加載。
缺點:時間戳維護需要由業務系統完成,對業務系統有很大的傾入性(加入額外的時間戳字段),特別是對不支持時間戳的自動更新的數據庫,還要求業務系統進行額外的更新時間戳
操作;另外,無法捕獲對時間戳以前數據的delete和update操作,在數據准確上受到一定的限制。
3:全表刪除插入方式
介紹:每次ETL操作均刪除目標表數據,由ETL全新加載數據。
優點:ETL加載規則簡單,速度快。
缺點:對於維表加外鍵不合適,當業務系統產生刪除數據時,綜合系統將不會記錄到所刪除的歷史數據,不可以實現數據的遞增加載;同時對於目標表所建立的關聯關系,需要重新
進行加載。
4:全表比對方式---性能較差
介紹:全表比對的方式是ETL工具事先為要抽取的表建立一個結構類似的臨時表,該臨時表記錄源表主鍵以及根據所有字段的數據計算出來,每次進行數據抽取時,對源表和臨時表
進行比對,如有不同,進行update操作,若目標表沒有該主鍵值,表示該記錄還沒有,則進行insert操作。
優點:對已有系統的表結構不產生影響,不需要修改業務操作程序,所有抽取工作由ETL完成,管理維護統一,可以實現數據的遞增加載,沒有風險。
缺點:ETL比較復雜,設計比較復雜,速度較慢,與觸發器和時間戳的主動通知的方式不同,全表比對方式是被動的進行全表數據比較,性能較差,當表中沒有主鍵或為一列且含有
重復記錄時,全表對比方式的准確性較差。
5:日志表方式---較為麻煩
介紹:在業務系統中添加系統日志表,當業務數據發生變化時,更新維護日志表內容,當作ETL加載時,通過讀日志表數據決定加載那些數據及如何加載。
優點:不需要修改業務系統表結構,源數據抽取清楚,速度較快,可以實現數據的遞增加載。
缺點:日志表維護需要由業務系統來完成,需要對業務系統業務操作程序做修改,記錄日志信息,日志表維護較為麻煩,對原有系統有較大影響,工作量大,改動較大,有一定的風險 。