走近数据变更捕获(CDC):定义、优势和用例

文摘   科技   2024-06-25 14:21   北京  

作者: Heng Ma|RisingWave Labs Content Lead

在当今快节奏的数字化环境下,企业需要数据来做出决策、提高运营效率、优化客户体验。然而,获得最新最准确的数据有时并不容易,尤其是当数据来自于多个系统和应用程序时。这时,数据变更捕获(Change Data Capture,简称 CDC)技术就派上了用场。它提供了一种强大的解决方案,可以无缝地集成和同步不同环境中的数据。

1什么是 CDC?

数据变更捕获(CDC)是一种捕捉数据变更的技术。它能实时监控数据源(如数据库、应用系统等)中数据的增、删、改等变化,并记录下这些变更信息。与传统批处理方式相比,CDC 实现了近乎实时的数据集成和同步,使企业能够随时掌握最新信息,从而基于数据做出及时决策。

为更好理解 CDC,我们来看示例:假设有一份公司员工信息表,包括员工 ID、姓名和薪资等。现在,该公司财务部加入了一位新员工 Alice Williams,其薪资为 70,000 美元,此时,我们会把新员工信息插入到员工表中。

当启用 CDC 时,系统会自动捕获员工表插入的这个新记录,并生成一个数据修改的日志或流。当这个日志或流到达目标系统(如数据仓库或分析平台)时,它会触发目标表的更新,确保源表和目标表保持同步,反映最新的信息。

员工表数据变更捕获整体流程示意图

具体来说,CDC 日志或流会捕获操作的一些详细信息,包括操作内容 (INSERT)、时间戳 (2023-06-01 09:15:22)、受影响的表名(Employees),以及实际插入的数据 (data)。在该示例中,实际插入数据包含新员工的 ID、姓名、部门和薪资信息。

{
  "operation""INSERT",
  "timestamp""2023-06-01 09:15:22",
  "table""Employees",
  "data": {
    "EmployeeID"1004,
    "EmployeeName""Alice Williams",
    "Department""Finance",
    "Salary"70000
  }
}

此时,如果员工表出现其他变化,比如有员工获得晋升或加薪,CDC 日志可能如下所示:

{
  "operation""UPDATE",
  "timestamp""2023-06-15 11:30:47",
  "table""Employees",
  "oldData": {
    "EmployeeID"1002,
    "EmployeeName""Jane Smith",
    "Department""Marketing",
    "Salary"75000
  },
  "newData": {
    "EmployeeID"1002,
    "EmployeeName""Jane Smith",
    "Department""Marketing",
    "Salary"80000
  }
}

上述 CDC 日志捕获的操作是“更新 (UPDATE)”,同时显示了旧数据(更新前的员工详细信息)和新数据(更新后的员工详细信息,薪资增加到 80,000 美元)。

从上述例子可见,CDC 能实时捕获员工数据变化,使下游系统(数据仓库、数据湖和分析平台等)能够实时消费和处理最新更新,从而为人力资源流程(如薪资管理、绩效管理和劳动力规划)提供支持。

2使用 CDC 的益处

那么,实施 CDC 在数据堆栈中有哪些关键益处呢?让我们来探讨一下:

  1. 实时集成:CDC 可以捕获并传播数据变化,确保下游系统(如数据仓库和数据湖)始终拥有最新、一致的数据,从而支持实时分析、报告和决策。
  2. 事件驱动架构:CDC 将数据变化视为事件,可触发下游流程、工作流或微服务。它将这些事件发布到队列或流中,实现近乎实时的消费和响应。
  3. 数据复制和同步:在高可用性、灾难恢复或性能优化等场景中,CDC 能通过捕获和应用变化,在分布式环境中维持数据副本的一致。
  4. 治理与合规:在受监管行业中,CDC 能维护审计轨迹,跟踪数据血缘,并记录关键数据源的变化,确保合规。
  5. 混合云和多云:随着企业采用混合云和多云策略,CDC 成为跨不同云环境、本地系统和数据存储同步数据的关键,能支持无缝的数据共享和集成。

3CDC 的使用案例

让我们来看一些 CDC 在实际中为企业带来显著效益的例子:

  • 金融服务:在金融行业,数据完整性至关重要。CDC 能实时同步银行、交易和会计数据,确保财务决策的准确性。
  • 供应链和物流:这些快节奏行业需要实时的库存、运输和订单履行的可见性。CDC 能实现高效的数据集成和同步,让企业快速响应变化,优化运营效果,提升客户满意度。
  • 电商和零售:出色的客户体验需要各渠道间保持一致且最新的产品、定价、订单数据。CDC 能确保无缝的全渠道体验,助力明智决策。
  • 医疗:准确、及时的患者数据对高质量护理至关重要。CDC 能实时同步电子健康记录(EHR)系统,为医疗专业人员提供最新患者信息。
  • 物联网(IoT):随着物联网设备的普及,实时数据流的摄取和处理变得至关重要。CDC 能高效集成物联网传感器和设备数据,实现实时监控、预测性维护和数据驱动决策。

4流行的 CDC 工具和技术

