余肖生,吳西燕,王東娟,王緩緩,蔣 彬
(三峽大學計算機與信息學院,湖北宜昌 443002)
在數據倉庫構建過程中,作業量最大、日常運行中出現問題最多的是從業務數據庫向數據倉庫抽取、變換、集成數據的作業,即 ETL[1]。ETL 過程在數據倉庫的建設與維護中占據了相當重要的位置[2]。ETL過程設計的優劣已經成為數據倉庫建設中降低維護成本、提高ETL過程執行效率的關鍵。本文首先對現有ETL過程的構建方法及其發展進行分析比較,并指出其不足;在此基礎上,介紹基于MGO(通用操作符)的ETL過程的構建方法,并將其與現有ETL過程的構建方法進行比較;最后以一個通用操作符(平面文件加載器)的實現為例,描述通用操作符的實現流程。
在數據倉庫概念提出之前,決策支持系統概念已經被人們廣為接受。當時,由于沒有專門工具用來構建收集、整合、存儲、分析操作數據的信息平臺,故主要采用手工方式。手工ELT的工作流程如圖1所示[3],其中數據采用自然的方法處理:
1)抽取:相關操作數據以某種方式從操作應用程序中抽取并直接轉移到信息平臺或信息平臺的一個投影系統上。
2)加載:利用相應DBMS提供的加載工具,將數據庫中的這些數據加載到該信息平臺上。
3)轉換:為接下來的查詢和分析,使用SQL程序轉換這些數據并存儲在這個信息平臺的數據庫中。
該方法的主要優勢在于它的高性能,尤其是在信息平臺的轉換階段;其不足之處在于生產率低、質量低、管理繁瑣、文檔質量無法達到滿意的效果。

圖1 手工ELT的工作流程
為了提高生產率和程序質量,促進管理,在近十余年里,研究人員開發了許多數據倉庫工具,大多數工具具有以下的相似點:
1)圖形用戶界面
2)運行時系統基本以一種離散的方式工作[4-5]:
抽取(extract)從數據源(如平面文件或數據庫表)抽取數據,并將它們送到ETL服務器,而不是直接進入信息平臺,在ETL服務器中使用工具處理和轉換數據。
轉換(transform)根據具體要求,逐行轉換ETL服務器中的數據。
加載(load)為了后續的查詢和分析,將已轉換的數據加載到信息平臺的目標數據庫表中。
這些功能復雜的工具可以按照獨立于復雜信息平臺系統的不同需求設計。此類ETL體系的結構如圖2所示。該方法存在以下不足[3,7]:
1)配置弱。考慮到處理能力,相對于數據庫服務器而言,ETL服務器的配置要弱一些。
2)不適合的技術。ETL服務器采用的典型逐行處理模式效率不高,尤其是在需要處理的數據量很大時。然而,在數據倉庫實踐中,大數據量處理是數據倉庫的特色。有效處理大數據量是用于承載數據倉庫的專業數據庫管理系統的主要需求之一。
3)繁忙的數據轉換。待處理的數據通過網絡連接來回傳輸至整個系統邊界,在一些情況下,這些連接并非足夠強,一定程度上降低了處理性能。

圖2 工具輔助的ETL流程
近幾年,為了提高系統的性能,研究人員對現有數據倉庫工具進行了根本性的修改,并加快了新工具的開發速度。許多現有的有代表性的數據倉庫工具被移植到以下修改的ELT目錄中,如圖3 所示[6-8]。

圖3 工具輔助的ELT流程
1)在數據倉庫工具的控制下,從操作應用中抽取有關操作數據并直接轉移到信息平臺或信息平臺的投影系統中。
2)在數據倉庫工具的控制下,這些數據被加載到信息平臺的數據庫中。
3)為了后續的查詢和分析,在數據倉庫工具的控制下,在信息平臺轉換并在信息平臺的數據庫中存儲這些數據。
該方式保留了圖形用戶界面,性能也得到了一定改善。
通過前面的分析,筆者將以上3種方法在性能、生產率、軟件質量、管理程序、文檔質量等5方面進行比較。比較時,采用A、B兩個等級(A優于B),每個等級用后綴(+、-)表示其程度,如表1所示。

