但是,在實施數據集成的過程中,由于不同用戶提供的數據可能來自不同的途徑,其數據內容、數據格式和數據質量千差萬別,有時甚至會遇到數據格式不能轉換或數據轉換格式后丟失信息等棘手問題,嚴重阻礙了數據在各部門和各應用系統中的流動與共享。因此,如何對數據進行有效的集成管理已成為增強企業商業競爭力的必然選擇。ETL是實現數據集成的主要技術。
ETL中三個字母分別代表的是Extract、Transform、Load,即抽取、轉換、加載。(1)數據抽取:從源數據源系統抽取目的數據源系統需要的數據;(2)數據轉換:將從源數據源獲取的數據按照業務需求,轉換成目的數據源要求的形式,并對錯誤、不一致的數據進行清洗和加工。(3)數據加載:將轉換后的數據裝載到目的數據源。
ETL原本是作為構建數據倉庫的一個環節,負責將分布的、異構數據源中的數據如關系數據、平面數據文件等抽取到臨時中間層后進行清洗、轉換、集成,最后加載到數據倉庫或數據集市中,成為聯機分析處理、數據挖掘的基礎。現在也越來越多地將ETL應用于一般信息系統中數據的遷移、交換和同步。一個簡單的ETL體系結構如圖1.1所示。
2.ETL中的關鍵技術
ETL過程中的主要環節就是數據抽取、數據轉換和加工、數據裝載。為了實現這些功能,各個ETL工具一般會進行一些功能上的擴充,例如工作流、調度引擎、規則引擎、腳本支持、統計信息等。
2.1 數據抽取
數據抽取是從數據源中抽取數據的過程。實際應用中,數據源較多采用的是關系數據庫。從數據庫中抽取數據一般有以下幾種方式。
(1)全量抽取
全量抽取類似于數據遷移或數據復制,它將數據源中的表或視圖的數據原封不動的從數據庫中抽取出來,并轉換成自己的ETL工具可以識別的格式。全量抽取比較簡單。
(2)增量抽取
增量抽取只抽取自上次抽取以來數據庫中要抽取的表中新增或修改的數據。在ETL使用過程中。增量抽取較全量抽取應用更廣。如何捕獲變化的數據是增量抽取的關鍵。對捕獲方法一般有兩點要求:準確性,能夠將業務系統中的變化數據按一定的頻率準確地捕獲到;性能,不能對業務系統造成太大的壓力,影響現有業務。目前增量數據抽取中常用的捕獲變化數據的方法有: a.觸發器:在要抽取的表上建立需要的觸發器,一般要建立插入、修改、刪除三個觸發器,每當源表中的數據發生變化,就被相應的觸發器將變化的數據寫入一個臨時表,抽取線程從臨時表中抽取數據,臨時表中抽取過的數據被標記或刪除。觸發器方式的優點是數據抽取的性能較高,缺點是要求業務表建立觸發器,對業務系統有一定的影響。
b.時間戳:它是一種基于快照比較的變化數據捕獲方式,在源表上增加一個時間戳字段,系統中更新修改表數據的時候,同時修改時間戳字段的值。當進行數據抽取時,通過比較系統時間與時間戳字段的值來決定抽取哪些數據。有的數據庫的時間戳支持自動更新,即表的其它字段的數據發生改變時,自動更新時間戳字段的值。有的數據庫不支持時間戳的自動更新,這就要求業務系統在更新業務數據時,手工更新時間戳字段。同觸發器方式一樣,時間戳方式的性能也比較好,數據抽取相對清楚簡單,但對業務系統也有很大的傾入性(加入額外的時間戳字段),特別是對不支持時間戳的自動更新的數據庫,還要求業務系統進行額外的更新時間戳操作。另外,無法捕獲對時間戳以前數據的delete和update操作,在數據準確性上受到了一定的限制。
c.全表比對:典型的全表比對的方式是采用MD5校驗碼。ETL工具事先為要抽取的表建立一個結構類似的MD5臨時表,該臨時表記錄源表主鍵以及根據所有字段的數據計算出來的MD5校驗碼。每次進行數據抽取時,對源表和MD5臨時表進行MD5校驗碼的比對,從而決定源表中的數據是新增、修改還是刪除,同時更新MD5校驗碼。MD5方式的優點是對源系統的傾入性較小(僅需要建立一個MD5臨時表),但缺點也是顯而易見的,與觸發器和時間戳方式中的主動通知不同,MD5方式是被動的進行全表數據的比對,性能較差。當表中沒有主鍵或唯一列且含有重復記錄時,MD5方式的準確性較差。
下一篇 CSS打造的超級鏈接懸停效果代碼