1. 程式人生 > >ETL工具比較(Informatica ,SSIS,Kettle )

ETL工具比較(Informatica ,SSIS,Kettle )

發現自己真懶,只寫了幾篇就不更新BLOG了。近期要換工作,得做做知識儲備和整理。順便開更把。

個人觀點:

1. 如果是自家用,多數情況選哪個工具並不是決定性的。工具能優化工作效率,但不是沒有就不能幹活的,關鍵是設計,即使不用這些,靠程式和資料庫自己的PROCEDURE 也能搞定這些事情。

2. 如果是作為BI的一部分,總不能讓客戶自己寫程式碼吧偷笑

土鱉比較:

Informatica  --> 土豪首選;

SSIS --> 裝SQL SERVER了嗎?如果裝了還需要考慮什麼?

kettle --> 免費。

以下都是轉的: 

常見ETL工具:

http://blog.csdn.net/hfxl1108/article/details/8564941

Informatica VS SSIS
從易用性來說,Informaitca有四個開發管理元件,初學者可能不知道如 何下手,所以關鍵先要了解PowerCenter的開發流程。SSIS有BIDS和SSMS,主要的開發工作在BIDS上完成,但是BIDS是基於 Visaul Studio的,如果是沒有做過.NET開發的人員,VS的複雜的開發環境可能讓他們不知所措,但是對於熟悉VS的開發人員來說,通過VS,他們可以使用 更多的資源,比如源管理器,VSTFS等。從介面的人性化上看,SSIS無疑更好,這是Microsoft的一貫特色,PowerCenter有些地方連 右鍵選單都沒有。
  SSIS的資料流如同PowerCenter的Mapping,SSIS的控制流如同PowerCenter的Task,SSIS的 Package如同PowerCenter的WorkFlow。PowerCenter的Mapping和WorkFlow分開開發,在一個大型開發團隊 中,開發人員開發Mapping,而有管理人員將多個Mapping在WorkFlow中統一排程。但如果是隻有幾個人的開發團隊中,這種模式的效率就不 如SSIS了,因為小型團隊中每個人都獨立工作,開發人員需要開發好Mapping後,再在WorkFlow建立Session,需要再一次為 Session配置連線和引數。相反,SSIS不適合多人開發,因為不像PowerCenter將Mapping和WorkFlow分開開發,所以當一個 人在開發Package時,其他人就插不上手。
  SSIS的執行監控是非常棒的設計,可以看到資料流的執行情況。如果資料流出問題,可以馬上知道在那個轉換元件上發生了問題。而 PowerCenter的Monitor只能看到源和目標的情況,一旦出狀況,就只能看日誌了,但在日誌大量的文本里,很多時候是找不出問題的所在。除了 執行時監控外,SSIS在開發時可以動態的Validate,而且它的Validate也嚴格得多。只要發現欄位型別對應不上就會報錯。 PowerCenter中Port的對應比較自由,比如一個Output的Port可以隨意對應到多個Input的Port,而SSIS中一定要用多播組 件才行。所以在資料質量方面,SSIS比PowerCenter更有保障,PowerCenter最鬱悶的是,報錯後卻找不到出錯的地方。
  就元件的功能上,SSIS比PowerCenter要豐富,像SSIS控制流的迴圈元件,資料流中的模糊查詢、詞頻計算、資料探勘評分等元件都 是Informaitca沒有的。特別是有很多針對SQL Server元件。如果使用非SQL Server資料庫的話,SSIS功能上要打個七折。
  SSIS最致命的問題是資料庫連線的相容性上,資料流中很多元件只認OLE DB連線,而且只有OLE DB資料來源元件才可以加引數,這顯然是Microsoft有意為之。加上SSIS的Validate比較嚴格,所以連線到那些對OLE DB相容不好的資料庫就會報錯,像我之前連線Oracle 9i就碰到這樣的問題。PowerCenter支援更多的資料來源,此外還可以連線SAP, PeopleSoft等商業軟體,在大型企業中,這些功能是非常方便的。


Informatica VS Kettle 
1、 Informatica屬於商業軟體,而Kettle是開源軟體;Informatica的收費方式是軟體一次性購買,但技術支援按專案收費。具體怎麼界定專案不清楚。
2、 風險和成本方面自然就不用說了,從某些方面來說的話,風險總是與成本成反比的;
3、 易用性方面,Informatica和Kettle都有GUI圖形介面,操作步驟都比較簡單易用;主要取決於開發人員的對工具的熟悉情況,沒有太大的可比性;
4、 Kettle是基於Java開發的ETL工具,在使用過程中需要藉助JVM,在資料抽取速度以及大資料處理能力方面遠遠不如Informatica;(Kettle在異構資料庫的處理能力比同構資料庫的處理能力要弱很多,特別是誇伺服器之間就更弱了)
5、 Informatica將客戶端和服務端進行分離,而Kettle則沒有但需要基於JVM;因此Kettle的部署比較簡易;
6、 穩定性方面,Informatica也有較大的優勢;
7、 Informatica將元資料及一些配置資訊儲存於配置的資料庫,也就是說Informatica需要藉助其他資料庫才能執行;
8、 Kettle的資料轉換過程相對比較靈活,可以是手工編寫的SQL語句、Java程式碼、正則表示式等;Informatica則由Data Quality元件來保證資料的質量,當然也支援SQL語句,兩者沒有明顯的差異;
9、 Informatica和Kettle均有監控日誌功能,這也是ETL工具必須具備的,Informatica的監控日誌相對要詳細一些,但在實際應用中,大多數情況下不需要這麼詳細;
10、 資料來源方面,二者沒有明顯區別,Kettle支援廣泛的資料庫、資料檔案等,同時支援擴充套件;Informatica廣泛支援各類結構化、非結構化的資料來源;