什么是变更数据捕获?

变更数据捕获 (CDC) 是一种用于跟踪和捕获源系统(如事务数据库、数据仓库或 SaaS 应用)中数据更改的过程。通过实时记录变更,CDC 可帮助您保持系统同步、支持数据分析、训练 AI 模型并支持无缝数据迁移。

了解数据库中发生的更改,对于维护数据完整性、优化工作流和解锁实时洞察至关重要。一个典型示例是零售业:当客户下单时,CDC 会在交易发生的那一刻从事务型数据库中捕获该销售信息。Google Cloud 的 Datastream 等 CDC 服务,可将本地 PostgreSQL 数据库中的变更复制到 BigQuery 数据仓库,从而近乎实时地为数据分析信息中心提供支持,并消除等待耗时的夜间批处理作业。

Datastream for BigQuery 简介

要点总结

变更数据捕获 (CDC) 是一种用于识别和捕获源系统中的数据修改(例如插入、更新和删除)的过程,通常以近乎实时的方式进行。CDC 凭借以下优势而闻名:

  • 取代耗时的夜间批处理作业:允许您捕获实时发生的数据更改,而非稍后提取整个数据集
  • 强大的应用场景:CDC 支持无缝数据库迁移、实时数据分析和 AI 训练

ETL 和 CDC 有什么区别?

ETL 流程(即“提取、转换、加载”)涉及从源系统中提取原始数据,将其转换成所需的结构,然后加载到目标系统(通常是数据仓库)中。ETL 有助于确保数据井然有序、洁净可靠,并为数据分析或应用中的下游使用做好准备。

传统上,ETL 以大型计划批处理的形式运行,通常在夜间执行。这意味着目标系统中的数据新鲜度仅取决于最近一次批处理运行。

关键区别在于 CDC 提取数据的方式。CDC 不会分批提取数据集,而是会实时捕获发生的更改,让用户可以随时查询最新数据,而不必依赖周期性的批处理。这有助于您更快地应对变化,并获得更精准的数据洞见。

SCD 和 CDC 有什么区别?

变更数据捕获主要是一个过程,侧重于从源数据库中高效提取所有增量变更,通常以近乎实时的方式执行,从而最大限度地降低源系统的负载。

相比之下,缓慢变化维度 (SCD) 是一种应用于目标数据仓库或分析系统的数据建模技术,重点在于如何存储和管理维度数据(例如客户记录或产品属性)的历史状态。

虽然 CDC 是高效传输数据变更的工具,但这些变更通常是使用特定的 SCD 策略应用的,以便在目标系统中维护完整且准确的历史记录。

常见的 CDC 来源和目标位置

变更数据捕获可以成为连接构成现代数据堆栈或数据云的多元系统的强大桥梁。CDC 工具并非仅限于特定数据库,而是旨在与广泛的来源和目标配合使用。

事务型数据库是 CDC 最常见的来源,可捕获运行日常业务运营的系统中的每一次插入、更新和删除操作。

这些系统通常是 CDC 数据的主要目的地,可整合来自多个来源的信息,用于商业智能、数据分析和 AI。

  • 示例BigQuery、Snowflake、Amazon Redshift、Databricks

利用 CDC 从关键业务平台(通常通过 API 或网络钩子)提取变更数据,以便在整个组织内同步客户、销售或支持数据。

  • 示例:Salesforce、SAP、Stripe、HubSpot

流式处理和消息传递平台通常充当实时消息总线,从来源接收变更事件,并同时将其分发给多个下游使用者。

  • 示例:Apache Kafka、Pub/Sub、Amazon Kinesis

原始 CDC 事件日志的常见目的地,因为对象存储为构建数据湖提供了可扩缩且经济高效的基础。

变更数据捕获的主要应用场景

CDC 可解锁一系列关键应用场景,从确保数据连续性,到为实时数据分析和 AI 提供支持,不一而足。

  • 复制:通过捕获实时更改,辅助数据库或备份与主系统保持一致。这对于灾难恢复和高可用性架构至关重要。
  • 迁移:通过跟踪持续进行的更改并确保目标系统准确反映源系统(即使在实时迁移期间),可简化数据库迁移。
  • 实时分析:通过将实时数据馈送到数据分析系统中,CDC 可帮助您在趋势和变化发生时做出响应,提供最新洞见。
  • 用于 AI 训练的数据:CDC 提供最新数据,使 AI 和机器学习模型能够利用准确、相关的信息进行训练,从而提升预测和决策能力。
  • 构建数据云:CDC 是创建统一数据云的关键服务,能够将来自不同、孤立来源(例如事务型数据库和 SaaS 应用)的实时变更,流式传输到中央数据分析平台并传回。这有助于打破数据壁垒,创建单一可信数据源。

关于变更数据捕获的常见问题解答

通过捕获和传播实时发生的更改,CDC 可确保多个系统(例如主数据库及其备份,或主数据库及其数据分析平台)始终保持同步。这消除了数据差异,并维护了所有平台上的数据完整性。

变更数据捕获通过识别、跟踪和提取源数据库中数据的更改来实现,它采用多种方法,包括:

  • 基于日志的 CDC:读取数据库的内部事务日志(所有更改的记录),以近乎实时的方式将这些特定更改流式传输到目标系统,从而最大限度地降低资源负载
  • 基于触发器的 CDC:涉及在表上创建数据库触发器,以便在发生修改时将更改记录到单独的影子表中,但这可能会增加源数据库事务处理的开销
  • 基于时间戳的 CDC:是最简单但性能最低的方法,它依赖于源表中的时间戳或版本列,定期查询更改时间晚于上次提取时间的行

