0


数据仓库内容分享(十):CDC 技术

成为数据治理专家: CDC 技术

图片

CDC 概述

CDC 的全称是

Change Data Capture

(变更数据捕获) ,在广义的概念上,只要是能捕获数据变更的技术,我们都可以称之为 CDC 。目前通常描述的 CDC 技术主要面向数据库的变更,是一种用于捕获数据库中数据变更的技术。CDC 技术的应用场景非常广泛:

数据同步:用于备份,容灾;数据分发:一个数据源分发给多个下游系统;数据采集:面向数据仓库 / 数据湖的 ETL 数据集成,是非常重要的数据源。CDC 的技术方案非常多,目前业界主流的实现机制可以分为两种:

  • 基于查询的 CDC:离线调度查询作业,批处理。把一张表同步到其他系统,每次通过查询去获取表中最新的数据;无法保障数据一致性,查的过程中有可能数据已经发生了多次变更;不保障实时性,基于离线调度存在天然的延迟。
  • 基于日志的 CDC:实时消费日志,流处理,例如 MySQL 的 binlog 日志完整记录了数据库中的变更,可以把 binlog 文件当作流的数据源;保障数据一致性,因为 binlog 文件包含了所有历史变更明细;保障实时性,因为类似 binlog 的日志文件是可以流式消费的,提供的是实时数据。

CDC 技术应用场景

在海量数据时代,数据中蕴含着大量的价值,如何让数据流动起来而不是只为某一个业务系统所使用, 是挖掘数据价值的前提。CDC 技术就能很好的解决这一点,脱离单一的业务系统,把关注度聚焦到数据上。

假设我们正在构建一个简单的 Web 应用程序。在大多数情况下,此类项目从最小的数据架构开始。例如,像 MySQL 或 PostgreSQL 这样的关系数据库足以处理和存储许多用户可以使用的数据。他们输入查询,更新它们,关闭它们,更正它们,通常会执行许多操作。它可以是 CRM、ERP、自动银行系统、计费系统,甚至是 POS 终端,应有尽有。

但是,存储在数据库中的信息可能会引起许多第三方系统的兴趣,通常是分析系统。企业需要了解存储在该系统中的应用程序或其他实体的状态——账户、存款、制造、人力资源等。数据几乎在每项业务运营中都发挥着重要作用。因此,企业会定期生成报告,这些报告反映了企业感兴趣的所有主要指标,并且是做出进一步管理决策所必需的。

报告和分析计算通常非常消耗资源。查询可能需要数小时才能完成,这通常会严重影响从中检索数据的系统的性能。另一个缺点是发送所有这些数据会给网络带来很大压力。最后,基于该数据的业务决策由于查询频率而延迟。所以,如果你每晚更新数据,那意味着你要到第二天才能知道昨天发生了什么。

如果系统有一个明确的负载减少时间段(例如在夜间),并且这段时间足以卸载所有必要的数据而不影响系统的主要活动——那么使用对 RDBMS 的直接查询可能是一个可以接受的选项。但是,如果没有减少负载的时期,或者分配的负载窗口不足以完全卸载整个更改的数据怎么办?

图片

CDC 变更数据捕获只会捕获数据中的变化,这是复制数据的 ETL 模式之一。它是一种确定我们感兴趣的数据的机制,即跟踪源数据库中的更改并将其应用于目标数据库或数据仓库。并且在目标数据库或数据仓库中,我们可以进行所有类型的分析、报告生成等,甚至不会影响源数据库的性能。

因此,用户可以在不降低性能的情况下使用原始系统,并且管理层可以随时获取他们做出管理决策所需的报告。

图片

对比常见的开源 CDC 方案

图片

Sqoop

图片

Sqoop CDC通过监视源数据库的事务日志来实现数据的增量抽取。它能够检测到源数据库中发生的更改操作,并将这些更改操作应用于目标数据库,以保持两者的数据同步。使用CDC,用户可以在不间断的情况下将更新的数据批量和实时地移动到目标数据库中,而无需整体导出整个数据集。

DataX

图片

DataX CDC基于DataX框架,为用户提供了一种灵活、高效的数据同步解决方案。它通过监视源数据库的事务日志或数据库增量日志来捕获源数据库中的变更操作,并将这些操作应用于目标数据库,以保持两者之间的数据同步。这种增量方式可以大大减少数据传输的时间和成本,并提供更及时的数据更新。

Flink CDC

图片

Flink CDC利用Flink框架的流式计算能力来处理和转换变更数据。它使用源数据库的增量日志或者事务日志作为输入源,通过Flink的流处理引擎对日志进行实时解析和处理,并将解析后的数据应用于目标数据库,以实现数据的增量传输和同步。

Debezium

图片

Debezium是一个为变更数据捕获(CDC)提供低延迟数据流平台的开源项目。Debezium是一个将来自现有数据库的信息转换为事件流的分布式平台,使应用程序能够检测并立即响应数据库中的行级更改。

Debezium构建在Apache Kafka之上,并提供了一组Kafka Connect兼容的连接器。每个连接器都与特定的数据库管理系统(DBMS)一起工作。连接器通过检测发生的变化来记录DBMS中数据变化的历史,并将每个变化事件的记录流式传输到Kafka Topic。然后,消费应用程序可以从Kafka主题中读取结果事件记录。通过利用Kafka可靠的流媒体平台,Debezium使应用程序能够正确和完整地消费数据库中发生的更改。即使您的应用程序意外停止或失去连接,它也不会错过停机期间发生的事件。应用程序重新启动后,它将从停止的位置继续从主题读取。

Canal

图片

基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费,canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送dump 协议 MySQL master 收到 dump 请求,开始推送 binary log 给 slave (即 canal ) canal 解析 binary log 对象(原始为 byte 流)。

标签: 数据仓库

本文转载自: https://blog.csdn.net/qq_45038038/article/details/135876171
版权归原作者 之乎者也· 所有, 如有侵权,请联系我们删除。

“数据仓库内容分享(十):CDC 技术”的评论:

还没有评论