數據分析你需要知道的操作:ETL和ELT
- 2020 年 3 月 9 日
- 筆記
如果您接觸過數據倉庫, 您可能會使用 ETL (Extract、 Transform、 Load) 或 ELT ( Extract、Load、 Transform) 將您的數據從不同的來源提取到數據倉庫中。這些是移動數據或集成數據的常用方法, 以便您可以關聯來自不同來源的信息, 將數據安全地存儲在一個位置, 並使公司的成員能夠從不同業務部門查看綜合數據。ETL和ELT兩個術語的區別與過程的發生順序有關。這些方法都適合於不同的情況。
一、什麼是ETL?
ETL是用來描述將數據從來源端經過抽取(extract)、轉換(transform)、加載(load)至目的端的過程。ETL一詞較常用在數據倉庫,但其對象並不限於數據倉庫。
ETL是構建數據倉庫的最重要的環節,用戶從數據源抽取出所需的數據,經過數據清洗,最終按照預先定義好的數據倉庫模型,將數據加載到數據倉庫。
ETL架構的特殊優勢:
ETL可以分擔數據庫系統的負載,可採用單獨的硬件服務器部署
ETL相對ELT架構可以實現更為複雜的數據轉化邏輯
ETL與底層的數據庫數據存儲無關
二、什麼是ELT?
ELT只負責提供圖形化的界面來設計業務規則,數據的整個加工過程都在目標和源的數據庫之間流動,ELT協調相關的數據庫系統來執行相關的應用,數據加工過程既可以在源數據庫端執行,也可以在目標數據倉庫端執行(主要取決於系統的架構設計和數據屬性)。當ETL過程需要提高效率,則可以通過對相關數據庫進行調優,或者改變執行加工的服務器就可以達到。ELT 通常發生在 NoSQL 數據庫中,具有處理非結構化數據的能力。一般數據庫廠商會也會力推該種架構,像Oracle和Teradata都極力宣傳ELT架構。
ELT架構的特殊優勢:
ELT主要通過數據庫引擎來實現系統的可擴展性
ELT可以保持所有的數據始終在數據庫當中,避免數據的加載和導出,從而保證效率,提高系統的可監控性。
ELT可以根據數據的分佈情況進行並行處理優化,並可以利用數據庫的固有功能優化磁盤I/O。
ELT的可擴展性取決於數據庫引擎和其硬件服務器的可擴展性。
通過對相關數據庫進行性能調優,ELT過程獲得3到4倍的效率提升一般不是特別困難。
三、總結
經過這些描述後可能會讓您懷疑哪種方法更好。事實上, 在不同的情況下, 這些方法中的每一種都有優勢, 最好的解決方案取決於你的項目情況。ELT在以下情況中,配合ETL工具將會將會達到更好的效果:
1、當您想要執行複雜的計算時,ETL工具比數據倉庫或數據池更有效
2、如果要在加載到目標存儲之前進行大量數據清理。ETL是一種更好的解決方案,因為您不會將不需要的數據移動到目標。
3、當您僅使用結構化數據或傳統結構化數據倉庫時。ETL工具通常最有效地將結構化數據從一個環境移動到另一個環境。
4、當你想要擴展補充數據時。如果要在將數據移動到目標存儲時擴展補充數據,則需要使用ETL工具。例如,添加時間戳。