天天看點

國際三大主流ETL工具選型分析

摘要: 做ETL産品的選型,仍然需要從以前說的四點(即成本、人員經驗、案例和技術支援)來考量。在此,主要列舉三種主流ETL産品:Ascential公司的Datastage、Informatica公司的Powercenter、 NCR Teradata公司的ETL Automation

    ETL(extract,transform and load)産品乍看起來似乎并不起眼,單就此項技術本身而言,幾乎也沒什麼特别深奧之處,但是在實際項目中,卻常常在這個環節耗費太多的人力,而在後續的維護工作中,更是往往讓人傷透腦筋。之是以出現這種狀況,恰恰與項目初期沒有正确估計ETL工作、沒有認真考慮其工具支撐有很大關系。

  做ETL産品的選型,仍然需要從以前說的四點(即成本、人員經驗、案例和技術支援)來考量。在此,主要列舉三種主流ETL産品:Ascential公司的Datastage、Informatica公司的Powercenter、 NCR Teradata公司的ETL Automation。其中,ETL Automation相對其他兩種有些特别之處,放在後面評述。

  旗鼓相當:Datastage與Powercenter

  就Datastage和Powercenter而言,這兩者目前占據了國内市場絕大部分的份額,在成本上看水準相當,雖然市面上還有諸如Business Objects公司的Data Integrator、Cognos公司的DecisionStream,但尚屬星星之火,未成燎原之勢。

  談Datastage和Powercenter,如果有人說這個就是比那個好,那聽者就要小心一點了。在這種情況下有兩種可能:他或者是其中一個廠商的員工,或者就是在某個産品上有很多經驗而在另一産品上經驗缺乏的開發者。為什麼得出這一結論?一個很簡單的事實是,從網絡上大家對它們的讨論和争執來看,基本上是各有千秋,都有着相當數量的成功案例和實施高手。确實,工具是死的,人才是活的。

  在兩大ETL工具技術的比對上,可以從對ETL流程的支援、對中繼資料的支援、對資料品質的支援、維護的友善性、定制開發功能的支援等方面考慮。

  一個項目中,從資料源到最終目标表,多則上百個ETL過程,少則也有十幾個。這些過程之間的依賴關系、出錯控制以及恢複的流程處理,都是工具需要重點考慮。在這一方面,Datastage的早期版本對流程就缺乏考慮,而在6版本則加入Job Sequence的特性,可以将Job、shell腳本用流程圖的方式表示出來,依賴關系、串行或是并行都可以一目了然,就直覺多了。Powercenter有Workflow的概念,也同樣可以将Session串聯起來,這和Datastage Sequence大同小異。

ETL的中繼資料包括資料源、目标資料的結構、轉換規則以及過程的依賴關系等。在這方面,Datastage和Powercenter從功能上看可謂不分伯仲,隻是後者的中繼資料更加開放,存放在關系資料庫中,可以很容易被通路。此外,這兩個廠家又同時提供專門的中繼資料管理工具,Ascential有Metastage,而Informatica擁有Superglue。你看,就不給你全部功能,變着法子從你口袋裡面多掏點錢。

  資料品質方面,兩種産品都采用同樣的政策——獨立出ETL産品之外,另外有專門的資料品質管理産品。例如和Datastage配套用的有ProfileStage和QualityStage,而Informatica最近也索性收購了原先OEM的資料品質管理産品FirstLogic。而在它們的ETL産品中,隻是在Job或是Session前後留下接口,所謂前過程、後過程,雖然不是專為資料品質預留的接口,不過至少可以利用它外挂一些資料品質控制的子產品。

  在具體實作上看,Datastage通過Job實作一個ETL過程,運作時可以通過指定不同參數運作多個執行個體。Powercenter通過Mapping表示一個ETL過程,運作時為Session,綁定了具體的實體資料檔案或表。在修改維護上,這兩個工具都是提供圖形化界面。這樣的好處是直覺、傻瓜式的;不好的地方就是改動還是比較費事(特别是批量化的修改)。

  定制開發方面,兩者都提供抽取、轉換插件的定制,但筆者認為,Datastage的定制開發性要比Powercenter要強那麼一點點。因為Datastage至少還内嵌一種類BASIC語言,可以寫一段批處理程式來增加靈活性,而Powercenter似乎還缺乏這類機制。另外從參數控制上,雖然兩者的參數傳遞都是比較混亂的,但Datastage至少可以對每個job設定參數,并且可以job内部引用這個參數名;而Powercenter顯得就有些偷懶,參數放在一個參數檔案中,理論上的确可以靈活控制參數,但這個靈活性需要你自己更新檔案中的參數值(例如日期更新)。另外,Powercenter還不能在mapping或session中引用參數名,這一點就讓人惱火。

  總起來看,Datastage和Powercenter可謂旗鼓相當,在國内也都有足夠的支援能力,Datastage在2005年被IBM收購之後,可以說後勁十足。而Informatica則朝着BI全解決方案提供商方向發展,Powercenter顯然還将是它的核心産品。

  獨樹一幟:Teradata的ETL Automation

  繼續要說的第三種産品是Teradata的ETLAutomation。之是以拿它單獨來說是因為它和前面兩種産品的體系架構都不太一樣。與其說它是ETL工具,不如說是提供了一套ETL架構。它沒有将注意力放在如何處理“轉換”這個環節上,而是利用Teradata資料庫本身的并行處理能力,用SQL語句來做資料轉換的工作,其重點是提供對ETL流程的支援,包括前後依賴、執行和監控等。

  這樣的設計和Datastage、Powercenter風格迥異,後兩者給人的印象是具有靈活的圖形化界面,開發者可以傻瓜式處理ETL工作,它們一般都擁有非常多的“轉換”元件,例如聚集彙總、緩慢變化維的轉換。而對于Teradata的ETL Automation,有人說它其實應該叫做ELT,即裝載是在轉換之前的。的确,如果依賴資料庫的能力去處理轉換,恐怕隻能是ELT,因為轉換隻能在資料庫内部進行。從這個角度看,Automation對資料庫的依賴不小,似乎是一種不靈活的設計。也正是這個原因,考慮它的成本就不單單是ETL産品的成本了。

  其實,在購買現成的工具之外,還有自己從頭開發ETL程式的。

ETL工作看起來并不複雜,特别是在資料量小、沒有什麼轉換邏輯的時候,自己開發似乎非常節省成本。的确,主流的ETL工具價格不菲,動辄幾十萬;而從頭開發無非就是費點人力而已,可以控制。至于性能,人大多是相信自己的,認為自己開發出來的東西知根知底,至少這些程式可以完全由自己控制。

  就目前自主開發的ETL程式而言,有人用c語言編寫,有人用存儲過程,還有人用各種語言混雜開發,程式之間各自獨立。這很危險,雖然能夠讓開發者過足編碼的瘾,卻根本不存在架構。

  有位銀行的朋友,他們幾年前上的資料倉庫系統,就是內建商自己用c語言專門為他們的項目開發的。單從性能上看似乎還不賴,然而一兩年下來,項目組成員風雨飄零,早已物是人非,隻有那套程式還在那裡;而且,按照國内目前的軟體工程慣例,程式注釋和文檔是不全或者是不一緻的,這樣的程式已經對日常業務造成很大阻礙。最近,他們已經開始考慮使用ETL工具重新改造了

繼續閱讀