CDC 如何与数据库配合使用

数据库是变更数据捕获最常见、最可靠的来源,因为它们都共享一个核心组件:事务日志。该日志是不可变的有序记录,记录了每一项更改,使其成为准确高效地捕获数据修改的理想基础,而且不会影响数据库性能。下面我们将深入探究这些关键概念。

了解数据库事务日志

在任何数据写入实际数据库表之前,更改(插入、更新或删除)都会首先记录在事务日志中。现代 CDC 工具会利用此日志以非侵入方式捕获更改。这是数据库复制技术的核心部分,尽管该概念具有普适性,但这种日志在不同的热门数据库中名称各异。部分值得注意的示例:

  • PostgreSQL:预写式日志 (WAL)
  • Oracle:重做日志
  • SQL Server:事务日志
  • MySQL:二进制日志 (Binlog)

将初始加载与 CDC 相结合

对于大型现有数据库,由于网络性能和其他限制,从事务日志中读取完整的历史记录可能不切实际。一种常见的实际部署模式是先执行批量加载,然后使用 CDC 进行同步。过程包括以下步骤:

  1. 在特定时间点,为数据库拍摄一致的快照或进行备份。
  2. 将该大型快照加载到目标系统中。
  3. 从拍摄快照的精准日志位置开始 CDC 流。

这种“快照和追赶同步”方法,能够确保目标端完整载入历史数据,并随后与所有实时更改保持精确同步。Google Cloud 的 DatastreamDatabase Migration Service 等托管式服务,正是通过这种方式执行无缝可靠的回填。

使用日志序列号进行定位和恢复

为了可靠地管理此过程,CDC 依赖于事务日志中的唯一标识符,通常称为日志序列号 (LSN)。这些数字可作为变更数据流的精准书签。它们对于以下方面至关重要:

  • 定位:准确了解应从日志中的哪个位置开始或停止流式传输
  • 恢复:如果 CDC 进程失败,它可以从上次成功处理的 LSN 重新启动,从而确保准确捕获每一个更改,且不会造成数据丢失或重复

事务日志、初始快照和日志序列号这三种机制协同合作,使得数据库 CDC 兼具高效率和高可靠性。

变更数据捕获的优势

CDC 可以提供多项优势,使其在现代数据工作流中不可或缺:

跨系统数据一致性

同步实时发生的更改,减少数据差异,确保跨平台数据更高的准确性。

高效的数据移动

确保仅捕获更改(而非整个数据集),从而显著减轻系统负载并减少网络使用。

无缝集成

借助预构建的连接器库,连接您的系统。许多平台提供无代码界面来配置流水线,并自动管理复杂的后端任务(例如架构漂移检测和传输中的数据转换),确保您的数据流不中断。

运营弹性

通过自动保持系统和备份一致(无需人工干预),为灾难恢复和复制工作提供支持。

实时数据分析

可实现近乎即时地访问最新数据,从而更快、更明智地制定决策。这种敏捷性可以在金融交易、电子商务和物流等快节奏环境中提供关键优势,在这些环境中,数据的价值会在数秒内衰减。

竞争技术和替代方案

有多种技术与 CDC 重叠或互补,提供了管理数据变更和实现实时处理的多元方法。下面是 CDC 与其他主要方法的比较:

混合事务和分析处理 (HTAP)

HTAP 将事务型 (OLTP) 和分析型 (OLAP) 工作负载整合到一个系统中,可对数据进行即时分析。尽管这使得 HTAP 非常适合在独立环境中进行统一数据分析,但它可能难以与整个组织中存在的多元化分布式数据源同步。另一方面,CDC 擅长在多个系统之间维护数据一致性,并支持分布式工作流。

联合查询

联合查询(以及一种称为“外部表”的类似方法)允许数据仓库或查询引擎在运行查询时,直接从外部源系统(例如事务型数据库)读取数据。这种方法无需复制或移动数据,可直接实时访问数据所在位置的信息。

此方法非常适用于临时数据分析或偶发性查询,因为它无需设置复制流水线即可立即访问。然而,对于经常使用或对性能敏感的查询,这种方法可能效率不高,因为每次查询都会直接给源操作性系统带来负载。与主动将变更数据流推送到目标以实现优化数据分析的 CDC 不同,联合查询是按需拉取数据,这可能不适用于高频工作负载。

数据流平台

Kafka 是一个开源平台,专为高吞吐量数据流式传输和处理而打造。尽管 Kafka 能够高效管理大规模数据流,但它是 CDC 的补充,而非替代方案。CDC 侧重于实时捕获精准的数据库更改,而 Kafka 则负责流式传输更广泛的事件数据,例如网站点击、物联网 (IoT) 传感器读数,或商品添加到购物车等信息。这些技术相结合,可以为实时工作流提供强大助力。

应用级集成

CDC 采用无代码方法复制数据,而连接到应用层的集成技术则使用低代码方法连接系统和 SaaS 平台。如果您希望能够在平台之间移动数据时进行转换,那么 Google Cloud 的 Application Integration 等应用级集成产品将是更合适的工具。

利用 Google Cloud 解决业务难题

新客户可获得 $300 赠金,用于抵扣 Google Cloud 的费用。

开始在 Google Cloud 上使用 CDC

Datastream 是 Google Cloud 提供的可靠、易用且无服务器的变更数据捕获 (CDC) 和复制服务。它可最大限度地减少延迟,同时支持跨多元化数据库和应用同步数据。下面这些资源可帮助您开始使用:

更进一步

获享 $300 赠金以及 20 多种提供“始终免费”用量的产品,开始在 Google Cloud 上构建项目。