图文详解CDC技术,看这一篇就够了!
點(diǎn)擊上方“朱小廝的博客”,選擇“設(shè)為星標(biāo)”
后臺回復(fù)"書",獲取
后臺回復(fù)“k8s”,可領(lǐng)取k8s資料
這篇文章是對變更數(shù)據(jù)捕獲 (CDC)?實(shí)踐的介紹,而不是對特定工具的深入探討。
假設(shè)我們正在構(gòu)建一個(gè)簡單的 Web 應(yīng)用程序。在大多數(shù)情況下,此類項(xiàng)目從最小的數(shù)據(jù)架構(gòu)開始。例如,像 MySQL 或 PostgreSQL 這樣的關(guān)系數(shù)據(jù)庫足以處理和存儲許多用戶可以使用的數(shù)據(jù)。他們輸入查詢,更新它們,關(guān)閉它們,更正它們,通常會執(zhí)行許多操作。它可以是 CRM、ERP、自動銀行系統(tǒng)、計(jì)費(fèi)系統(tǒng),甚至是 POS 終端,應(yīng)有盡有。
但是,存儲在數(shù)據(jù)庫中的信息可能會引起許多第三方系統(tǒng)的興趣,通常是分析系統(tǒng)。企業(yè)需要了解存儲在該系統(tǒng)中的應(yīng)用程序或其他實(shí)體的狀態(tài)——賬戶、存款、制造、人力資源等。數(shù)據(jù)幾乎在每項(xiàng)業(yè)務(wù)運(yùn)營中都發(fā)揮著重要作用。因此,企業(yè)會定期生成報(bào)告,這些報(bào)告反映了企業(yè)感興趣的所有主要指標(biāo),并且是做出進(jìn)一步管理決策所必需的。
報(bào)告和分析計(jì)算通常非常消耗資源。查詢可能需要數(shù)小時(shí)才能完成,這通常會嚴(yán)重影響從中檢索數(shù)據(jù)的系統(tǒng)的性能。另一個(gè)缺點(diǎn)是發(fā)送所有這些數(shù)據(jù)會給網(wǎng)絡(luò)帶來很大壓力。最后,基于該數(shù)據(jù)的業(yè)務(wù)決策由于查詢頻率而延遲。所以,如果你每晚更新數(shù)據(jù),那意味著你要到第二天才能知道昨天發(fā)生了什么。
如果系統(tǒng)有一個(gè)明確的負(fù)載減少時(shí)間段(例如在夜間),并且這段時(shí)間足以卸載所有必要的數(shù)據(jù)而不影響系統(tǒng)的主要活動——那么使用對 RDBMS 的直接查詢可能是一個(gè)可以接受的選項(xiàng)。但是,如果沒有減少負(fù)載的時(shí)期,或者分配的負(fù)載窗口不足以完全卸載整個(gè)更改的數(shù)據(jù)怎么辦?
在這里 CDC 流程來救援。顧名思義,變更數(shù)據(jù)捕獲只會捕獲數(shù)據(jù)中的變化,這是復(fù)制數(shù)據(jù)的 ETL 模式之一。它是一種確定我們感興趣的數(shù)據(jù)的機(jī)制,即跟蹤源數(shù)據(jù)庫中的更改并將其應(yīng)用于目標(biāo)數(shù)據(jù)庫或數(shù)據(jù)倉庫。并且在目標(biāo)數(shù)據(jù)庫或數(shù)據(jù)倉庫中,我們可以進(jìn)行所有類型的分析、報(bào)告生成等,甚至不會影響源數(shù)據(jù)庫的性能。
因此,用戶可以在不降低性能的情況下使用原始系統(tǒng),并且管理層可以隨時(shí)獲取他們做出管理決策所需的報(bào)告。
CDC
因此,CDC 的本質(zhì)——通過捕獲數(shù)據(jù)操作語言 (DML) 更改(插入/更新/刪除)的事實(shí)和更改的數(shù)據(jù)本身來為用戶表提供歷史更改信息。CDC 以可以在上游數(shù)據(jù)系統(tǒng)中復(fù)制的形式提取它們。用行話來說,這樣的數(shù)據(jù)也被稱為“delta”。
您可以將 CDC 視為一種機(jī)制,它不斷監(jiān)控原始數(shù)據(jù)系統(tǒng)的更改、提取它們并將它們分發(fā)到上游系統(tǒng)。Change Data Capture 通過近乎實(shí)時(shí)地實(shí)現(xiàn)數(shù)據(jù)的增量加載,排除了批量數(shù)據(jù)加載的過程。
那么,使用CDC如何解決我們提到的問題呢?
好吧,您沒有定期運(yùn)行非常大的請求,因?yàn)槟呢?fù)載率實(shí)際上是峰值負(fù)載行為不會高的,因此,您必須執(zhí)行網(wǎng)絡(luò)以確保及時(shí)發(fā)送您想要的所有數(shù)據(jù),而不是發(fā)送所有這些數(shù)據(jù)并最終因?yàn)閿?shù)據(jù)是連續(xù)發(fā)布的,而且是為了小規(guī)模的數(shù)據(jù),您可以通過多個(gè)數(shù)據(jù)泄露更多的網(wǎng)絡(luò)正常運(yùn)作,并且顯著地展示您的工作成果,讓您有不同的業(yè)務(wù)范圍。將數(shù)據(jù)發(fā)送到您的數(shù)據(jù)倉庫更新,因此倉庫中的數(shù)據(jù)是最新的,這是為了提供實(shí)時(shí)信息,以便根據(jù)數(shù)據(jù)業(yè)務(wù)決策。
變更數(shù)據(jù)操作數(shù)據(jù)中心是您最好的數(shù)據(jù)存儲方式。
提取增量
在分析也是倉庫、CRM、MDM hub、災(zāi)難時(shí)間、提取事務(wù)的“delta”是它創(chuàng)建系統(tǒng)的架構(gòu)任務(wù),當(dāng)有一段時(shí)間的并行操作時(shí),遷移從一個(gè)系統(tǒng)的數(shù)據(jù)項(xiàng)目中的人常有任務(wù)交給另一個(gè)。
在早期,增量知道我們現(xiàn)在的整個(gè)問題列表更新了。將成為一個(gè)潛在的可能的結(jié)果,并且您可能會遺棄一些數(shù)據(jù)。
為了確保任何遺失這些數(shù)據(jù),但工程師還嘗試了對行進(jìn)行控制,并得出了大致相同的結(jié)果——它可以工作,但它非常資源。不到。
所有的問題都隨著簡單的出現(xiàn)而得到解決。
是數(shù)據(jù)庫中的一種特殊過程。示例過程的特殊性類型,每次數(shù)據(jù)庫中的事件發(fā)生后,在示例中的 SQL 示例中的簡單示例被執(zhí)行。
所以,我們需要一個(gè)簡單的表來跟蹤所有的更改,以便為每個(gè)創(chuàng)建對象創(chuàng)建一個(gè)表,該表將用于更改。
但也有一個(gè)類——盡管現(xiàn)在表中的數(shù)據(jù)有任何變化,簡單簡單。但一些CDC產(chǎn)品仍然基于簡單。
CDC的現(xiàn)代方法
我們可以回想一下,數(shù)據(jù)庫實(shí)際上是事務(wù)性的,并且具有類似的數(shù)據(jù)庫日志(也稱為數(shù)據(jù)庫事務(wù)日志或事務(wù)日志)之類的功能。幾乎所有管理系統(tǒng)都有事務(wù)日志文件,記錄每個(gè)事務(wù)在我們需要做訪問事務(wù)日志的所有數(shù)據(jù)庫并選擇我們想要跟蹤的更改。
因此,在 CDC 中,更改是使用從事務(wù)中讀取更改的,并且會在相應(yīng)的更改表中設(shè)置管理員的過程中通過管理員的。
日志的更改部分是我們正確設(shè)置的這些事務(wù)并跟蹤實(shí)際過去的更改。將它們應(yīng)用到目標(biāo)。
現(xiàn)代讀取事務(wù)處理在獨(dú)立服務(wù)器的內(nèi)存中進(jìn)行系統(tǒng)處理,突出需要遠(yuǎn)程更改這些更改此類型的通知顯示,系統(tǒng)的架構(gòu)不,并提供了令人印象深刻的源代碼,能夠跟蹤數(shù)據(jù)發(fā)生的變化變化的預(yù)測目標(biāo)。
生產(chǎn)就緒的CDC系統(tǒng)
要制造一個(gè)之前需要生產(chǎn)的CDC系統(tǒng),除了提取之外,我們在一個(gè)系統(tǒng)考慮問題:
必須按照發(fā)生的變化,否則系統(tǒng)可能會出現(xiàn)的不同狀態(tài);
在傳遞方面,傳遞保證是的,因此,CDC 必須至少傳遞一次及時(shí)通知消息,如果后續(xù)系統(tǒng)交付了一個(gè)變更事件,則可能導(dǎo)致整個(gè)系統(tǒng)的狀態(tài);
最后,簡單的消息轉(zhuǎn)換,因?yàn)楸仨氈С植煌到y(tǒng)的數(shù)據(jù)格式可能。
系統(tǒng)的所有消息都報(bào)道了——所有消息源對更改源/訂閱的消息進(jìn)行更改,源源不斷地將系統(tǒng)監(jiān)聽到系統(tǒng)目標(biāo)對象,然后在更改消息這些對象時(shí),都可以在更改消息的范圍內(nèi)。時(shí)使用它們。
該解決方案提供了許多好處,擴(kuò)展性。訂閱方法允許主要消息來源/可以向目標(biāo)系統(tǒng)發(fā)送更多的更新,并且可以相應(yīng)地?cái)U(kuò)展此用戶的數(shù)量,以便在需要時(shí)使用地處理數(shù)據(jù)。
第二個(gè)想要的好處是兩個(gè)系統(tǒng)現(xiàn)在連接了。如果源系統(tǒng)更改其數(shù)據(jù)庫或?qū)⑻囟〝?shù)據(jù)集移動到其他位置,則目標(biāo)不需要使用像解拉系統(tǒng)那樣進(jìn)行更改。只要源系統(tǒng)繼續(xù)以相同的格式將消息就不會繼續(xù)接收到系統(tǒng)更新消息,而顯示源已更改任何內(nèi)容。
來源:https://luminousmen.com/post/change-data-capture
想知道更多?掃描下面的二維碼關(guān)注我
后臺回復(fù)"技術(shù)",加入技術(shù)群
后臺回復(fù)“k8s”,可領(lǐng)取k8s資料
總結(jié)
以上是生活随笔為你收集整理的图文详解CDC技术,看这一篇就够了!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 系统、应用监控的缜密思路,堪称性能瓶颈的
- 下一篇: 深度好文:Linux操作系统内存