時間序列數據庫的數據集成策略
譯文隨著數字化轉型進入更多行業,產生的數據量呈指數級增長。因此,以不同的格式和結構,從不同來源收集如此大量數據的數據??集成??策略,是當今數據工程團隊的主要關注點。傳統的數據集成方法主要側重于將高度結構化的數據整理到數據倉庫中,難以處理新數據集的數量和異構性。
另一方面,時序數據帶來了額外的復雜性。從本質上講,每個時序數據點的值會隨著時間的推移而減少,因為數據的粒度會隨著數據過時而失去相關性。因此,團隊必須仔細規劃數據集成到時間序列數據庫 (TSDB) 中的策略,以確保分析近乎實時地反映趨勢和情況。
在本文中,我們將研究一些最流行的 TSDB 數據集成方法:
鑒于對時間序列數據的實時洞察需求,大多數現代事件驅動架構都使用 CDC 實現數據流。為了說明它在實踐中是如何工作的,我們將通過??QuestDB(快速TSDB??)的參考實現來展示CDC如何靈活地處理時間序列數據源的需求。
提取、轉換、加載 (ETL)
ETL 是一種傳統且流行的數據集成策略,它涉及將數據加載到目標系統(通常是數據倉庫)之前首先將數據轉換為預定結構。
ETL 的主要優點之一是它提供了最高程度的定制。由于數據首先被提取到暫存區域,在那里它被轉換為干凈的標準化格式,ETL 系統可以處理各種格式和結構。此外,將數據加載到數據倉庫后,數據科學團隊可以運行高效的查詢和分析。最后,鑒于ETL生態系統的成熟,有大量的企業級工具可供選擇。
另一方面,ETL 的維護需要大量資源和時間。清理和轉換數據的邏輯可能很復雜,計算成本很高。這就是為什么大多數ETL系統通常是面向批處理的,只定期將數據加載到倉庫中。隨著數據量和數據來源的增長,這可能會成為瓶頸。
鑒于這些特性,ETL 系統最常用于在分析之前需要復雜轉換邏輯的數據集。它也適用于不需要實時分析的數據集,并且可以存儲以進行長期趨勢分析。
提取、加載、轉換 (ELT)
顧名思義,ELT 首先將數據加載到目標系統(通常是數據湖)中,然后在系統本身內執行轉換。鑒于目標系統負責處理快速加載和轉換,ELT 管道通常利用基于云的現代數據湖來處理要求。
與 ETL 管道相比,ELT 系統可以提供更實時的數據分析,因為原始數據是動態攝取和轉換的。大多數基于云的數據湖都提供 SDK 或端點,以微批量高效攝取數據,并提供幾乎無限的可擴展性。然而,ELT并非沒有缺點。由于轉換由目標系統完成,因此,此類操作受到數據湖支持的功能的限制。如果需要更復雜的轉換邏輯,可能需要執行其他步驟來重新提取數據并以更友好的格式存儲數據。
對于大多數用例,ELT 是比 ETL 更有效的數據集成策略。如果您的應用程序可以利用基于云的工具并且不需要復雜的處理,那么 ELT 可能是近乎實時地處理大量數據的絕佳選擇。
變更數據捕獲 (CDC)
對于新項目,團隊可以計劃將 TSDB 用作 ETL 或 ELT 管道中的目標系統之一。但是,對于現有項目,遷移到 TSDB 或將 TSDB 添加到組合中可能是一個挑戰。首先,可能需要修改或使用新的驅動程序/SDK 將數據流式傳輸到 TSDB。即使支持相同的驅動程序,數據格式也可能需要更改以充分利用 TSDB 功能。CDC工具可用于彌補這一差距。
CDC 原則上很簡單:Debezium 等 CDC 工具會持續監控源系統中的更改,并在發生更改時通知數據管道。導致更改的應用程序通常甚至不知道有一個 CDC 進程在監聽更改。這使得 CDC 非常適合將新的實時數據管道集成到現有架構中,因為它需要對現有應用程序進行少量更改或無需更改。因此,CDC 可以與 ETL 或 ELT 管道結合使用。例如,源系統可以是SQL RDBMS(例如MySQL,PostgreSQL等)或NoSQL DB(例如MongoDB,Casandra),其中一個目標系統可以是TSDB以及其他數據湖或倉庫。
使用 CDC 進行數據集成的主要優點是它提供實時數據復制。與使用批處理的傳統 ETL 和 ELT 系統不同,對源系統的更改會連續流式傳輸到一個或多個目標系統中。這對于近乎實時地跨多個數據庫復制子集或整個數據非常有用。目標數據庫甚至可能位于不同的地理區域或用于不同的目的(即長期存儲與實時分析)。對于值隨時間的變化通常最有用的時序數據,CDC 可以有效地捕獲該增量以獲得實時見解。
CDC 的參考實施
Java Spring 應用程序將股票價格信息發布到 PostgreSQL 中。然后,Debezium Connector 從 PostgreSQL 讀取更改,并將其發布到 Kafka 上。另一方面,QuestDB的Kafka連接器從Kafka主題中讀取并將它們流式傳輸到QuestDB。
在這個參考架構中,Java Spring 應用程序正在將數據轉換并加載到 PostgreSQL 上,然后再復制到 TSDB 進行進一步分析。如果需要更像ELT的管道,來自另一個提供商的原始數據可以直接加載到PostgreSQL上,并在以后的QuestDB中轉換。
使用此架構需要注意的重要一點是,CDC 可以與現有系統無縫集成。從應用程序的角度來看,它可以保留PostgreSQL的事務保證,同時在管道中添加一個新的TSDB組件。
結論
對于使用 TSDB 存儲和分析時序數據的組織來說,數據集成起著重要作用。在本文中,我們探討了使用 ETL 或 ELT 的一些優點和缺點。我們還研究了如何將 CDC 與這些管道結合使用,以提供到 TSDB 的實時復制。
鑒于時間序列數據的特殊性,使用 TSDB 正確存儲和分析它們非常重要。如果是要從頭開始構建,請考慮構建 ELT 管道以將數據流式傳輸到 TSDB。要與現有系統集成,請考慮利用 CDC 工具來限制對當前架構的中斷。