圖文詳解 CDC 技術

這篇文章是對變更數據捕獲 (CDC) 實踐的介紹,而不是對特定工具的深入探討。

假設我們正在構建一個簡單的 Web 應用程序。在大多數情況下,此類項目從最小的數據架構開始。例如,像 MySQL 或 PostgreSQL 這樣的關係數據庫足以處理和存儲許多用戶可以使用的數據。他們輸入查詢,更新它們,關閉它們,更正它們,通常會執行許多操作。它可以是 CRM、ERP、自動銀行系統、計費系統,甚至是 POS 終端,應有盡有。

但是,存儲在數據庫中的信息可能會引起許多第三方系統的興趣,通常是分析系統。企業需要了解存儲在該系統中的應用程序或其他實體的狀態——賬戶、存款、製造、人力資源等。數據幾乎在每項業務運營中都發揮着重要作用。因此,企業會定期生成報告,這些報告反映了企業感興趣的所有主要指標,並且是做出進一步管理決策所必需的。

報告和分析計算通常非常消耗資源。查詢可能需要數小時才能完成,這通常會嚴重影響從中檢索數據的系統的性能。另一個缺點是發送所有這些數據會給網絡帶來很大壓力。最後,基於該數據的業務決策由於查詢頻率而延遲。所以,如果你每晚更新數據,那意味着你要到第二天才能知道昨天發生了什麼。

如果系統有一個明確的負載減少時間段(例如在夜間),並且這段時間足以卸載所有必要的數據而不影響系統的主要活動——那麼使用對 RDBMS 的直接查詢可能是一個可以接受的選項。但是,如果沒有減少負載的時期,或者分配的負載窗口不足以完全卸載整個更改的數據怎麼辦?

在這裏 CDC 流程來救援。顧名思義,變更數據捕獲只會捕獲數據中的變化,這是複製數據的 ETL 模式之一。它是一種確定我們感興趣的數據的機制,即跟蹤源數據庫中的更改並將其應用於目標數據庫或數據倉庫。並且在目標數據庫或數據倉庫中,我們可以進行所有類型的分析、報告生成等,甚至不會影響源數據庫的性能。

因此,用戶可以在不降低性能的情況下使用原始系統,並且管理層可以隨時獲取他們做出管理決策所需的報告。

CDC

因此,CDC 的本質——通過捕獲數據操作語言 (DML) 更改(插入 / 更新 / 刪除)的事實和更改的數據本身來爲用戶表提供歷史更改信息。CDC 以可以在上游數據系統中複製的形式提取它們。用行話來說,這樣的數據也被稱爲 “delta”。

您可以將 CDC 視爲一種機制,它不斷監控原始數據系統的更改、提取它們並將它們分發到上游系統。Change Data Capture 通過近乎實時地實現數據的增量加載,排除了批量數據加載的過程。

那麼,使用 CDC 如何解決我們提到的問題呢?

好吧,您沒有定期運行非常大的請求,因爲您的負載率實際上是峯值負載行爲不會高的,因此,您必須執行網絡以確保及時發送您想要的所有數據,而不是發送所有這些數據並最終因爲數據是連續發佈的,而且是爲了小規模的數據,您可以通過多個數據泄露更多的網絡正常運作,並且顯着地展示您的工作成果,讓您有不同的業務範圍。將數據發送到您的數據倉庫更新,因此倉庫中的數據是最新的,這是爲了提供實時信息,以便根據數據業務決策。

變更數據操作數據中心是您最好的數據存儲方式。

提取增量

在分析也是倉庫、CRM、MDM hub、災難時間、提取事務的 “delta” 是它創建系統的架構任務,當有一段時間的並行操作時,遷移從一個系統的數據項目中的人常有任務交給另一個。

在早期,增量知道我們現在的整個問題列表更新了。將成爲一個潛在的可能的結果,並且您可能會遺棄一些數據。

爲了確保任何遺失這些數據,但工程師還嘗試了對行進行控制,並得出了大致相同的結果——它可以工作,但它非常資源。不到。

所有的問題都隨着簡單的出現而得到解決。

是數據庫中的一種特殊過程。示例過程的特殊性類型,每次數據庫中的事件發生後,在示例中的 SQL 示例中的簡單示例被執行。

所以,我們需要一個簡單的表來跟蹤所有的更改,以便爲每個創建對象創建一個表,該表將用於更改。

但也有一個類——儘管現在表中的數據有任何變化,簡單簡單。但一些 CDC 產品仍然基於簡單。

CDC 的現代方法

我們可以回想一下,數據庫實際上是事務性的,並且具有類似的數據庫日誌(也稱爲數據庫事務日誌或事務日誌)之類的功能。幾乎所有管理系統都有事務日誌文件,記錄每個事務在我們需要做訪問事務日誌的所有數據庫並選擇我們想要跟蹤的更改。

因此,在 CDC 中,更改是使用從事務中讀取更改的,並且會在相應的更改表中設置管理員的過程中通過管理員的。

日誌的更改部分是我們正確設置的這些事務並跟蹤實際過去的更改。將它們應用到目標。

現代讀取事務處理在獨立服務器的內存中進行系統處理,突出需要遠程更改這些更改此類型的通知顯示,系統的架構不,並提供了令人印象深刻的源代碼,能夠跟蹤數據發生的變化變化的預測目標。

生產就緒的 CDC 系統

要製造一個之前需要生產的 CDC 系統,除了提取之外,我們在一個系統考慮問題:

  1. 必須按照發生的變化,否則系統可能會出現的不同狀態;

  2. 在傳遞方面,傳遞保證是的,因此,CDC 必須至少傳遞一次及時通知消息,如果後續系統交付了一個變更事件,則可能導致整個系統的狀態;

  3. 最後,簡單的消息轉換,因爲必須支持不同系統的數據格式可能。

系統的所有消息都報道了——所有消息源對更改源 / 訂閱的消息進行更改,源源不斷地將系統監聽到系統目標對象,然後在更改消息這些對象時,都可以在更改消息的範圍內。時使用它們。

該解決方案提供了許多好處,擴展性。訂閱方法允許主要消息來源 / 可以向目標系統發送更多的更新,並且可以相應地擴展此用戶的數量,以便在需要時使用地處理數據。

第二個想要的好處是兩個系統現在連接了。如果源系統更改其數據庫或將特定數據集移動到其他位置,則目標不需要使用像解拉系統那樣進行更改。只要源系統繼續以相同的格式將消息就不會繼續接收到系統更新消息,而顯示源已更改任何內容。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/fsKZ-NDryC-VIUyRx_j3aA