變更數(shù)據(jù)捕獲:概述、原因及優(yōu)秀實(shí)踐
當(dāng)今的企業(yè),尤其是那些已將數(shù)字化轉(zhuǎn)型置于優(yōu)先地位的企業(yè),需要接近實(shí)時(shí)的數(shù)據(jù)。每周和每月的批處理已不再適用。然而,從多種來(lái)源獲取實(shí)時(shí)數(shù)據(jù)以自動(dòng)化流程并做出動(dòng)態(tài)優(yōu)化決策并非易事。
最近,在為客戶重新架構(gòu)遺留系統(tǒng)并將單體架構(gòu)拆分為微服務(wù)時(shí),我們面臨了這個(gè)特定的挑戰(zhàn)。我們開(kāi)始為新架構(gòu)更改數(shù)據(jù)庫(kù),并按模塊對(duì)系統(tǒng)進(jìn)行現(xiàn)代化改造。在此階段,我們需要讓兩個(gè)數(shù)據(jù)庫(kù)保持同步,因?yàn)椴煌哪K可能需要相同的數(shù)據(jù) — 換句話說(shuō),舊系統(tǒng)需要新數(shù)據(jù)庫(kù)中新系統(tǒng)生成的數(shù)據(jù),反之亦然。
我們探索了變更數(shù)據(jù)捕獲(CDC)來(lái)看它是否能實(shí)現(xiàn)這一目標(biāo)。本文深入探討了CDC的概念、我們探索過(guò)的工具、它們的工作原理以及它們的好處。我們還提供了一些例子和建議,指導(dǎo)其他技術(shù)人員如何為其特定用例選擇合適的CDC工具。

什么是變更數(shù)據(jù)捕獲?
變更數(shù)據(jù)捕獲是檢測(cè)和捕獲源系統(tǒng)(通常是數(shù)據(jù)庫(kù))中的變更,并將這些變更以幾乎實(shí)時(shí)的方式傳遞到目標(biāo)系統(tǒng)的過(guò)程。這些變更可以是插入、刪除、更新以及通過(guò)DDL進(jìn)行的數(shù)據(jù)庫(kù)結(jié)構(gòu)更改等。
變更數(shù)據(jù)捕獲工具的工作原理
CDC工具通過(guò)持續(xù)監(jiān)控源系統(tǒng)中的數(shù)據(jù)變更來(lái)工作。每當(dāng)檢測(cè)到變更時(shí),它會(huì)將其捕獲并記錄到一個(gè)單獨(dú)的位置,比如數(shù)據(jù)庫(kù)、日志文件,或發(fā)送到消息代理。然后捕獲的數(shù)據(jù)經(jīng)過(guò)處理、轉(zhuǎn)換并加載到目標(biāo)系統(tǒng),比如數(shù)據(jù)倉(cāng)庫(kù)、分析平臺(tái)或另一個(gè)數(shù)據(jù)庫(kù)中。
有多種捕獲數(shù)據(jù)庫(kù)變更的方法。讓我們來(lái)看看其中的一些:
1.基于時(shí)間戳/查詢的
在這種方法中,我們?cè)谠粗芯S護(hù)類似于CREATED_AT、LAST_UPDATED或DATE_MODIFIED的審計(jì)列,并查詢?cè)粗械臄?shù)據(jù)以根據(jù)這些列中的變更來(lái)捕獲任何變化。需要注意的是,這種方法無(wú)法捕獲刪除操作。
2.基于觸發(fā)器的
觸發(fā)器是根據(jù)數(shù)據(jù)庫(kù)中發(fā)生的特定事件執(zhí)行用戶定義操作的函數(shù)。這可用于捕獲數(shù)據(jù)庫(kù)中的任何變更,包括刪除操作。然而,這種方法會(huì)降低數(shù)據(jù)庫(kù)性能,因?yàn)槊看问录l(fā)生時(shí)都需要多次寫入。
3.基于日志的
數(shù)據(jù)庫(kù)包含用于在崩潰時(shí)進(jìn)行恢復(fù)的事務(wù)日志(或重做日志),它存儲(chǔ)了所有事件。通過(guò)基于日志的CDC,新數(shù)據(jù)庫(kù)事務(wù)是從其本機(jī)日志中讀取的。這種方式可以捕獲變更,而無(wú)需掃描源表,因此比其他兩種方法更有效。

