<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          圖文詳解CDC技術,看這一篇就夠了!

          共 2763字,需瀏覽 6分鐘

           ·

          2022-03-10 03:19


          點擊上方“服務端思維”,選擇“設為星標

          回復”669“獲取獨家整理的精選資料集

          回復”加群“加入全國服務端高端社群「后端圈」


          作者 | Kirill
          出品?|?http://u6.gg/kpcw2

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

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

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

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

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

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

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

          CDC

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

          您可以將 CDC 視為一種機制,它不斷監(jiān)控原始數(shù)據(jù)系統(tǒng)的更改、提取它們并將它們分發(fā)到上游系統(tǒng)。Change Data Capture 通過近乎實時地實現(xiàn)數(shù)據(jù)的增量加載,排除了批量數(shù)據(jù)加載的過程。

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

          好吧,您沒有定期運行非常大的請求,因為您的負載率實際上是峰值負載行為不會高的,因此,您必須執(zhí)行網(wǎng)絡以確保及時發(fā)送您想要的所有數(shù)據(jù),而不是發(fā)送所有這些數(shù)據(jù)并最終因為數(shù)據(jù)是連續(xù)發(fā)布的,而且是為了小規(guī)模的數(shù)據(jù),您可以通過多個數(shù)據(jù)泄露更多的網(wǎng)絡正常運作,并且顯著地展示您的工作成果,讓您有不同的業(yè)務范圍。將數(shù)據(jù)發(fā)送到您的數(shù)據(jù)倉庫更新,因此倉庫中的數(shù)據(jù)是最新的,這是為了提供實時信息,以便根據(jù)數(shù)據(jù)業(yè)務決策。

          變更數(shù)據(jù)操作數(shù)據(jù)中心是您最好的數(shù)據(jù)存儲方式。


          提取增量

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

          在早期,增量知道我們現(xiàn)在的整個問題列表更新了。將成為一個潛在的可能的結果,并且您可能會遺棄一些數(shù)據(jù)。

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

          所有的問題都隨著簡單的出現(xiàn)而得到解決。

          是數(shù)據(jù)庫中的一種特殊過程。示例過程的特殊性類型,每次數(shù)據(jù)庫中的事件發(fā)生后,在示例中的 SQL 示例中的簡單示例被執(zhí)行。

          所以,我們需要一個簡單的表來跟蹤所有的更改,以便為每個創(chuàng)建對象創(chuàng)建一個表,該表將用于更改。

          但也有一個類——盡管現(xiàn)在表中的數(shù)據(jù)有任何變化,簡單簡單。但一些CDC產(chǎn)品仍然基于簡單。


          CDC的現(xiàn)代方法

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

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

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

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


          生產(chǎn)就緒的CDC系統(tǒng)

          要制造一個之前需要生產(chǎn)的CDC系統(tǒng),除了提取之外,我們在一個系統(tǒng)考慮問題:

          1. 必須按照發(fā)生的變化,否則系統(tǒng)可能會出現(xiàn)的不同狀態(tài);

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

          3. 最后,簡單的消息轉換,因為必須支持不同系統(tǒng)的數(shù)據(jù)格式可能。

          系統(tǒng)的所有消息都報道了——所有消息源對更改源/訂閱的消息進行更改,源源不斷地將系統(tǒng)監(jiān)聽到系統(tǒng)目標對象,然后在更改消息這些對象時,都可以在更改消息的范圍內(nèi)。時使用它們。

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

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

          — 本文結束 —


          ●?漫談設計模式在 Spring 框架中的良好實踐

          ●?顛覆微服務認知:深入思考微服務的七個主流觀點

          ●?人人都是 API 設計者

          ●?一文講透微服務下如何保證事務的一致性

          ●?要黑盒測試微服務內(nèi)部服務間調(diào)用,我該如何實現(xiàn)?



          關注我,回復 「加群」 加入各種主題討論群。



          對「服務端思維」有期待,請在文末點個在看

          喜歡這篇文章,歡迎轉發(fā)、分享朋友圈


          在看點這里
          瀏覽 102
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美性爱日本在线 | 国产一级a毛一级a看免费漫画 | 国产久久久 | 亚洲另类区 | 男女一起曹逼的视频国产网站 |