關於ETL工具的思考

bq_wang發表於2008-02-13
閱讀企業版產品白皮書>有感!

通常認為ETL就是資料抽取,轉換,載入的過程,完全正確.就像資料庫就是儲存和管理資料的工具一樣,然而資料庫並不全部是資料的儲存,最重要的是管理,即資料的併發性一致性可恢復性管理,包括一系列的程式和記憶體的管理等等.ETL工具本身也是同樣的問題.如果只是抽取轉換載入,相信透過PowerBuilder的資料管道技術並加以封裝或者一系列的語言工具編碼可以做到,並非很難的事情.

之所以思考,是因為閱讀了一下企業版產品白皮書>,當然也只是粗略的看了一下,其實所有成熟的ETL工具都是相類似的,都是在相互借鑑中不斷的完善的結果.

簡單的總結一下:

Ø 後設資料管理,不管透過DBMS進行儲存也好,透過XML或者自己的管理系統也好.後設資料的管理是必須的,提供了一個視覺化的資料字典.

Ø 和配置工具的整合,或者內建一個配置庫管理工具.

Ø 專案化管理和整合環境,統一對系統內的工作流和任務進行管理

Ø 任務包中都包含源資料,目標資料的管理,其中也包括關聯式資料庫,平面檔案,XML檔案,WebService,COBOL等檔案的管理

Ø 任務包中提供了一系列的排序,轉換,合併,連線,過濾,聚合,查詢表,複製,分裂,條件分割等等一些通用的資料轉換.

Ø 資料流架構和流水線即工作流管理,幾乎所有的ETL工具都是根據時序進行任務流的處理,這也符合資料倉儲的過程化處理要求.其中包括錯誤處理方式,錯誤報表,並行處理,時序等待等等.

Ø 可伸縮硬體環境支援,最大限度的利用硬體的支援.

Ø 並行支援,發揮DBMS的優勢,或者透過內建的記憶體管理進行處理.

不過我有些懷疑ETL的功效,據權威人士統計80%的時間和IO消耗是集中在ETL的抽取和載入環節,而抽取和載入的速度是由DBMS或者其他資料來源所決定的,也就是說無論怎麼最佳化,ETL工具的最佳化也只有20%的餘地.有個玩笑:ETL工具執行的效率肯定比不上最好的程式設計師寫的程式碼的效率,但是起碼要比最差的程式設計師寫的程式碼要強.

也許ETL工具本身就是一個管理的平臺,它的意義在於遮蔽底層編碼的細節和異構資料來源,透過圖形化的方式實現資料流程的排程,從而提供開發和管理上的效率,而並非程式執行效率.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/6517/viewspace-145529/,如需轉載,請註明出處,否則將追究法律責任。

相關文章