(Extract-Transform-Load)技術是目前採用較多的數據交換技術之一,ETL實際上是數據抽取,數據轉換和數據加載三種操作的總稱。通常ETL操作發生在數據倉庫中,通過ETL工具從數據源中抽取需要的數據,根據需要的格式對數據進行格式轉換、清洗,去除冗餘數據,將不同格式存儲的數據進行格式統一,然後將加工處理後的數據加載到新的資料庫中進行存儲。
ETL技術也就是數據抽取,數據轉換和數據加載三種操作。通常ETL操作發生在數據倉庫中,通過ETL工具從數據源中抽取需要的數據,根據實際需要的數據格式,對原有數據進行數據格式轉換、數據清洗,剔除冗餘數據等操作,以使得不同格式存儲的數據能夠實現格式統一。這樣處理之後的數據會被加載到另外的新資料庫中進行存儲。
圖 ETL基本流程
1、數據抽取
數據抽取部分的主要功能是負責從數據源中抽取待加工的數據。數據抽取過程根據抽取方式的不同可以分為全量抽取和增量抽取兩種方式。全量抽取是指從源資料庫中一次性將數據抽取出來,集成到目標資料庫中去。這種抽取方式可以滿足對數據傳輸過程中一致性的要求,保證源資料庫中數據與目標資料庫中存儲數據的一致性。增量抽取方式所操作的數據對象都是數據規模較小的數據,這樣的數據對伺服器需求不高,因此採用增量抽取方式可以減輕伺服器和網絡帶寬的壓力。增量抽取方式一般會使用於在數據倉庫搭建之後的日常維護操作中。
2、數據轉換
數據轉換的過程是將上一步驟中抽取的數據進行清洗,並按照預先設定的一定規則轉換成目標資料庫能夠接受的同一標準格式。由於數據抽取步驟中得到的數據從不同的數據源產生,這些數據根據採用的資料庫不同也就會以不同的格式存儲。此外,不同來源的數據進行整合的過程中可能會產生衝突數據和冗餘數據等問題。這就需要在載入目標資料庫之前對數據進行清洗處理,使待載入的數據從格式和內容上實現正確和統一。
3、數據加載
數據加載的過程主要是將已經清洗過的數據裝載到目標數據倉庫的指定位置上去。根據數據規模的大小,處理方式也不同。對於少量的資料庫update操作,直接使用sql語句操作的方式實現,然而,對於批量數據載入請求需要使用專門的加載工具來實現,通過使用加載工具加載實現對數據的分割和異步載入。
ETL系統的設計思想是以工作流為控制調度中心,利用元數據信息保存和記錄ETL過程信息,定義ETL過程中各種轉換規則的工作以組件的形式存在,並提供可視化界面供用戶定義、修改ETL的流程,系統通過數據訪問模塊訪問數據源和數據目標。
將工作流技術和元數據技術應用到ETL工具中已經是目前ETL工具發展的一種趨勢。利用這兩種技術,ETL流程的靈活性和可控制性將大大提高,用戶可以根據需要自由的選擇數據清洗和數據轉換操作,並按照數據處理的流程靈活的編排所選擇的操作;同時ETL工具的可擴展性也得到增強,在工作流技術的支持下,所有的數據清洗和轉換操作都成為工作流活動的資源,因此工具可以根據需要靈活的添加清洗和轉換操作,從而擴展相應的處理能力。
圖 ETL體系架構
1、元數據管理
元數據是對ETL過程的形式化定義,它包括ETL流程信息的定義和ETL操作規則的定義兩個主要部分。流程信息主要記錄了ETL過程中包含的各種操作,以及操作之間的先後順序關係,操作規則信息主要記錄了每個操作的具體轉換規則設置,如過濾器的過濾條件,投影操作的欄位列表選擇等等。
圖 元數據管理
2、工作流引擎
為了提供靈活的控制調度能力,本系統構建輕量級工作流引擎,調度中心接收到由元數據管理模塊解析生成的流程定義數據,檢查ETL任務之間的依賴關係、轉發控制等關聯,從而確定任務執行的實際流程,並按照這個流程調度活動進行執行。
圖 ETL工作流引擎
3、ETL操作組件庫
ETL系統中,最終完成從數據源到數據目標的映射轉換的工作是由ETL操作組件來承擔的。一個功能健全的ETL操作組件庫,是ETL系統必備的部分。ETL系統操作部件以組件庫的形式發布,供工作流引擎調度執行,同時,操作組件遵循統一的接口開發,並添加到組件庫中,從而大大增強了系統的可擴展性。
三、ETL系統的實現
1、基於XML的元數據管理
在ETL系統中,元資料庫是一個基礎元素,它保存記錄了ETL過程中所需的各種輔助信息,是ETL過程正確執行的關鍵。元數據管理實現中,元數據信息以XML文件的形式保存,元數據中各種對象信息用一個節點表示,對象之間的關係,則在樹形層次關係中得以體現。元數據管理包括了內存對象到文件信息的編輯、更新以及文件信息到內存對象的解析、構造兩個部分。
2、輕量級的工作流引擎
工作流引擎對ETL流程的執行進行總體控制,是ETL系統的調度中心。工作流引擎負責從ETL流程定義形成的圖結構中,分析出各個階段中處於就緒狀態的任務,分配相應的資源,並啟動任務執行。
圖 工作流引擎對ETL流程的調度過程
3、基於資料庫引擎的ETL操作組件
基本資料庫引擎的ETL操作組件實現中,資料庫管理系統(DBMS)在作為數據存儲介質的同時,扮演數據轉換引擎的角色。ETL系統中的各種轉換映射規則,以SQL查詢的形式體現,SQL查詢可以用於任何構造過程,包括數據抽取、直接存儲、清洗過程和整個流程的映射規則信息傳送。
從ETL映射規則到SQL查詢的產生過程,由SQL生成器完成。生成器可以從元資料庫中讀取必要的參數和映射規則來創建一個SQL轉換。具體來說,一個映射元數據作為生成器的參數輸入,從而生成操作的SQL查詢。在這個過程中,所有的控制和檢查都應用於數據,因此,這些查詢不僅僅是對數據的修飾;它裝載數據模式結構和有效的值集。使用SQL查詢是因為它們易於理解,而且在DBMS中非常高效。現有的工具大都創建一系列的程序來完成轉換過程,對這些工具進行優化是相當不容易的。相反,SQL生成器使用查詢優化來得到高性能。
4、ETL系統的可擴展性與開放性
ETL系統的實現形成了wfProcess-wfActivity-ETLLib三層管理模式,從而實 現了ETL流程管理與操作組件庫的解耦,同時ETLLib定義了簡明規範的接口,在面對不斷變化的數據處理需求時,一方面可以遵循ETLLib接口,開發新的內置操作組件,擴展系統的處理功能;另一方面,對於特殊的小眾需求,用戶可自行開發符合接口規範的外部組件,並通過相關參數設置,將外部組件依附到wfActivity中,成為ETL流程的一環;內置組件的簡易擴展和對外部組件的支持,使ETL系統具備良好的可擴展性和開放性。
5、ETL系統對大數據環境的支持
近年來,大數據技術發展迅猛,以Hadoop為代表的業界主流技術日趨成熟和穩定,越來越多的企業和單位開始將生產和管理數據存儲在大數據平臺上,ETL系統操作組件庫增加了兩個實驗性的操作組件。
四、ETL和數據集成
ETL是數據倉庫獲取高質量數據的關鍵環節,是對分散在各業務系統中的現有數據進行提取、轉換、清洗和加載的過程,使這些數據成為商業智能系統需要的有用數據。ETL是數據集成的第一步,也是構建數據倉庫最重要的步驟。
圖 商業智能系統架構
-The end-
作者|天耀宏圖解決方案中心