?譯者 | 陳峻
審校 | 孫淑娟
為了協助您為數據管道項目選擇合適的數據集成方法,我們將簡要地探討ETL和ELT各自的優缺點,以及如何使用這兩種技術。同時,我們也會討論反向ETL為何成為那些需要快速數據加載、最小化維護、以及高度自動化工作流的更好選擇。
ETL和ELT的一般概念
目前,企業面臨的一種常見挑戰是:需要以多種格式,從多個來源捕獲數據,然后將其轉移到一到多個數據目標。由于大多數數據轉移項目都需要收集多個數據源,因此它們需要擁有一個定義良好的數據管道(即,信息從源頭到終點的路徑或工作流程)。如果目標與數據源的存儲格式不同,那么我們就必須在加載到最終目標之前,對數據進行細化或清理。目前,業界有許多工具、服務和流程,可以在數據管道中,起到一定的應用數據轉換與協調的工作。
ETL的流程
ETL是一個數據集成的過程。它使得數據管道項目能夠從各種源頭順利地提取數據、轉換數據、并將數據結果加載到目標數據庫中。無論是ETL還是ELT,數據的轉換與集成過程,都會涉及如下三個階段(如圖1所示):
- 提取——使用數據庫查詢或變更數據捕獲(change data capture,CDC)流程,從源系統(如:SAS、在線、本地)提取數據。提取后,數據會被轉移到暫存區域,以待進一步處理。
- 轉換——數據被清理、處理、轉換、充實后,會被轉換為目標數據管道、數據倉庫、數據庫或數據湖使用的格式。
- 加載——將原始數據和轉換后的數據加載到目標系統中。此過程會涉及到寫入分隔文件、在數據庫中創建模式、以及用累積或聚合的數據去覆蓋現有的數據。
圖1:ETL的流程(源自Kai Waehner的《何時使用反向ETL以及何時使用反模式》)
ETL和ELT流程會以不同的順序執行上述步驟。數據管道團隊必須決定是在將數據加載到目標數據存儲庫之前、還是之后進行數據轉換。
ELT的流程
ELT是一種用于整合來自整個組織的數據,以防止出現數據孤島的方法。數據會經歷數據源中被提取,加載到數據倉庫中,然后按需進行轉換的過程。雖然是要按照應用之需進行轉換,但是在ELT流程中,數據應當在存儲之前進行轉換(如圖2所示)。
- 提取——與ETL相同。
- 加載——與ETL不同,數據直接(即,無需進行清理、擴充、轉換)被加載和交付到目標系統(通常需要考慮目標模式和數據類型的各種遷移)。
- 轉換——在加載數據后,目標平臺會根據業務報告的目的進行轉換。一些公司會利用dbt等工具,來轉換其目標數據。因此,在ELT管道中,我們應按需對目標數據執行轉換。
圖2:ELT的流程(源自Kai Waehner的《何時使用反向ETL以及何時使用反模式》)
ELT會對集成過程中涉及的步驟進行重新排序,使得轉換發生在最后,而不是中間。ELT的流程可以通過切換階段順序,在不考慮結構或格式的情況下,將數據加載到可接受原始數據的數據湖中,并且允許進行即時的數據提取和加載。
促成采用ELT的另一個因素是:基于云的數據倉庫被廣泛地采用與實施。云數據倉庫解決方案提供了計算和存儲之間的完全分離,以及存儲無限數據的能力。如今,大多數數據倉庫都是被托管的。這就意味著企業既不需要購買或管理任何硬件或存儲設備,也不需要安裝軟件或考慮擴展。這些都將由云服務提供商來管理與負責。據此,企業可以在較短的時間內,配置出云托管的數據倉庫。
ETL與ELT:屬性、功能和用例
就ETL與ELT的用例而言,并不存在“一邊倒”的現象。我們通過下表總結了兩者在不同屬性上的區別:
屬性 | ETL | ELT |
最適合于…… | 結構化數據、歷史遺留系統、以及關系型數據庫;在加載到數據倉庫之前轉換數據 | 更快、更及時的數據加載,結構化和非結構化的數據,以及龐大且不斷增長的數據,按需轉換數據 |
支持非結構化數據? | 主要用于本地的關系型數據 | 隨時可以支持非結構化的數據 |
支持數據湖? | 不支持數據湖 | 支持數據湖 |
查找 | 事實數據和維度都可用于暫存區 | 由于提取和加載發生在同一個操作中,因此所有數據皆可用 |
加載時間 | 數據最初被加載到暫存中,然后進入目標系統 | 數據一次性被加載到目標系統中 |
數據輸出 | 通常被用于需要在上傳到關系型數據倉庫之前,實現結構化的本地數據 | 使用結構化、半結構化和非結構化數據,最適合在提供了大容量存儲和計算能力的云環境中,處理海量數據,使數據湖能夠按需快速存儲和轉換數據 |
數據加載的性能 | 由于它是一個多階段的過程,因此數據加載的時間比其他替代品更長 | 由于節省了轉換的等待時間,而且數據會被一次性加載到目標數據庫中,因此數據加載的速度更快 |
轉換的性能 | 數據轉換可能會很慢 | 由于是在加載后按需完成的,因此數據轉換完成得更快 |
聚合 | 復雜性會隨著數據量和種類的增加而增多 | 目標平臺的強大功能可以快速地處理大量數據 |
數據部署 | 基于本地或云端 | 通常基于云端 |
分析的靈活性 | 用例和報告模型都已被明確定義 | 隨著模式的發展,隨時添加數據,分析師可以構建目標倉庫的新視圖 |
合規 | 更符合GDPR、HIPAA和CCPA標準;用戶可以避免將敏感數據加載到目標系統 | 會暴露個人數據,無法不遵守GDPR、HIPAA和CCPA標準 |
實施 | 提供各種工具和支持技術,更易于實施 | 需要有適當的技能來實施和維護的團隊 |
反向ETL的一般概念
反向ETL是一種提取已清理的和處理過的數據架構。它會將數據從數據倉庫(或數據湖/集市)復制到一個或多個操作系統。數據可以被重新引入諸如Salesforce等其他應用程序,可用于業務運營和預測。通過操作已提取的數據源,各類用戶可以使用常用的工具來訪問數據,并獲取相關的洞見。作為現代化數據技術棧的組件,反向ETL允許企業開展那些比單獨使用商業智能(BI)工具,更為復雜的分析。
作為一種戰略性全新的集成流程,反向ETL可以減少那些快速發展型企業在數據分析上花費的時間。該流程更專注于將數據與業務用戶的操作工具相同步,以激活數據倉庫中的數據。用戶必須事先定義好數據,并將其映射到最終目的地的適當列/字段上。
同時,由于企業的數據存儲(如,數據參考或關系數據庫)已成為一種并非所有人都可以完全訪問到的存儲庫,因此,我們需要通過反向ETL,來為不同的業務角色提供基本的數據(如圖3所示)。
圖3:逆向ETL流程(源自Kai Waehner的《何時使用反向ETL以及何時使用反模式》)
反向ETL用例
為了利用數據倉庫中已經清理和準備好的信息,而不是將數據倉庫僅僅視為數據管道中的最終組件,反向ETL用戶可以通過使用連接器,來讀取數據倉庫(如:SAP或SASS)。例如,現代化數據團隊可以借助現成的反向ETL方案,從數據倉庫中提取數據,為電子郵件營銷、客戶支持、銷售或財務模型提供支持。同時,他們也能夠為業務團隊提供更深入、更高效、以及更有價值的自助服務。
總地說來,反向ETL可以協助企業實現:
- 業務響應——快速跟蹤業務應用和數據的變化,并做出反應。
- 業務分析——為業務團隊的分析工作流程提供洞見,以便他們做出更多以數據為依據的決策。
- 數據基礎設施——隨著源系統數量的增加,反向ETL現在已成為能夠快速、有效地操作數據倉庫、以及數據湖中數據的重要工具。
- 為云應用程序復制數據——增強各種報告功能,并能及時查找信息。
購買與構建反向ETL
當數據團隊采用第三方反向ETL工具時,他們可以快速實施運營分析,但到底是該購買,還是自行構建反向ETL?下面我們以設計和構建反向ETL的流程和平臺為例,給出企業需要在做出決定之前,慎重考量的三個因素:
- 構建數據連接器——將數據從倉庫傳輸到下游操作系統,往往需要集成API連接器。這是一個的復雜工作。如果您選擇設計和構建反向ETL、及其相關流程,就需要將ETL管道的構建流程,分配給開發團隊。
- 為長期維護做準備——一旦您的開發團隊推出了數據連接器,那么就需要針對API規范的經常性變化,保持連接器的更新。
- 可擴展性和可靠性設計——數據工程師需要確保反向ETL管道能夠被快速開發,以便跟隨企業的發展,有效地管理數據的激增。而且,反向ETL管道必須是可靠的,不會出現性能或數據傳輸上的問題。
小結
在創建數據管道的過程中,最繁重、且最耗時的步驟便是:從各種來源提取數據,然后測試整個過程。其中,同步每個數據源的收集過程,往往需要各個層面的大量專業知識。如果您和您的團隊對此感興趣的話,請參考如下鏈接:
- Gartner Research(2021),??《Gartner數據集成工具的魔力象限》??
- Gartner Research(2020),??《數據集成工具的關鍵能力》??
- Kai Waehner,??《何時使用反向ETL以及何時使用反模式》??
- Stephen Roddewig,??《ETL與ELT:有什么區別?哪個更好?》??
譯者介紹
陳峻 (Julian Chen),51CTO社區編輯,具有十多年的IT項目實施經驗,善于對內外部資源與風險實施管控,專注傳播網絡與信息安全知識與經驗;持續以博文、專題和譯文等形式,分享前沿技術與新知;經常以線上、線下等方式,開展信息安全類培訓與授課。
原文標題:??ETL, ELT, and Reverse ETL???,作者:Wayne Yaddow?