??? 公司目前在ETL這個(gè)環(huán)節(jié)上基本處于手工開(kāi)發(fā)的原始階段,領(lǐng)導(dǎo)已經(jīng)不滿意了,估計(jì)以后會(huì)選擇一種工具進(jìn)行開(kāi)發(fā),所以先看一下ETL工具的選型。據(jù)說(shuō)同業(yè)使用Datastage的比較多,不過(guò)看了這篇文章之后,我還是更加傾向于用ETL Automation來(lái)實(shí)施,可以跟之前做的工作完全對(duì)接起來(lái)。不過(guò)跟朋友聊的時(shí)候都說(shuō)ETL工具比較白癡,沒(méi)什么技術(shù)含量,基本上都是拿來(lái)忽悠人的,汗……
?
?
---------------------------------------------------------------------------------
?
三大主流ETL工具選型
?
??? ETL(extract, transform and load) 產(chǎn)品乍看起來(lái)似乎并不起眼,單就此項(xiàng)技術(shù)本身而言,幾乎也沒(méi)什么特別深?yuàn)W之處,但是在實(shí)際項(xiàng)目中,卻常常在這個(gè)環(huán)節(jié)耗費(fèi)太多的人力,而在后續(xù)的維護(hù)工作中,更是往往讓人傷透腦筋。之所以出現(xiàn)這種狀況,恰恰與項(xiàng)目初期沒(méi)有正確估計(jì)ETL工作、沒(méi)有認(rèn)真考慮其工具支撐有很大關(guān)系。
?
??? 做ETL產(chǎn)品的選型,仍然需要從以前說(shuō)的四點(diǎn)(即成本、人員經(jīng)驗(yàn)、案例和技術(shù)支持) 來(lái)考量。在此,主要列舉三種主流ETL產(chǎn)品:Ascential公司的Datastage、Informatica公司的Powercenter、 NCR Teradata公司的ETL Automation。其中,ETL Automation相對(duì)其他兩種有些特別之處,放在后面評(píng)述。
?
?
旗鼓相當(dāng):Datastage與Powercenter
?
??? 就Datastage和Powercenter而言,這兩者目前占據(jù)了國(guó)內(nèi)市場(chǎng)絕大部分的份額,在成本上看水平相當(dāng),雖然市面上還有諸如Business Objects公司的Data Integrator、Cognos公司的DecisionStream,但尚屬星星之火,未成燎原之勢(shì)。
?
??? 談Datastage和Powercenter,如果有人說(shuō)這個(gè)就是比那個(gè)好,那聽(tīng)者就要小心一點(diǎn)了。在這種情況下有兩種可能:他或者是其中一個(gè)廠商的員工,或者就是在某個(gè)產(chǎn)品上有很多經(jīng)驗(yàn)而在另一產(chǎn)品上經(jīng)驗(yàn)缺乏的開(kāi)發(fā)者。為什么得出這一結(jié)論?一個(gè)很簡(jiǎn)單的事實(shí)是,從網(wǎng)絡(luò)上大家對(duì)它們的討論和爭(zhēng)執(zhí)來(lái)看,基本上是各有千秋,都有著相當(dāng)數(shù)量的成功案例和實(shí)施高手。確實(shí),工具是死的,人才是活的。在兩大ETL工具技術(shù)的比對(duì)上,可以從對(duì)ETL流程的支持、對(duì)元數(shù)據(jù)的支持、對(duì)數(shù)據(jù)質(zhì)量的支持、維護(hù)的方便性、定制開(kāi)發(fā)功能的支持等方面考慮。
?
??? 一個(gè)項(xiàng)目中,從數(shù)據(jù)源到最終目標(biāo)表,多則上百個(gè)ETL過(guò)程,少則也有十幾個(gè)。這些過(guò)程之間的依賴關(guān)系、出錯(cuò)控制以及恢復(fù)的流程處理,都是工具需要重點(diǎn)考慮。在這一方面,Datastage的早期版本對(duì)流程就缺乏考慮,而在6版本則加入Job Sequence的特性,可以將Job、shell腳本用流程圖的方式表示出來(lái),依賴關(guān)系、串行或是并行都可以一目了然,就直觀多了。Powercenter有Workflow的概念,也同樣可以將Session串聯(lián)起來(lái),這和Datastage Sequence大同小異。
?
??? ETL的元數(shù)據(jù)包括數(shù)據(jù)源、目標(biāo)數(shù)據(jù)的結(jié)構(gòu)、轉(zhuǎn)換規(guī)則以及過(guò)程的依賴關(guān)系等。在這方面,Datastage和Powercenter從功能上看可謂不分伯仲,只是后者的元數(shù)據(jù)更加開(kāi)放,存放在關(guān)系數(shù)據(jù)庫(kù)中,可以很容易被訪問(wèn)。此外,這兩個(gè)廠家又同時(shí)提供專門(mén)的元數(shù)據(jù)管理工具,Ascential有Metastage,而Informatica擁有Superglue。你看,就不給你全部功能,變著法子從你口袋里面多掏點(diǎn)錢(qián)。
?
??? 數(shù)據(jù)質(zhì)量方面,兩種產(chǎn)品都采用同樣的策略——獨(dú)立出ETL產(chǎn)品之外,另外有專門(mén)的數(shù)據(jù)質(zhì)量管理產(chǎn)品。例如和Datastage配套用的有ProfileStage和QualityStage,而Informatica最近也索性收購(gòu)了原先OEM的數(shù)據(jù)質(zhì)量管理產(chǎn)品FirstLogic。而在它們的ETL產(chǎn)品中,只是在Job或是Session前后留下接口,所謂前過(guò)程、后過(guò)程,雖然不是專為數(shù)據(jù)質(zhì)量預(yù)留的接口,不過(guò)至少可以利用它外掛一些數(shù)據(jù)質(zhì)量控制的模塊。
?
??? 在具體實(shí)現(xiàn)上看,Datastage通過(guò)Job實(shí)現(xiàn)一個(gè)ETL過(guò)程,運(yùn)行時(shí)可以通過(guò)指定不同參數(shù)運(yùn)行多個(gè)實(shí)例。Powercenter通過(guò)Mapping表示一個(gè)ETL過(guò)程,運(yùn)行時(shí)為Session,綁定了具體的物理數(shù)據(jù)文件或表。在修改維護(hù)上,這兩個(gè)工具都是提供圖形化界面。這樣的好處是直觀、傻瓜式的;不好的地方就是改動(dòng)還是比較費(fèi)事(特別是批量化的修改)。
?
??? 定制開(kāi)發(fā)方面,兩者都提供抽取、轉(zhuǎn)換插件的定制,但筆者認(rèn)為,Datastage的定制開(kāi)發(fā)性要比Powercenter要強(qiáng)那么一點(diǎn)點(diǎn)。因?yàn)镈atastage至少還內(nèi)嵌一種類(lèi)BASIC語(yǔ)言,可以寫(xiě)一段批處理程序來(lái)增加靈活性,而Powercenter似乎還缺乏這類(lèi)機(jī)制。另外從參數(shù)控制上,雖然兩者的參數(shù)傳遞都是比較混亂的,但Datastage至少可以對(duì)每個(gè)job設(shè)定參數(shù),并且可以job內(nèi)部引用這個(gè)參數(shù)名;而Powercenter顯得就有些偷懶,參數(shù)放在一個(gè)參數(shù)文件中,理論上的確可以靈活控制參數(shù),但這個(gè)靈活性需要你自己更新文件中的參數(shù)值(例如日期更新)。另外,Powercenter還不能在mapping或session中引用參數(shù)名,這一點(diǎn)就讓人惱火。
?
??? 總起來(lái)看,Datastage和Powercenter可謂旗鼓相當(dāng),在國(guó)內(nèi)也都有足夠的支持能力,Datastage在2005年被IBM收購(gòu)之后,可以說(shuō)后勁十足。而Informatica則朝著B(niǎo)I全解決方案提供商方向發(fā)展,Powercenter顯然還將是它的核心產(chǎn)品。
?
?
獨(dú)樹(shù)一幟:Teradata的ETL Automation
?
??? 繼續(xù)要說(shuō)的第三種產(chǎn)品是Teradata的ETL Automation。之所以拿它單獨(dú)來(lái)說(shuō)是因?yàn)樗颓懊鎯煞N產(chǎn)品的體系架構(gòu)都不太一樣。與其說(shuō)它是ETL工具,不如說(shuō)是提供了一套ETL框架。它沒(méi)有將注意力放在如何處理“轉(zhuǎn)換”這個(gè)環(huán)節(jié)上,而是利用Teradata數(shù)據(jù)庫(kù)本身的并行處理能力,用SQL語(yǔ)句來(lái)做數(shù)據(jù)轉(zhuǎn)換的工作,其重點(diǎn)是提供對(duì)ETL流程的支持,包括前后依賴、執(zhí)行和監(jiān)控等。
?
??? 這樣的設(shè)計(jì)和Datastage、Powercenter風(fēng)格迥異,后兩者給人的印象是具有靈活的圖形化界面,開(kāi)發(fā)者可以傻瓜式處理ETL工作,它們一般都擁有非常多的“轉(zhuǎn)換”組件,例如聚集匯總、緩慢變化維的轉(zhuǎn)換。而對(duì)于Teradata的ETL Automation,有人說(shuō)它其實(shí)應(yīng)該叫做ELT,即裝載是在轉(zhuǎn)換之前的。的確,如果依賴數(shù)據(jù)庫(kù)的能力去處理轉(zhuǎn)換,恐怕只能是ELT,因?yàn)檗D(zhuǎn)換只能在數(shù)據(jù)庫(kù)內(nèi)部進(jìn)行。從這個(gè)角度看,Automation對(duì)數(shù)據(jù)庫(kù)的依賴不小,似乎是一種不靈活的設(shè)計(jì)。也正是這個(gè)原因,考慮它的成本就不單單是ETL產(chǎn)品的成本了。
?
??? 其實(shí),在購(gòu)買(mǎi)現(xiàn)成的工具之外,還有自己從頭開(kāi)發(fā)ETL程序的。
?
??? ETL工作看起來(lái)并不復(fù)雜,特別是在數(shù)據(jù)量小、沒(méi)有什么轉(zhuǎn)換邏輯的時(shí)候,自己開(kāi)發(fā)似乎非常節(jié)省成本。的確,主流的ETL工具價(jià)格不菲,動(dòng)輒幾十萬(wàn);而從頭開(kāi)發(fā)無(wú)非就是費(fèi)點(diǎn)人力而已,可以控制。至于性能,人大多是相信自己的,認(rèn)為自己開(kāi)發(fā)出來(lái)的東西知根知底,至少這些程序可以完全由自己控制。
?
??? 就目前自主開(kāi)發(fā)的ETL程序而言,有人用c語(yǔ)言編寫(xiě),有人用存儲(chǔ)過(guò)程,還有人用各種語(yǔ)言混雜開(kāi)發(fā),程序之間各自獨(dú)立。這很危險(xiǎn),雖然能夠讓開(kāi)發(fā)者過(guò)足編碼的癮,卻根本不存在架構(gòu)。
?
??? 有位銀行的朋友,他們幾年前上的數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng),就是集成商自己用c語(yǔ)言專門(mén)為他們的項(xiàng)目開(kāi)發(fā)的。單從性能上看似乎還不賴,然而一兩年下來(lái),項(xiàng)目組成員風(fēng)雨飄零,早已物是人非,只有那套程序還在那里;而且,按照國(guó)內(nèi)目前的軟件工程慣例,程序注釋和文檔是不全或者是不一致的,這樣的程序已經(jīng)對(duì)日常業(yè)務(wù)造成很大阻礙。最近,他們已經(jīng)開(kāi)始考慮使用ETL工具重新改造了。(ccw-cnw)
?
-The End-