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