表1 3種構建方法的比較
通過表1可以看出:上述3種構建方法均存在不足之處,尤其是其中許多活動是重復的。為了克服這些不足,本文提出構建數據倉庫ETL的新方法,即基于元數據驅動的通用操作符(metadata-driven generic operator,MGO)的構建方法。該方法的中心思想是:在ETL過程中,考慮到有些活動是重復的,而有些不是,故將重復的和不重復的活動區分開,讓重復的活動僅執行一次。為了區分這些活動,將數據倉庫里的活動分為通用知識和特定對象的元數據(object-specific metadata)。所謂通用知識,是指在感興趣領域里具有普適性的知識,有時也稱領域通用知識(domain-generic knowledge)。例如,SQL語法中的所有 CREATE、DELETE 語句,編輯操作中的 copy、paste、search、replace等。特定對象的元數據是指具有專指性的知識。元數據主要分為描述性元數據(descriptive metadata)和操作元數據(operative metadata)。描述性元數據目標是描述相應的主題,如加載程序的文檔等;而操作元數據定義了系統中的操作/系統對象和它們之間的關系,確定了系統的行為或隨后的狀態。例如,一個表的列或者從一個源表到目標表的列映射都是操作元數據。前者通常存儲在系統目錄中,由系統自動維護;而后者存儲在用戶/工具定義的目錄中,由系統構造器手動維護。在數據倉庫ETL構建中,領域通用知識是重復的,而特定對象的元數據則不能重復。因此,對每個具體的對象(如表或映射),它必須單獨、專門地對待。事實上,每個表有自己的定義元數據,每個列有自己指定的元數據,每個目標列則有自己來自相應的源應用的列的映射。
本文構建新方法的工作流如圖4所示,與前述工具輔助的ELT方法類似,但沒有輔助工具。事實上,在生產率、軟件質量、文檔質量、管理程序和性能等關鍵方面,本文方法優于現代專業的數據倉庫工具使用的方法,且成本并未因此增加。具體步驟如下:
1)數據源。主要從源應用的表中抽取數據,并將它們轉移到數據倉庫的平面數據文件區;
2)MGO。此方法主要依靠12個基本操作符完成數據源到數據倉庫的轉換與加載。
3)數據庫服務器。按照存儲格式要求,將通過MGO轉換過來的數據存儲于此。
從圖4可以看出:基于元數據驅動的通用操作符的構建是此類新方法的核心。圖5給出了平面文件加載器(12個基本操作符之一)的構建和實現流程。其核心任務是:將平面數據文件通過控制文件轉換為數據倉庫中的表。為了實現這一過程,首先要利用存儲過程,按照控制文件的格式將元數據中的字段抽取出來,每一個字段寫成一個控制文件。實現過程如下:
(此處?為通配符,根據實際情況替換成相應的字符):
SQL*PLUS
SPOOL‘控制文件名’
SELECT Text FROM WT
ORDER BY No
SPOOL OFF
Sql_str= ’??????’
Echo‘USER_ID=???,PW=???,CONTROL=’控制文件名’>f.pmf
Sqlldr PARFILE=f.pmf
這種方法實現了應用系統中的批量平面數據文件到數據倉庫對應表的自動導入,大大降低了數據倉庫ETL過程的復雜度。蔣彬等將這一方法應用于銀行、保險等類型企業數據倉庫ETL過程構建,并取得了良好的效果。

圖4 基于MGO的數據倉庫ETL構建流程

圖5 平面文件加載器的構建和實現流程
從實用角度來看,本文提出的方法使得構建一個復雜體系結構的數據倉庫過程得到簡化,從而即使在非常不利的數據源情況下,依然可以得到高質量數據。從技術角度來看,這種方法代表了一種數據倉庫建設的全新范式,它將使數據倉庫的構建不再是一個復雜的問題。
[1]張寧,賈自艷,史忠植.數據倉庫中ETL技術的研究[J].計算機工程與應用,2002(24):213-216.
[2]張旭峰.ETL若干關鍵技術研究[D].上海:復旦大學,2006:1-15.
[3]Jiang Bin.Constructing Data Warehouses With Metadatadriven Generic Operators,and more[M].Niederglatt:DBJ Publishing,2011:14-21.
[4]Thammasak Rujirayanyong A,Jonathan J Shi.A projectoriented data warehouse for construction[J].Automation in Construction,2006(15):800-807.
[5]Joe Celko.Joe Celko's Analytics and OLAP in SQL[M].San Fransisco:Morgan Kaufmann Publishers,2006:38.
[6]Vikas Ranjan.A Comparative Study between ETL(Extract-Transform-Load)and E-LT(Extract-Load-Transform)approach for loading data into a Data Warehouse[D].Chico:California State University,2009:2-6.
[7]Robert J Davenport.ETL vs.ELT:A Subjective View[EB/OL].[2012-10-05].http://www.dataacademy.com/files/ETL-vs-ELT-White-Paper.pdf.
[8]Sabir Asadullaev.Data warehouse architectures and development strategy[EB/OL].[2012-10-05].https://www.ibm.com/developerworks/mydeveloperworks/blogs/Sabir/resource/DWarchitecturesanddevelopmentstrategy.Guidebook.pdf?lang=en.