点击上方“朱小厮的博客”,选择“设为星标”

后台回复"书",获取

后台回复“k8s”,可领取k8s资料

这篇文章是对变更数据捕获 (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. 最后,简单的消息转换,因为必须支持不同系统的数据格式可能。

系统的所有消息都报道了——所有消息源对更改源/订阅的消息进行更改,源源不断地将系统监听到系统目标对象,然后在更改消息这些对象时,都可以在更改消息的范围内。时使用它们。

该解决方案提供了许多好处,扩展性。订阅方法允许主要消息来源/可以向目标系统发送更多的更新,并且可以相应地扩展此用户的数量,以便在需要时使用地处理数据。

第二个想要的好处是两个系统现在连接了。如果源系统更改其数据库或将特定数据集移动到其他位置,则目标不需要使用像解拉系统那样进行更改。只要源系统继续以相同的格式将消息就不会继续接收到系统更新消息,而显示源已更改任何内容。

来源:https://luminousmen.com/post/change-data-capture

想知道更多?描下面的二维码关注我

后台回复"技术",加入技术群

后台回复“k8s”,可领取k8s资料

图文详解CDC技术,看这一篇就够了!相关推荐

  1. Linux文本三剑客之一——awk详解(1)——awk看这两篇就够啦~PS:文末有练习,来练练手吧

    shell编程三剑客 grep --> egrep --> 文本过滤 查询 awk 文本截取 sed  文本的替换和修改 目录 awk awk也可以做小数运算 awk命令简要处理流程 aw ...

  2. 详解Seaborn,看这一篇就够了

    转载:Seaborn常见绘图总结 Seaborn是一个比Matplotlib集成度更高的绘图库,在科研和数据分析中我们常常看到一些画的非常高大上的图,这往往就是Seaborn绘制的图形.因此我们就使用 ...

  3. 荣耀智慧屏鸿蒙安装第三方软件的方法,华为荣耀智慧屏安装第三方软件的教程,图文详解,一看就会!...

    华为荣耀智慧屏安装第三方软件的教程,图文详解,一看就会! 2020年12月09日 17:42作者:网络编辑:王动 分享 华为荣耀智慧屏安装第三方软件后,你的电视就可以享受无广告版视频.免费的影视资源. ...

  4. CompletableFuture使用详解(全网看这一篇就行)

    Java8 CompletableFuture 用法全解_孙大圣666的博客-CSDN博客_completablefuture ​​​CompletableFuture使用详解(全网看这一篇就行)_代 ...

  5. Dubbo详解,用心看这一篇文章就够了【重点】

    1.1 Dubbo概述 Dubbo是阿里巴巴开源的基于 Java 的高性能RPC(一种远程调用) 分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案. 每天为2千 ...

  6. DFS (深度优先搜索) 算法详解 + 模板 + 例题,这一篇就够了

    深度优先搜索算法(Depth First Search,简称DFS):一种用于遍历或搜索树或图的算法. 沿着树的深度遍历树的节点,尽可能深的搜索树的分支.当节点v的所在边都己被探寻过或者在搜寻时结点不 ...

  7. 什么是SD-WAN?图文详解五大技术点

    目录 什么是SD-WAN? 为什么需要SD-WAN? 1. 更快:规划最优路线,降低网络延时 2. 更稳:绕开拥塞线路,避免抖动丢包 SD-WAN,为极速远程而生 庞大机房节点数量决定扎实基建 千万终 ...

  8. 图文详解RAID 技术 – RAID0、RAID1、RAID5、RAID6 [转][图]

    写在前面,本文转载修改自开心技术乐园,对文中的相关概念进行补充和贴图,对错误概念的改正和完善,如有遗漏,欢迎留言指正和探讨,转载请标明出处. 一.RAID 概述 1988 年美国加州大学伯克利分校的 ...

  9. python工具安装教程_Python 开发工具PyCharm安装教程图文详解(新手必看)

    一.概念理解1.json.dumps()和json.loads()是json格式处理函数(可以这么理解,json是字符串) (1)json.dumps()函数是将一个Python数据类型列表进行jso ...

最新文章

  1. leetcode-2 两数相加
  2. Attention is All You Need?LSTM提出者:我看未必
  3. C#Excel文件读取问题及解决办法
  4. android 爆炸动画,一个可以给view显示粒子爆炸/绽放效果的android库 Bloom
  5. Openlayer4 - 最好最强大的开源地图引擎
  6. 初学C#和MVC的一些心得,弯路,总结,还有教训(4)--Cache 关于创建多个缓存实例
  7. java记秒,Java程序获取自Java时代开始以来的秒数
  8. EF BB BF的问题
  9. 【0201】用户登录界面设计
  10. C# 中属性PropertyInfo的setvalue用法说明
  11. 解决U盘复制拷贝文件过大不能超过4G的方法
  12. php制作与设计动态网页,如何制作动态网站
  13. 4G终端附着时如何选择SGW和PGW
  14. I/O控制方式——轮询,中断,DMA,通道
  15. 云端守望者(上):十二道难关
  16. Java计算时间差、日期差总结
  17. 请编写一个正方体类,类的私有数据成员是边长,要求用公有成员函数实现以下功能:1. 由键盘分别输入正方体的边长2. 计算并输出正方体的体积
  18. QT 创建文件,文件夹
  19. 【密码学原理】数字签名(ElGamal签名,Schnorr签名,椭圆曲线签名,RSA-PSS签名)
  20. 如何在android模拟器中模拟sd卡,如何在Android模拟器中模拟SD卡

热门文章

  1. 数据库表设计、 数据库分层、myslq水平拆分、oracle表分区
  2. 电机串电阻会有什么影响?
  3. 重学JavaScript(1)--JavaScript简介
  4. 揭秘:蚂蚁金服bPaaS究竟是什么?
  5. 3.2Python的循环结构语句:
  6. 别用这种方式聊天,你都不知道自己是怎么聊死的
  7. MySQL从库的列类型不一致导致的复制异常问题
  8. MyBatis整合Spring的实现(2)
  9. 欢迎您参加_ADT技术培训营
  10. java对字符处理(一)--对HTML中字符转换