ETL就是Extract、Transfrom、Load即抽取、轉換、加載三個英文單詞首字母的集合。抽取:就是從源系統抽取需要的數據,這些源系統可以是同構也可以是異構的:比如源系統可能是Excel電子表格、XML文件、關系型數據庫,而目標系統通常都是關系型的數據倉庫。
轉換:源系統的數據按照分析目的,轉換成目標系統要求的格式。其實這個名詞並沒有完全表達出這個步驟的目的,更准確的說法應該是數據清洗和數據加工。
加載:把轉換后的數據裝載到目標數據庫。作為聯機分析、數據挖掘的基礎。
整個ETL過程就像是在源系統和目標系統之間構建一個管道,數據在這個管道里源源不斷的流動。而設計一個ETL架構就是要建起起這個管道。這個管道的部署構建就涉及到三個環節,或者說三個位置。分別是Source、Stagearea、Target。對應關系如下:
E——————> T ——————> L
Source————> Stagearea——> Target
E:抽取,這個活動毫無疑問發生在數據源上,這個節點也就叫做Souce。
T:轉換,轉換活動通常是ETL中最具伸縮性的環節,換句話說,這個環節的活動可繁可簡。最簡單的情形下,源系統的數據不需要任何轉換,就直接進入目標,這時這個T實際就是沒有的。而復雜的情形就多了,比如數據格式轉化、數據精度轉換、數據清洗、缺失數據補齊、異常數據排除等等。在這種情形下,通常會專門准備一個臨時系統,提供足夠的軟硬件資源來支持這種轉換。這個臨時系統就叫做Stagearea,也叫做數據登台區,即數據到達終點之前的區域。
L:加載,這個活動毫無懸念的發生在目標數據庫中,這個目標數據庫叫做Target。
我們明白了什么是ETL,那么ELT就好理解了。ELT也是同樣三個單詞的首字母組合,只不過是把T、L顛倒了下順序而已。可就是這個順序的顛倒,差異就出來了。ETL強調的是先進性數據轉換,然后再加載到目標。這個轉換過程可能發生在任何地方,可以在原系統進行,也可以在Stagearea進行,也可以在目標系統進行。而ELT是把數據加載到數據倉庫后再進行轉化,發生的地點只能是目標系統。
這兩種方式各有優缺點,如果源系統有多個,比如一個國際型公司,起源數據可能來自世界各地,這時就可以通過部署多個中間節點,從而分散數據轉換的壓力,有點類似分布式計算的味道,可以提高數據加載效率。因此,ETL非常適用於多個數據源對一個目標的拓撲結構。
而ELT把數據加載到數據倉庫在進行轉換,通常數據倉庫都會部署在高性能主機上,顯而易見,這種設計是要充分的利用目標系統的處理能力,大樹底下好乘涼嗎。ELT的另一個優點是可以充分利用產品的內置能力,如果ETL的源、目標都是相同的產品,比如都是Oracle數據庫,現在RDBMS內置的數據處理引擎越來越強大,ELT能夠充分利用這些內置引擎。
所以,ETL還是ELT其實並沒有絕對的差異,也沒有孰優孰劣,最終還是要根據現實環境選擇最適合的。
ETL工具的選擇 在數據倉庫項目中該如何選擇ETL工具呢?一般來說需要考慮以下幾個方面: (1)對平台的支持程度。 (2)對數據源的支持程度。 (3)抽取和裝載的性能是不是較高,且對業務系統的性能影響大不大,侵入性高不高。 (4)數據轉換和加工的功能強不強。 (5)是否具有管理和調度功能。 (6)是否具有良好的集成性和開放性。