以下是一些广泛使用的 CDC 工具,用于实现实时数据集成和同步:

  • Debezium[1]:开源 CDC 平台,基于Apache Kafka 构建。它从 MySQL、PostgreSQL、Oracle、SQL Server 和 MongoDB 等数据库捕获并流式传输数据变化,提供可扩展且可靠的解决方案。
  • Maxwell CDC[2]:CDC 工具,将 MySQL 数据库的实时变化流式传输到Kafka、Kinesis 等平台,以其简单、易于设置和轻量架构著称,能高效地流式传输行级变化为 JSON。
  • Canal[3]:CDC 工具,能将 MySQL 数据库的实时变化流式传输到其他系统,提供统一的变更日志格式方案,并支持 JSON 和 protobuf 消息序列化。
  • Oracle GoldenGate[4]:Oracle 的 CDC 工具,用于跨 Oracle 数据库及 SQL Server、DB2 和 Teradata 等其他数据库实现实时数据复制和集成,提供高性能和低影响的数据捕获。
  • AWS数据库迁移服务(DMS)[5]:支持完全托管的 AWS 服务,支持各种数据库的迁移和复制,具备 CDC 功能,支持 Amazon RDS、Aurora 和本地数据库。
  • Microsoft SQL Server Change Data Capture[6]:SQL Server 内置的 CDC 功能,允许捕获和跟踪 SQL Server 数据库中表的变化。

5RisingWave 如何处理数据变更捕获

RisingWave 是一款专为处理实时数据而设计的数据库,其关键功能之一是实时数据摄取,包括数据变更捕获(CDC)数据。

RisingWave 通过提供流行数据库(如 Postgres[7]MySQL[8]MongoDB[9]Citus[10])的本地 CDC 连接器来处理数据变更捕获(CDC)。这些连接器在确保数据一致性的同时,简化了技术堆栈。同时,RisingWave 还可以摄取以 Kafka、Pulsar 或 Kinesis 等消息系统格式传递的 CDC 数据,这种功能需要先使用单独的 CDC 工具将数据库的 CDC 数据转换为流格式。有关 RisingWave 如何摄取这些格式的 CDC 数据的更多信息,请参考我们的官方文档 CDC via messaging systems[11]

6结论

在如今数据驱动的大环境下,数据变更捕获(CDC)已成为不可或缺的技术。通过捕获并传播数据变化,CDC 确保了实时数据一致性,并实现了跨混合云和多云环境的无缝集成。

如果您正在构建事件驱动架构或探索为实时应用程序提供动力的工具,RisingWave 是一个值得考虑的数据库。

RisingWave 专为处理流数据而设计,能直接从 Postgres 和 MySQL 等数据库中摄取 CDC 数据。它使用 SQL 进行实时数据转换和增强,然后将数据导出到数据仓库或数据湖等下游系统。此外,RisingWave 还支持摄取打包成 Debezium、Maxwell 和 Canal 格式的 CDC 数据,欢迎大家免费试用。

参考资料
[1]

Debezium: https://debezium.io/

[2]

Maxwell CDC: https://maxwells-daemon.io/

[3]

Canal: https://github.com/alibaba/canal/wiki

[4]

Oracle GoldenGate: https://www.oracle.com/integration/goldengate/

[5]

AWS 数据库迁移服务: https://aws.amazon.com/dms/

[6]

Microsoft SQL Server Change Data Capture: https://www.microsoft.com/en-us/sql-server/sql-server-downloads

[7]

Postgres: https://docs.risingwave.com/docs/current/ingest-from-postgres-cdc/

[8]

MySQL: https://docs.risingwave.com/docs/current/ingest-from-mysql-cdc/

[9]

MongoDB: https://docs.risingwave.com/docs/current/ingest-from-mongodb-cdc/

[10]

Citus: https://docs.risingwave.com/docs/current/ingest-from-citus-cdc/

[11]

CDC via messaging systems: https://docs.risingwave.com/docs/dev/ingest-from-cdc/

关于 RisingWave 

RisingWave 是一款基于 Apache 2.0 协议开源的分布式流数据库,致力于为用户提供极致简单、高效的流数据处理与管理能力。RisingWave 采用存算分离架构,实现了高效的复杂查询、瞬时动态扩缩容以及快速故障恢复,并助力用户极大地简化流计算架构,轻松搭建稳定且高效的流计算应用。
RisingWave 始终聆听来自社区的声音,并积极回应用户的反馈。目前,RisingWave 已汇聚了近 150 名开源贡献者和近 3000 名社区成员。全球范围内,已有上百个 RisingWave 集群在生产环境中部署。

往期推荐

技术内幕

如何上手 RisingWave 👉 新手入门教程

RisingWave 中文用户文档上线,阅读更高效!

深入探索 RisingWave 中的高可用性与容错机制

深入理解 RisingWave 流处理引擎(三):触发机制

深入理解 RisingWave 流处理引擎(二):计算模型

深入理解 RisingWave 流处理引擎(一):总览

用户案例
视源股份(CVTE)IT 流计算应用历程
尘锋 SCRM 如何使用 RisingWave 实时打宽
RisingWave 在超百亿管理规模对冲基金公司中的应用
金融科技公司 Kaito 使用 RisingWave 实现实时智能化
龙腾出行如何通过 RisingWave 实现实时数据分析
RisingWave 助力乾象投资打造实时监控平台

RisingWave中文开源社区
RisingWave 是一款开源分布式 SQL 流数据库,致力于大幅降低流计算使用门槛与复杂度。RisingWave 已为全球超百家企业构建新一代流处理与分析平台。
 最新文章