ETL是數(shù)據(jù)倉庫中的非常重要的一環(huán),是承前啟后的必要的一步。ETL負責將分布的、異構(gòu)數(shù)據(jù)源中的數(shù)據(jù)如關(guān)系數(shù)據(jù)、平面數(shù)據(jù)文件等抽取到臨時中間層后進行清洗、轉(zhuǎn)換、集成,最后加載到數(shù)據(jù)倉庫或數(shù)據(jù)集市中,成為聯(lián)機分析處理、數(shù)據(jù)挖掘的基礎(chǔ)。下面給大家介紹一下什么是ETL以及ETL常用的三種工具(Datastage,Informatica,Kettle)! 1.ETL是什么? ETL,是英文 Extract-Transform-Load 的縮寫,用來描述將數(shù)據(jù)從來源端經(jīng)過抽取(extract)、轉(zhuǎn)換(transform)、加載(load)至目的端的過程。(數(shù)據(jù)倉庫結(jié)構(gòu))通俗的說法就是從數(shù)據(jù)源抽取數(shù)據(jù)出來,進行清洗加工轉(zhuǎn)換,然后加載到定義好的數(shù)據(jù)倉庫模型中去。目的是將企業(yè)中的分散、零亂、標準不統(tǒng)一的數(shù)據(jù)整合到一起,為企業(yè)的決策提供分析依據(jù)。ETL是BI項目重要的一個環(huán)節(jié),其設(shè)計的好壞影響生成數(shù)據(jù)的質(zhì)量,直接關(guān)系到BI項目的成敗。 2.為什么要用ETL工具? ? 當數(shù)據(jù)來自不同的物理主機,這時候如使用SQL語句去處理的話,就顯得比較吃力且開銷也更大。 ? 數(shù)據(jù)來源可以是各種不同的數(shù)據(jù)庫或者文件,這時候需要先把他們整理成統(tǒng)一的格式后才可以進行數(shù)據(jù)的處理,這一過程用代碼實現(xiàn)顯然有些麻煩。 ? 在數(shù)據(jù)庫中我們當然可以使用存儲過程去處理數(shù)據(jù),但是處理海量數(shù)據(jù)的時候存儲過程顯然比較吃力,而且會占用較多數(shù)據(jù)庫的資源,這可能會導致數(shù)據(jù)資源不足,進而影響數(shù)據(jù)庫的性能。 上面所說的問題,我們用ETL工具就可以解決。它的優(yōu)點有: ● 支持多種異構(gòu)數(shù)據(jù)源的連接。(部分) ● 圖形化的界面操作十分方便。 ● 處理海量數(shù)據(jù)速度快、流程更清晰等。 3.ETL工具介紹 Informatica和Datastage占據(jù)國內(nèi)市場的大部分的份額。 4.ETL工具差異 Kettle,Datastage,Informatica三個ETL工具的特點和差異介紹: 操作 都是屬于比較簡單易用,主要是開發(fā)人員對于工具的熟練程度。Informatica有四個開發(fā)管理組件,開發(fā)的時候我們需要打開其中三個進行開發(fā),Informatica沒有ctrl+z的功能,如果對job作了改變之后,想要撤銷,返回到改變前是不可能的。相比Kettle跟Datastage在測試調(diào)試的時候不太方便。Datastage全部的操作在同一個界面中,不用切換界面,能夠看到數(shù)據(jù)的來源,整個job的情況,在找bug的時候會比Informatica方便。Kettle介于兩者之間。 部署 Kettle只需要JVM環(huán)境,Informatica需要服務(wù)器和客戶端安裝,而Datastage的部署比較耗費時間,有一點難度。 數(shù)據(jù)處理的速度 大數(shù)據(jù)量下Informatica 與Datastage的處理速度是比較快的,比較穩(wěn)定。Kettle的處理速度相比之下稍慢。 服務(wù) Informatica與Datastage有很好的商業(yè)化的技術(shù)支持,而Kettle則沒有。商業(yè)軟件的售后服務(wù)上會比免費的開源軟件好很多。 風險 風險與成本成反比,也與技術(shù)能力成正比。 擴展 Kettle的擴展性無疑是最好,因為是開源代碼,可以自己開發(fā)拓展它的功能,而Informatica和Datastage由于是商業(yè)軟件,基本上沒有。 Job的監(jiān)控 三者都有監(jiān)控和日志工具。在數(shù)據(jù)的監(jiān)控上,個人覺得Datastage的實時監(jiān)控做的更加好,可以直觀看到數(shù)據(jù)抽取的情況,運行到哪一個控件上。這對于調(diào)優(yōu)來說,我們可以更快的定位到處理速度太慢的控件并進行處理,而informatica也有相應(yīng)的功能,但是并不直觀,需要通過兩個界面的對比才可以定位到處理速度緩慢的控件。有時候還需要通過一些方法去查找。 網(wǎng)上的技術(shù)文檔 Datastage < Informatica < kettle,相對來說,Datastage跟Informatica在遇到問題去網(wǎng)上找到解決方法的概率比較低,kettle則比較多。 5.項目經(jīng)驗分享 多張表同步、重復的操作:在項目中,很多時候我們都需要同步生產(chǎn)庫的表到數(shù)據(jù)倉庫中。一百多張表同步、重復的操作,對開發(fā)人員來說是細心和耐心的考驗。在這種情況下,開發(fā)人員最喜歡的工具無疑是kettle,多個表的同步都可以用同一個程序運行,不必每一張表的同步都建一個程序,而informatica雖然有提供工具去批量設(shè)計,但還是需要生成多個程序進行一一配置,而datastage在這方面就顯得比較笨拙。 增量表:在做增量表的時候,每次運行后都需要把將最新的一條數(shù)據(jù)操作時間存到數(shù)據(jù)庫中,下次運行我們就取大于這個時間的數(shù)據(jù)。Kettle有控件可以直接讀取數(shù)據(jù)庫中的這個時間置為變量;對于沒有類似功能控件的informatica,我們的做法是先讀取的數(shù)據(jù)庫中的這個時間存到文件,然后主程序運行的時候指定這個文件為參數(shù)文件,也可以得到同樣的效果。 有一句話說的好:世上沒有最好的,只有適合的!每一款ETL工具都有它的優(yōu)缺點,我們需要根據(jù)實際項目,權(quán)衡利弊選擇適合的ETL工具,合適的就是最好的。當下越來越多公司及其客戶更重視最新的數(shù)據(jù)(實時數(shù)據(jù))展現(xiàn),傳統(tǒng)的ETL工具可能滿足不了這樣的需求,而實時流數(shù)據(jù)處理和云計算技術(shù)更符合。所以我們也需要與時俱進,學習大數(shù)據(jù)時代下的ETL工具。 |
|