摘要:通過對(duì)基于數(shù)據(jù)倉(cāng)庫(kù)的ETL過程進(jìn)行的研究,提出了一種通用ETL過程的解決方案,為企業(yè)管理者的決策過程提供了有力支持,同時(shí)給出了一套完整的系統(tǒng)體系架構(gòu)。
關(guān)鍵詞:ETL;元數(shù)據(jù);管道—過濾器;數(shù)據(jù)倉(cāng)庫(kù)
中圖分類號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2008)26-1625-02
Design and Realization of Universal ETL Based on Data Warehouse
WANG Qiu-nan, ZHOU Lian-zhe
(Changchun University of Technology, Changchun 130000, China)
Abstract: Base on Data Warehouse this paper studies ETL, and brings forward a universal solution to the process of ETL. It provides a complete framework for enterprises.
Key words: ETL; metadata; pipeline; data warehouse
1 引言
數(shù)據(jù)倉(cāng)庫(kù)是近些年來在信息領(lǐng)域迅速發(fā)展起來的數(shù)據(jù)庫(kù)新技術(shù),主要是為企業(yè)管理者決策過程提供支持,它是基于主題的、集成的、時(shí)間相關(guān)的、非易失數(shù)據(jù)的集合[1]。數(shù)據(jù)倉(cāng)庫(kù)的概念很簡(jiǎn)單:使用所有現(xiàn)存數(shù)據(jù),通過清洗和轉(zhuǎn)換,從而提供有用的決策信息[2]。ETL是構(gòu)建數(shù)據(jù)倉(cāng)庫(kù)的重要過程,是數(shù)據(jù)整理階段的一個(gè)主要工具,它提供了數(shù)據(jù)倉(cāng)庫(kù)信息內(nèi)容的前期工作。通常情況下,ETL過程要占整個(gè)數(shù)據(jù)倉(cāng)庫(kù)構(gòu)建工作總量的60%~80%[3],從而可以看出ETL是構(gòu)建數(shù)據(jù)倉(cāng)庫(kù)的基礎(chǔ)與前提。本文主要對(duì)數(shù)據(jù)倉(cāng)庫(kù)中ETL過程進(jìn)行了研究,同時(shí)提出一種通用ETL工具的解決方案。
2 相關(guān)理論與技術(shù)
2.1 ETL的含義
ETL(Extract Transform Load,簡(jiǎn)稱ETL)是將數(shù)據(jù)從源操作型系統(tǒng)抽取、轉(zhuǎn)換并加載到數(shù)據(jù)倉(cāng)庫(kù)的過程。ETL過程就是數(shù)據(jù)流動(dòng)的過程,從不同的數(shù)據(jù)源流向不同的目標(biāo)數(shù)據(jù)庫(kù)。在這個(gè)過程中,數(shù)據(jù)的抽取、清洗、轉(zhuǎn)換和裝載形成串行或并行的過程。
2.2 ETL工具的主要分類
ETL工具主要分為三類:數(shù)據(jù)轉(zhuǎn)換引擎、通過復(fù)制捕獲數(shù)據(jù)以及代碼生成器。以數(shù)據(jù)轉(zhuǎn)換引擎為核心的ETL工具靈活性強(qiáng),提供最合適的數(shù)據(jù)轉(zhuǎn)換方法來實(shí)施完全更新和增量裝載,其功能涵蓋了整個(gè)ETL過程;通過復(fù)制捕獲數(shù)據(jù)的一類工具中大部分使用由數(shù)據(jù)庫(kù)管理系統(tǒng)維護(hù)的交易日志,在交易日志中捕獲的源系統(tǒng)的變化可以近乎實(shí)時(shí)地在數(shù)據(jù)轉(zhuǎn)換區(qū)域被復(fù)制,等待進(jìn)一步的處理;代碼生成器會(huì)創(chuàng)建3GL/4GL的數(shù)據(jù)抽取和轉(zhuǎn)換程序,這類工具直接處理數(shù)據(jù)的抽取、轉(zhuǎn)換和裝載。
2.3 元數(shù)據(jù)
元數(shù)據(jù)(Metadata)是關(guān)于數(shù)據(jù)的數(shù)據(jù),是以概念、主題或集團(tuán)等形式建立的信息結(jié)構(gòu),并且記錄數(shù)據(jù)對(duì)象的位置。在數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)中,元數(shù)據(jù)是指關(guān)于數(shù)據(jù)倉(cāng)庫(kù)的數(shù)據(jù),指在數(shù)據(jù)倉(cāng)庫(kù)建設(shè)過程中所產(chǎn)生的有關(guān)數(shù)據(jù)源定義、目標(biāo)定義,轉(zhuǎn)換規(guī)則等相關(guān)的關(guān)鍵數(shù)據(jù),同時(shí)元數(shù)據(jù)還包含關(guān)于數(shù)據(jù)含義的商業(yè)信息。元數(shù)據(jù)在數(shù)據(jù)倉(cāng)庫(kù)中處于一個(gè)非常重要的地位,是整個(gè)數(shù)據(jù)倉(cāng)庫(kù)運(yùn)行和維護(hù)的中心,它對(duì)數(shù)據(jù)倉(cāng)庫(kù)的設(shè)計(jì)、開發(fā)、維護(hù)和管理,對(duì)數(shù)據(jù)的組織信息查詢以及結(jié)果的理解都有重大作用[4]。
3 通用ETL過程的研究
3.1 ETL的需求和步驟
數(shù)據(jù)倉(cāng)庫(kù)中ETL的構(gòu)建過程是最具挑戰(zhàn)性、最耗時(shí)耗力的,其過程的主要步驟可以分成以下幾個(gè)方面:首先決定數(shù)據(jù)倉(cāng)庫(kù)中需要的所有的目標(biāo)數(shù)據(jù),同時(shí)確定所有的數(shù)據(jù)源(包括內(nèi)部和外部);其次,準(zhǔn)備從源到目標(biāo)數(shù)據(jù)元素的數(shù)據(jù)映像關(guān)系,從而建立全面的數(shù)據(jù)抽取規(guī)則;再次,確定數(shù)據(jù)轉(zhuǎn)換和清洗規(guī)則,并為聚集表制訂計(jì)劃,組織數(shù)據(jù)緩存區(qū)域和檢測(cè)工具;然后,為所有的數(shù)據(jù)裝載編寫規(guī)則;最后,建立緯度表的ETL和事實(shí)表的ETL。
3.2 ETL過程主要技術(shù)難點(diǎn)和解決方案
ETL的整體架構(gòu)如圖1所示。
1)平臺(tái)的無關(guān)性:平臺(tái)無關(guān)性是評(píng)價(jià)ETL工具的一個(gè)重要指標(biāo),JAVA語言“一處編寫,處處運(yùn)行”的優(yōu)勢(shì)是解決系統(tǒng)平臺(tái)無關(guān)性的一個(gè)較好的解決方案;
2)可擴(kuò)展性:系統(tǒng)的可擴(kuò)展性對(duì)于軟件來說至關(guān)重要,應(yīng)用面向?qū)ο蟮姆治龊驮O(shè)計(jì),充分運(yùn)用面向?qū)ο蠓椒ㄖ械睦^承、封裝和多態(tài)等特性進(jìn)行系統(tǒng)的設(shè)計(jì)和開發(fā);
3)異構(gòu)數(shù)據(jù)源訪問:JDBC(Java Database Connection,Java數(shù)據(jù)庫(kù)連接)作為Java平臺(tái)的一個(gè)標(biāo)準(zhǔn)組成部分,是根據(jù)“與平臺(tái)無關(guān)”的基本原則而設(shè)計(jì)的,對(duì)獨(dú)立于數(shù)據(jù)庫(kù)的跨平臺(tái)數(shù)據(jù)庫(kù)訪問提供了有力的技術(shù)支持[5]。
4 系統(tǒng)體系結(jié)構(gòu)
本系統(tǒng)呈現(xiàn)的是一個(gè)通用ETL過程,它與通常意義下的C/S結(jié)構(gòu)類似,但只是對(duì)操作型數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行遷移。ETL系統(tǒng)體系結(jié)構(gòu)如圖2所示,ETL工具把源數(shù)據(jù)和目標(biāo)數(shù)據(jù)分隔開,通過數(shù)據(jù)抽取控制對(duì)源數(shù)據(jù)進(jìn)行抽取并存儲(chǔ)在元數(shù)據(jù)管理模塊中。用戶在規(guī)則定義界面中定義抽取規(guī)則、轉(zhuǎn)換規(guī)則、通過簡(jiǎn)單的拖放操作建立從源到目標(biāo)的字段映射等,再將這些規(guī)則(元數(shù)據(jù))存儲(chǔ)在元數(shù)據(jù)管理模塊中。用戶在執(zhí)行任務(wù)時(shí),系統(tǒng)從元數(shù)據(jù)管理模塊中取得ETL任務(wù)的抽取、轉(zhuǎn)換、加載規(guī)則,與數(shù)據(jù)庫(kù)交互完成數(shù)據(jù)遷移的任務(wù)。
5 具體實(shí)現(xiàn)
系統(tǒng)采用管道—過濾器模型實(shí)現(xiàn)ETL過程中的轉(zhuǎn)換引擎模塊部分。管道—過濾器模型(pipeline)是由代表過濾器的數(shù)據(jù)加工處理模塊和代表數(shù)據(jù)傳輸?shù)墓艿滥K組成。過濾器是具有一組輸入(或輸出)和內(nèi)部數(shù)據(jù)處理的部件構(gòu)成,它們被傳輸數(shù)據(jù)的管道連接在一起。過濾器通過輸入端口從管道接受數(shù)據(jù),并將處理的數(shù)據(jù)通過端口輸出到管道進(jìn)行傳送。對(duì)于pipeline的實(shí)現(xiàn)主要包括3個(gè)重要的類:圖(TranformationGraph類)、過濾器(Node類)和管道(Edge類)。
TranformationGraph類首先經(jīng)由加載的過濾器和管道中的信息分別存儲(chǔ)在nodes和phase中在初始化方法init()中,同時(shí)使用TranformationGraph的distributeNode方法將過濾器和管道具體的分配到不同的與過濾器和管道相適應(yīng)的并行線程(phase)中,在phase中過濾器和管道的初始化將由init()方法完成。在TranformationGraph中將釋放對(duì)管道和過濾器的相應(yīng)的引用。Node類是所有過濾器節(jié)點(diǎn)的超類,如果要?jiǎng)?chuàng)建一個(gè)過濾器就必須繼承Node類,繼承字Node類的過濾器節(jié)點(diǎn)都遵守整個(gè)軟件的規(guī)范,所以可以自由的添加到任務(wù)流程中。各個(gè)過濾器有自己獨(dú)特的功能又?jǐn)U展相同的接口,加強(qiáng)了過濾器的獨(dú)立性,使軟件模塊可以重用。在運(yùn)行時(shí)每一個(gè)過濾器都作為一個(gè)線程運(yùn)行。Edge類在管道—過濾器模型中是連接不同的過濾器的數(shù)據(jù)流通橋梁,不參與整個(gè)模型中數(shù)據(jù)的處理與變換,只起到數(shù)據(jù)傳輸?shù)淖饔茫蔷哂懈叨葍?nèi)聚性的組件。
系統(tǒng)采用XML來進(jìn)行數(shù)據(jù)的傳輸。數(shù)據(jù)的獨(dú)立性把內(nèi)容及其表示法分離開來是XML的特征,從而使XML成為數(shù)據(jù)交換的理想選擇。XML即可作為ETL工具抽取數(shù)據(jù)的來源又可以是加載數(shù)據(jù)的目的地,應(yīng)用dtd可以方便的對(duì)生成的轉(zhuǎn)換規(guī)則進(jìn)行內(nèi)容驗(yàn)證,而dom可以實(shí)現(xiàn)xml的解析。
6 性能分析
性能測(cè)試是改善系統(tǒng)性能的有效手段,本系統(tǒng)的性能測(cè)試主要以并發(fā)性測(cè)試為主,對(duì)目標(biāo)數(shù)據(jù)庫(kù)實(shí)現(xiàn)ETL過程時(shí)單表隨著增量數(shù)據(jù)量的不斷增大,數(shù)據(jù)抽取、轉(zhuǎn)換和加載過程所消耗的時(shí)間的變化進(jìn)行追蹤。
硬件環(huán)境:CPU為主頻2.0G的奔騰4,1G的DDR內(nèi)存。
軟件環(huán)境:操作系統(tǒng)為Windows 2003、JDK版本為1.5.0、數(shù)據(jù)庫(kù)為SQL Server2000和Oracle 10g
從測(cè)試結(jié)果分析,隨著數(shù)據(jù)量的不斷增加,系統(tǒng)ETL過程所消耗的時(shí)間也就不斷升高,但系統(tǒng)對(duì)少量數(shù)據(jù)完全可以滿足一般的需求。系統(tǒng)不太適合增量數(shù)據(jù)過大的情況下的應(yīng)用。系統(tǒng)整體運(yùn)行平穩(wěn),CPU占用率在28%~32%之間。
7 結(jié)束語
通用ETL過程的實(shí)現(xiàn)是一個(gè)比較復(fù)雜的過程,各方面需要考慮的因素很多。目前,通用ETL工具的開發(fā)研究工作一直都是國(guó)內(nèi)外在數(shù)據(jù)倉(cāng)庫(kù)建設(shè)方面的重點(diǎn)和熱點(diǎn)。采用JAVA語言和XML技術(shù)設(shè)計(jì)實(shí)現(xiàn)了ETL過程的跨平臺(tái)運(yùn)行、多線程處理,支持增量同步更新,從而更好地加強(qiáng)通用性和使用效率。同時(shí),數(shù)據(jù)清洗方法和轉(zhuǎn)換效率有待進(jìn)一步的提高。
參考文獻(xiàn):
[1] Inmon W H. Building the Data Warehouse[M]. New York: Wiley Sons,1993,16:4-5.
[2] Paulraj Ponniah. Data Warehousing Fundamentals[M].New York:Wiley,2001,25:22-27.
[3] 馬瑞新,許力.基于SOA的實(shí)時(shí)ETL的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與科學(xué),2007,29(8):3-4.
[4] 王強(qiáng),劉東波,王建新等.數(shù)據(jù)倉(cāng)庫(kù)元數(shù)據(jù)標(biāo)準(zhǔn)研究[J].計(jì)算機(jī)工程,2002,18(6)30-33.
[5] 胡逢彬,沈煒.數(shù)據(jù)ETL過程中的數(shù)據(jù)質(zhì)量控制[J].信息技術(shù),2006,(4):19-21.