這種方法類似于事件驅(qū)動(dòng)架構(gòu)中的事件溯源,每當(dāng)系統(tǒng)狀態(tài)發(fā)生變化時(shí),我們將其記錄為一個(gè)事件。記錄的事件可以通過(guò)以相同的順序重播來(lái)隨時(shí)重建系統(tǒng)狀態(tài)。
為什么使用CDC?
根據(jù)情況、應(yīng)用程序、架構(gòu)和業(yè)務(wù)需求,CDC在許多場(chǎng)景下都是至關(guān)重要的。以下是CDC有助于工程過(guò)程的一些方式:
- 實(shí)時(shí)數(shù)據(jù)可用性:CDC工具以幾乎實(shí)時(shí)的方式捕獲變更,確保最新的數(shù)據(jù)可用于分析、報(bào)告或進(jìn)一步處理。
- 更快的決策制定:CDC有助于減少捕獲和數(shù)據(jù)可用性之間的延遲,實(shí)現(xiàn)更快的分析和決策制定。
- 高效的數(shù)據(jù)集成:CDC工具有助于從多個(gè)操作源捕獲數(shù)據(jù),并將其轉(zhuǎn)換為單一目標(biāo)數(shù)據(jù)庫(kù)或數(shù)據(jù)湖中的通用格式。
- 目標(biāo)數(shù)據(jù)庫(kù)的定制設(shè)計(jì):CDC提供跨功能的好處,比如在CQRS系統(tǒng)中創(chuàng)建只讀搜索或查詢數(shù)據(jù)庫(kù)、創(chuàng)建審計(jì)數(shù)據(jù)庫(kù),或在數(shù)據(jù)倉(cāng)庫(kù)中捕獲數(shù)據(jù)。它允許將非功能性和架構(gòu)需求與主要數(shù)據(jù)存儲(chǔ)解耦。
- 簡(jiǎn)化的數(shù)據(jù)遷移:在我們的情況下,CDC有助于在現(xiàn)代化階段維護(hù)遺留和新數(shù)據(jù)庫(kù)之間的數(shù)據(jù)一致性。這也適用于其他各種數(shù)據(jù)遷移場(chǎng)景。
如何選擇合適的CDC工具?
市場(chǎng)上有幾種CDC工具,比如Oracle Golden Gate、Debezium、IBM Infosphere、Striim、StreamSets和Qlik Replicate。這些工具可以是開(kāi)源的或付費(fèi)的。它們通常支持本地和云環(huán)境,并能處理各種數(shù)據(jù)源。在選擇時(shí),考慮以下幾點(diǎn):
- 與數(shù)據(jù)源的兼容性:至少,您選擇的工具必須與您想要捕獲變更的所有數(shù)據(jù)源兼容。
- 實(shí)時(shí)數(shù)據(jù)捕獲:工具應(yīng)該以幾乎實(shí)時(shí)的方式捕獲變更,以便您能夠使用最新的數(shù)據(jù)。
- 數(shù)據(jù)轉(zhuǎn)換和集成:CDC工具應(yīng)該能夠處理從源到目標(biāo)數(shù)據(jù)類型的數(shù)據(jù)轉(zhuǎn)換。
- 價(jià)格:CDC工具必須對(duì)您的用例具有成本效益。有開(kāi)源、付費(fèi)和許可產(chǎn)品可供選擇。
- 使用便捷性和支持:工具應(yīng)該對(duì)您的團(tuán)隊(duì)易于使用,并提供充分的支持,包括全面的文檔和技術(shù)支持。
- 其他功能:根據(jù)您的需求,您可能還想檢查其他特定功能,比如源和目標(biāo)之間的雙向同步和云支持。
隨著企業(yè)變得以技術(shù)為驅(qū)動(dòng),歷史和當(dāng)前的數(shù)據(jù)將成為一個(gè)至關(guān)重要的差異化因素。實(shí)現(xiàn)精確、及時(shí)、高效和具有成本效益的變更數(shù)據(jù)捕獲將成為任何技術(shù)轉(zhuǎn)型計(jì)劃的重要組成部分。當(dāng)您面臨這種情況時(shí),希望本文能對(duì)您有所幫助。
































