現今的企業,尤其是那些把數位轉型放在首要位置的企業,迫切需要即時數據。傳統的每周和每月批次已經無法滿足需求。然而,要從多個來源獲取即時數據,並將其用於自動化流程和動態優化決策並不容易。
最近,在對客戶的遺留系統進行重新架構、將單體架構拆分為微服務時,我們遇到了一個挑戰。我們開始對資料庫進行修改,並按模組對系統進行現代化改造。在這個階段,我們需要確保兩個資料庫保持同步,因為不同的模組可能需要相同的數據 — 換句話說,舊系統需要新資料庫中新系統產生的數據,反之亦然。
我們研究了變更資料擷取(CDC)技術,以確定其是否符合我們的需求。文章詳細介紹了CDC的定義、我們測試過的工具、它們的運作方式和優勢。同時,我們分享了一些案例和建議,幫助其他技術人員在特定情況下選擇適合的CDC工具。
#資料擷取是指透過偵測和擷取來源系統中的變更,然後將這些變更幾乎即時傳遞到目標系統的過程。這些變更可能包括插入、刪除、更新操作以及資料庫結構的DDL變更。
#CDC工具透過監控來源系統中的資料變更來實現其功能。一旦發現變更,CDC工具會擷取並記錄在指定位置,例如資料庫或日誌檔案。隨後,經過處理和轉換的資料會被載入到目標系統,如資料倉儲或分析平台。
有多種捕捉資料庫變更的方法。讓我們來看看其中的一些:
在這個方法中,我們會在來源中維護一些類似CREATED_AT、LAST_UPDATED或DATE_MODIFIED的審計列,並透過查詢來源中的資料來偵測這些列中的變化,以此來擷取任何資料的更改。需要注意的是,這種方式並不能記錄刪除操作。
觸發器是資料庫中根據特定事件執行操作的函數。儘管可用於捕獲任何變更,包括刪除操作,但會降低資料庫效能,因為每次事件都需要進行多次寫入。
資料庫包含交易日誌用於在發生崩潰時進行恢復,儲存所有事件。透過基於日誌的CDC,新資料庫事務直接從本機日誌中讀取,這樣可以擷取變更,而無需掃描來源表,因此更有效率。
這種方法類似於事件驅動架構中的事件溯源,每當系統狀態改變時,我們將其記錄為事件。記錄的事件可以透過以相同的順序重播來隨時重建系統狀態。
#根據情況、應用程式、架構和業務需求,CDC在許多場景下都是至關重要的。以下是CDC有助於工程流程的一些方式:
#市面上有幾種CDC工具,如Oracle Golden Gate、Debezium、IBM Infosphere、Striim、StreamSets和Qlik Replicate。這些工具可以是開源的或付費的。它們通常支援本地和雲端環境,並能處理各種資料來源。在選擇時,考慮以下幾點:
隨著企業變得以技術為驅動,歷史和當前的數據將成為至關重要的差異化因素。實現精確、及時、高效和具成本效益的變更資料擷取將成為任何技術轉型計畫的重要組成部分。當您面臨這種情況時,希望本文能對您有所幫助。
以上是變更資料擷取:概述、原因及優秀實踐的詳細內容。更多資訊請關注PHP中文網其他相關文章!