ETL常用的三種工具介紹及對比Datastage,Informatica和Kettle

原文轉發自:https://zhuanlan.zhihu.com/p/73102112

ETL常用的三種工具介紹及對比Datastage,Informatica和Kettle

ETL是數據倉庫中的非常重要的一環,是承前啓後的必要的一步。ETL負責將分佈的、異構數據源中的數據如關係數據、平面數據文件等抽取到臨時中間層後進行清洗、轉換、集成,最後加載到數據倉庫或數據集市中,成爲聯機分析處理、數據挖掘的基礎。

下面給大家介紹一下什麼是ETL以及ETL常用的三種工具——Datastage,Informatica,Kettle。

一、什麼是ETL?

ETL,Extract-Transform-Load 的縮寫,用來描述將數據從來源端經過抽取(extract)、轉換(transform)、加載(load)至目的端的過程。

數據倉庫結構

通俗的說法就是從數據源抽取數據出來,進行清洗加工轉換,然後加載到定義好的數據倉庫模型中去。目的是將企業中的分散、零亂、標準不統一的數據整合到一起,爲企業的決策提供分析依據。

ETL是BI項目重要的一個環節,其設計的好壞影響生成數據的質量,直接關係到BI項目的成敗。

二、爲什麼要用ETL工具?

在數據處理的時候,我們有時會遇到這些問題:

▶ 當數據來自不同的物理主機,這時候如使用SQL語句去處理的話,就顯得比較喫力且開銷也更大。

▶ 數據來源可以是各種不同的數據庫或者文件,這時候需要先把他們整理成統一的格式後纔可以進行數據的處理,這一過程用代碼實現顯然有些麻煩。

▶ 在數據庫中我們當然可以使用存儲過程去處理數據,但是處理海量數據的時候存儲過程顯然比較喫力,而且會佔用較多數據庫的資源,這可能會導致數據資源不足,進而影響數據庫的性能。

而上述遇到的問題,我們用ETL工具就可以解決。ETL工具具有以下幾點優勢:

1、支持多種異構數據源的連接。(部分)

2、圖形化的界面操作十分方便。

3、處理海量數據速度快、流程更清晰等。

三、ETL工具介紹

1、Datastage

IBM公司的商業軟件,最專業的ETL工具,但同時價格不菲,適合大規模的ETL應用。

使用難度:★★★★

2、Informatica

商業軟件,相當專業的ETL工具。價格上比Datastage便宜一點,也適合大規模的ETL應用。

使用難度:★★

3、Kettle

免費,最著名的開源產品,是用純java編寫的ETL工具,只需要JVM環境即可部署,可跨平臺,擴展性好。

使用難度:★★

四、三種ETL工具的對比

Datastage、Informatica、Kettle三個ETL工具的特點和差異介紹:

1、操作

這三種ETL工具都是屬於比較簡單易用的,主要看開發人員對於工具的熟練程度。

Informatica有四個開發管理組件,開發的時候我們需要打開其中三個進行開發,Informatica沒有ctrl+z的功能,如果對job作了改變之後,想要撤銷,返回到改變前是不可能的。相比Kettle跟Datastage在測試調試的時候不太方便。Datastage全部的操作在同一個界面中,不用切換界面,能夠看到數據的來源,整個job的情況,在找bug的時候會比Informatica方便。

Kettle介於兩者之間。

2、部署

Kettle只需要JVM環境,Informatica需要服務器和客戶端安裝,而Datastage的部署比較耗費時間,有一點難度。

3、數據處理的速度

大數據量下Informatica與Datastage的處理速度是比較快的,比較穩定。Kettle的處理速度相比之下稍慢。

4、服務

Informatica與Datastage有很好的商業化的技術支持,而Kettle則沒有。商業軟件的售後服務上會比免費的開源軟件好很多。

5、風險

風險與成本成反比,也與技術能力成正比。

6、擴展

Kettle的擴展性無疑是最好,因爲是開源代碼,可以自己開發拓展它的功能,而Informatica和Datastage由於是商業軟件,基本上沒有。

7、Job的監控

三者都有監控和日誌工具。

在數據的監控上,個人覺得Datastage的實時監控做的更加好,可以直觀看到數據抽取的情況,運行到哪一個控件上。這對於調優來說,我們可以更快的定位到處理速度太慢的控件並進行處理,而informatica也有相應的功能,但是並不直觀,需要通過兩個界面的對比才可以定位到處理速度緩慢的控件。有時候還需要通過一些方法去查找。

8、網上的技術文檔

Datastage < Informatica < kettle,相對來說,Datastage跟Informatica在遇到問題去網上找到解決方法的概率比較低,kettle則比較多。

五、項目經驗分享

在項目中,很多時候我們都需要同步生產庫的表到數據倉庫中。一百多張表同步、重複的操作,對開發人員來說是細心和耐心的考驗。在這種情況下,開發人員最喜歡的工具無疑是kettle,多個表的同步都可以用同一個程序運行,不必每一張表的同步都建一個程序,而informatica雖然有提供工具去批量設計,但還是需要生成多個程序進行一一配置,而datastage在這方面就顯得比較笨拙。

在做增量表的時候,每次運行後都需要把將最新的一條數據操作時間存到數據庫中,下次運行我們就取大於這個時間的數據。Kettle有控件可以直接讀取數據庫中的這個時間置爲變量;對於沒有類似功能控件的informatica,我們的做法是先讀取的數據庫中的這個時間存到文件,然後主程序運行的時候指定這個文件爲參數文件,也可以得到同樣的效果。


有一句話說的好:世上沒有最好的,只有適合的!

每一款ETL工具都有它的優缺點,我們需要根據實際項目,權衡利弊選擇適合的ETL工具,合適的就是最好的。當下越來越多公司及其客戶更重視最新的數據(實時數據)展現,傳統的ETL工具可能滿足不了這樣的需求,而實時流數據處理和雲計算技術更符合。所以我們也需要與時俱進,學習大數據時代下的ETL工具。

發佈於 2019-07-11

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章