一、背景
在企業BI平臺建設過程中,數據整合始終是一切的基礎,簡單BI項目可以通過存儲過程來實現,而複雜、全面、多方異構數據來源等就大大增加了複雜性,存儲過程的可管理性、可維護性、容錯性等就無法很好的跟上企業的BI的發展腳步和需要。
因此,一個完善的、健壯的、可視化的、易於開發和管理的ETL解決方案,就非常重要,而這其中,ETL工具的地位不言而喻,更是重中之重。選擇一個優秀的ETL工具,不僅可以加快異構數據整合的能力和效率,更能降低開發成本、人員手工維護等成本,好處多多。
現今的ETL工具很多,大企業的有IBM、Oracle的,中小企業的有SSIS、kettle、talend。有開源的,也有收費的,那我們改如何選擇呢?
二、對比方面
本人做過ETL開發也有小几年,對於一部分的ETL工具也有很多的接觸,也看過其它企業的大型ETL解決方案,今天,就從如下幾個我所經歷過以及結合一些客戶的選擇方向來對比下不同ETL工具之間的差異,給予一部分即將選擇ETL工具的朋友一些輔助建議吧。
對比的ETL工具,選擇這4款主要是我自己接觸過,或是有客戶採購過,相對比較瞭解。
- talend
- kettle
- SSIS
- informatica
對比的方面主要有如下幾方面,每個方面總分都是10分
2.1、成本:軟件成本+開發成本+維護成本。
這個是我所知道90%企業都第一考慮的,大家都知道,有多少錢辦多少事兒。
- talend:8分
- 軟件成本:talend有開源版本,免費,但是實際我用下來,以及一部分客戶的實際情況,還是建議買個企業版。因爲開源版沒有配備完善的自動化調度系統,這個如果開發好之後要定期運行起來,還需要藉助其它的調度工具或者自己開發一套調度,估計這個開發也夠嗆。
- 開發成本:如果開源版,前期可能會省很多培訓、諮詢、售前等費用,但是後期的維護團隊、自定義開發的調度平臺估計也不會比買企業版花的少。
- 維護成本:talend是按照用戶數收費的,所以如果開發用戶很多的情況下,估計就不划算。
- kettle:7分
- 軟件成本、開發成本:和talend一樣的,也是分開源和不開源,開源的依然是要自行調度管理。
- 維護成本:kettle國內的專業公司好像有點少,一般用的都是做做簡單ETL,或者封裝一套自己的,所以前期自我探索的成本也比較高。
- SSIS:8分
- 軟件成本:這是微軟的,因爲你只要採購了SQL SERVER,這個工具就是免費給你用的,微軟家的產品都是簡單、快速入門的,所以使用起來的難度不大。
- 開發成本:微軟的MSDN是很強大的在線文檔,看這個已經足夠入門了,諮詢幾乎不用。
- 維護成本:微軟系的出了名的好用、上手快。如果你已經採購了SQL SERVER而且還是windows體系的,那我是推薦這個的。
- informatica:5分
- 軟件成本:企業級的產品,世界知名,當然軟件採購成本也很貴,比上面的貴好多倍。
- 開發成本:擁有良好的GUI界面,開發也是脫拉拽,相對還是比較塊的。
- 維護成本:老牌廠商,軟件穩定。
2.2、易用性
易用性可以降低使用人員專業技術水平,降低人員成本。
- talend:9分
- 給予eclipse的GUI界面操作,而且結合了SVN/GIT的版本管理,開發快速、代碼管理及時。但是GUI有時候不太穩定。
- 拖拉拽的設計風格。
- 開發的job直接可以build成jar包,然後部署,或者直接可以在tac後臺服務進行部署(企業版纔有)。
- kettle:7分
- GUI的界面操作,可以和自己的知識庫整合,將開發內容保存到後臺元數據庫中。
- 拖拉拽的設計風格。
- SSIS:9分
- VS的GUI界面操作。
- 拖拉拽的設計風格。
- 給予GUI的job運行管理、調度平臺。
- informatica:8分
- GUI的界面操作。
- 拖拉拽的設計風格。
2.3、架構
架構的優劣,也決定的這個產品是否能有足夠的能力支撐任何需求變更的挑戰。
- talend:9分
- 基於Java體系的,每個ETL job設計完成之後,最終都是編譯成了一整個的jar包。
- 只要你有JVM環境你就可以運行talend job。
- 接收自定義的java代碼,可以使得一部分組件無法完成的功能,通過代碼來實現。
- kettle:8分
- 基於Java體系的。
- 可以使用 job 作業方式或操作系統調度,來執行一個轉換文件或作業文件。
- 可以通過集羣的方式在多臺機器上部署
- SSIS:7分
- 基於XML的文件保存格式,基於Windows體系。
- 需要.NET FRAMEWORK的支持。
- 可以自定義開發.NET程序處理。
- informatica:8分
- 基於他本身的server調度運行。
2.4、 數據源豐富性
ETL主要就是負責數據整合,數據源的豐富性越好,適應能力就越強。
- talend:9分
- 支持各種數據庫數據源、web services、文件、雲產品等,非常豐富。
- 雲計算、大數據的支持也是非常迅速的。
- kettle:9分
- 支持各種數據庫數據源、web services、文件、雲產品等,非常豐富。
- 也可以通過自己開發插件來拓展。
- 有很多的第三方插件支持。
- SSIS:7分
- 支持各種數據庫數據源、web services、文件等
- 雲產品的支持當前只是支持他自家的微軟雲。
- 有很多的第三方插件支持。
- informatica:6
- 支持各種數據庫數據源
- 分爲不同的版本,標準版,實時版,高級版,雲計算版。同時,它還提供了多個可選的組件
2.5、 ETL組件豐富性
ETL組件的完善,可以減少硬編碼,提升開發效率和交付質量。
- talend:9分
- talend組件非常多,他將很多的功能都拆分成了不同的組件,大概是3000多個,這樣子的組件細化,可以給出不同的組合,滿足很多不同的任務需要。
- 尤其是對大數據、雲計算組件的支持更是業內比較快、領先的。
- kettle:8分
- 組件也是十分豐富。
- 自己可以拓展開發第三方組件。
- 對於雲計算的支持也是比較好的。
- SSIS:7分
- 組件相對比較豐富,而且結合了數據庫維護的一些功能,使得不僅僅侷限於ETL這單塊的內容。
- 可以自定義開發組件。
- 對於雲計算、大數據等支持不是很快。
- informatica:6分
- 組件相對也比較豐富。
- 對於雲計算也有支持,但是在不同的產品模塊,無形中增加了軟件成本。
2.6、 性能
性能是決定着數據刷新的頻率,對於很多實時性要求較高的業務,這是重點。
- talend:6分
- talend因爲要先編譯、後運行,因此第一次的運行來看,性能相對比較慢。
- talend是基於jvm的,所以很多方面需要調優。
- kettle:7分
- kettle本身會有一定的優化在其中,所以整體運行效率會比talend快一些。
- 很多參數也是需要實際情況調優的。
- SSIS:8分
- 如果針對於其本身的MS系產品,效率是槓槓的,微軟的測試1TB只需要2小時。
- 但是針對其它家的數據庫,也是需要優化的,但是綜合來看,還是比較塊的。
- informatica:8分
- 針對於本身的數據源,其內部就做了很多的調優,因此就會快很多。
2.7、 部署
部署主要是考慮是否能支持橫向拓展,以便更快應對數據量的增長。
- talend:8分
- 開發支持多人合作開發,通過SVN/GIT進行協作。
- 可以通過部署多個集羣job server來負載均衡的運行job。
- kettle:8分
- 支持集羣式的部署方式。
- SSIS:5分
- 暫時沒有集羣式的部署方式。
- 但是可以通過job之間的協調調度來實現,技術成本比較高。
- informatica:6分
- 需要部署運行在其server上。
2.8、 監控
完善的監控體系,可以即使的發現ETL內部問題,提升運行穩定性,減少數據整合的錯誤。
- talend:8分
- 擁有良好的後臺運行監控和log日誌記錄。
- kettle:8分
- 擁有良好的後臺運行監控和log日誌記錄。
- SSIS:9分
- 擁有良好的後臺運行監控和log日誌記錄。
- 可以收集不同的運行KPI,分析運行的效率問題。
- informatica:8分
- 擁有良好的後臺運行監控和log日誌記錄。
2.9、 數據質量管理
ETL中包含數據質量管理應該是未來的趨勢,而不是簡單將數據從A搬到B。
- talend:8分
- 有數據質量管理的支持。
- 也可以通過自己代碼實現。
- kettle:8分
- 有數據質量管理的支持。
- 也可以通過自己代碼實現。
- SSIS:9分
- 有自己的數據質量檢測組件。
- 也可以通過數據質量服務這個軟件來實現(免費)但是整合起來的技術難度還是有一些。
- informatica:7分
- 專門有一個產品 Informatica Data Quality 來保證數據質量
- 但是這個軟件成本有點高。
2.10、 技術支持and社區
主要考慮到未來的疑難問題解決。
- talend:7分
- 在國內的社區和技術支持相對比較薄弱。
- 但是好在技術支持比較穩定,可以申請原廠的case,有人回覆。(不買產品諮詢,應該要收費的)
- kettle:8分
- 國內的社區還不錯,很多開源的小企業的人都是在使用的,也有很多的社羣活躍。
- SSIS:9分
- 微軟的支持無處不在。
- MSDN、官方博客都幾乎可以找到人,比較方便。
- 而且使用人員也很多。
- informatica:8分
- 專業的人員倒是挺多,但是諮詢應該不是免費的。
三、總結
最總我們來看得分
產品/考慮方面 | 成本:軟件成本+開發成本+維護成本(10分) | 易用性(10分) | 架構(10分) | 數據源豐富性(10分) | ETL組件豐富性(10分) | 性能(10分) | 部署(10分) | 監控(10分) | 數據質量管理(10分) | 技術支持&社區(10分) | 總分 | 建議 |
talend | 8 | 9 | 9 | 9 | 9 | 6 | 8 | 8 | 8 | 7 | 83 | 1、如果你是java體系的愛好者。你希望跨平臺。 2、如果你未來希望能更好接入大數據、雲計算。 3、你更喜歡靈活控制每一個ETL組件。 4、對於job調度的要求不是很高。 |
kettle | 7 | 7 | 8 | 9 | 8 | 7 | 8 | 8 | 8 | 8 | 78 | 1、如果你是java體系的愛好者。你希望跨平臺。 2、如果你未來希望能更好接入大數據、雲計算。 3、你們未來是自己打算開發一套調度系統的。 |
SSIS | 8 | 9 | 7 | 7 | 7 | 8 | 5 | 9 | 9 | 9 | 78 | 1、你是微軟系的服務器、產品爲主。 2、你渴望入門快、成果見效快。 3、你希望易於維護、開發快捷,管理簡單。 |
informatica | 5 | 8 | 8 | 6 | 6 | 8 | 6 | 8 | 7 | 8 | 70 | 1、你有錢。 2、你有豐富的技術人才。 3、你有大量的維護團隊。 |