图文详解cdc技术,看这一篇就够了!

朱小厮 朱小厮     2022-12-08     314

关键词:

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

后台回复"书",获取

后台回复“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资料

关于反爬虫,看这一篇就够了

...本文来自携程酒店研发部研发经理崔广宇在第三期【携程技术微分享】上的分享,以下为整理的内容概要。墙裂建议点击视频回放,“现场”围观段子手攻城狮大崔,如何高智商&高情商地完美碾压爬虫。。。关注携程... 查看详情

关于反爬虫,看这一篇就够了(转)

...本文来自携程酒店研发部研发经理崔广宇在第三期【携程技术微分享】上的分享,以下为整理的内容概要。墙裂建议点击视频回放,“现场”围观段子手攻城狮大崔,如何高智商&高情商地完美碾压爬虫。。。关注携程技术中... 查看详情

k8sservice服务详解,看这一篇就够了!!(代码片段)

k8s用命名空间namespace把资源进行隔离,默认情况下,相同的命名空间里的服务可以相互通讯,反之进行隔离。1.1ServiceKubernetes中一个应用服务会有一个或多个实例(Pod,Pod可以通过rs进行多复本的建立),每个实例(Pod)的IP地址由... 查看详情

[转]关于深度学习,看这一篇就够了

关于深度学习,看这一篇就够了原文地址:http://www.dlworld.cn/XueXiSuanFa/13.html[日期:2016-04-26]来源:36氪 作者:[字体:大 中 小]    编者按:本文作者王川,投资人,中科大少年班校友,现居加州硅谷,个人微信号... 查看详情

elasticsearch入门,看这一篇就够了(代码片段)

Elasticsearch入门,看这一篇就够了前言可视化工具kibanakibana的安装kibana配置kibana的启动Elasticsearch入门操作操作index创建index索引别名有什么用删除索引查询索引exist索引操作document插入document查询document删除document更新document使用... 查看详情

关于反爬虫,看这一篇就够了

...本文来自携程酒店研发部研发经理崔广宇在第三期【携程技术微分享】上的分享,以下为整理的内容概要。墙裂建议点击视频回放,“现场”围观段子手攻城狮大崔,如何高智商&高情商地完美碾压爬虫。。。关注... 查看详情

json入门看这一篇就够了

什么是JSONJSON:JavaScriptObjectNotation【JavaScript对象表示法】JSON是存储和交换文本信息的语法。类似XML。JSON采用完全独立于任何程序语言的文本格式,使JSON成为理想的数据交换语言S为什么需要JSON提到JSON,我们就应该和XML来进行对... 查看详情

学习springboot知识看这一篇就够了

...ingBoot,先后写了很多关于SpringBoot的文章,发表在技术社区、我的博客和我的公号内。粗略的统计了一下总共的文章加起来大概有六十多篇了,其中一部分是在技术社区做的系列课程。我在写文章的时候将文章中的示... 查看详情

json格式对象该怎么传?看这一篇就够了!

一、List<Map>一般会使用在SQL语句的返回结果上代码如下:@Query(value="selectuser_name,user_agefromsys_userwheredept_id=?,nativeQuery=true)List<Map>findUserInfoById(LongdeptId);根据部门的ID查 查看详情

java中的多线程你只要看这一篇就够了

 https://www.cnblogs.com/wxd0108/p/5479442.html  查看详情

jetpackworkmanager看这一篇就够了~

前言最近有读者反馈,在我的新书​​《AndroidJetpack开发:原理解析与应用实战》​​中并没有提及到WorkManager,这是因为目前这个东西在国内并不是很好用。最近因为工作需要正好研究了下,也作为补充章节分享给读者。什么... 查看详情

python函数式编程,看这一篇就够了!

...迷路机器之心、Python编程时光本文对Python中的函数式编程技术进行了简单的入门介绍。头等函数在Python中,函数是「头等公民」(first-class)。也就是说,函数与其他数据类型(如int)处于平等地位。因而&... 查看详情

python函数式编程,看这一篇就够了!

...迷路机器之心、Python编程时光本文对Python中的函数式编程技术进行了简单的入门介绍。头等函数在Python中,函数是「头等公民」(first-class)。也就是说,函数与其他数据类型(如int)处于平等地位。因而&... 查看详情

uniapp离线打包android高德地图定位uni.getlocation就看这一篇就够了

参考技术Agit下在哪里创建证书,证书就创建在哪里 查看详情

linux虚拟网络设备veth-pair详解,看这一篇就够了(代码片段)

本文首发于我的公众号cloud_dev,专注于干货分享,号内有大量书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫。前面这篇文章介绍了tap/tun设备之后,大家应该对虚拟网络设备有了一定的了解,本... 查看详情

handler看这一篇就够了(代码片段)

Handler使用首先来熟悉一下Handler的四种使用方式,如果比较熟悉可以直接跳过:通过sendMessage消息机制来发送sendEmptyMessage(int);//发送一个空的消息sendMessage(Message);//发送消息,消息中可以携带参数sendMessageAtTime(Message,long... 查看详情

@override看这一篇就够了

一、是什么一句话:它是表示重写的注解@Override注解是伪代码,用于表示被标注的方法是一个重写方法。不写也完全可以,但强烈建议写上! 二、为什么用既然不写@Override也可以重写父类的方法,那为什么非要“多此一... 查看详情

java集合,看这一篇就够了

Java集合是java.util下特别有用的工具类,大致分为2个系列:Collection接;口和Map接口派生的。按体系分,则分为四种1. List:有序重复的集合;2.Set:无序不重复的集合3.Map:有映射关系的集合(key-value)4.Queue:代表队列集合的实现(JDK5... 查看详情