变更数据捕获 (CDC) 是一种用于跟踪和捕获源系统(如事务数据库、数据仓库或 SaaS 应用)中数据更改的过程。通过实时记录变更,CDC 可帮助您保持系统同步、支持数据分析、训练 AI 模型并支持无缝数据迁移。
了解数据库中发生的更改,对于维护数据完整性、优化工作流和解锁实时洞察至关重要。一个典型示例是零售业:当客户下单时,CDC 会在交易发生的那一刻从事务型数据库中捕获该销售信息。Google Cloud 的 Datastream 等 CDC 服务,可将本地 PostgreSQL 数据库中的变更复制到 BigQuery 数据仓库,从而近乎实时地为数据分析信息中心提供支持,并消除等待耗时的夜间批处理作业。
变更数据捕获 (CDC) 是一种用于识别和捕获源系统中的数据修改(例如插入、更新和删除)的过程,通常以近乎实时的方式进行。CDC 凭借以下优势而闻名:
ETL 流程(即“提取、转换、加载”)涉及从源系统中提取原始数据,将其转换成所需的结构,然后加载到目标系统(通常是数据仓库)中。ETL 有助于确保数据井然有序、洁净可靠,并为数据分析或应用中的下游使用做好准备。
传统上,ETL 以大型计划批处理的形式运行,通常在夜间执行。这意味着目标系统中的数据新鲜度仅取决于最近一次批处理运行。
关键区别在于 CDC 提取数据的方式。CDC 不会分批提取数据集,而是会实时捕获发生的更改,让用户可以随时查询最新数据,而不必依赖周期性的批处理。这有助于您更快地应对变化,并获得更精准的数据洞见。
变更数据捕获主要是一个过程,侧重于从源数据库中高效提取所有增量变更,通常以近乎实时的方式执行,从而最大限度地降低源系统的负载。
相比之下,缓慢变化维度 (SCD) 是一种应用于目标数据仓库或分析系统的数据建模技术,重点在于如何存储和管理维度数据(例如客户记录或产品属性)的历史状态。
虽然 CDC 是高效传输数据变更的工具,但这些变更通常是使用特定的 SCD 策略应用的,以便在目标系统中维护完整且准确的历史记录。
变更数据捕获可以成为连接构成现代数据堆栈或数据云的多元系统的强大桥梁。CDC 工具并非仅限于特定数据库,而是旨在与广泛的来源和目标配合使用。
事务型数据库是 CDC 最常见的来源,可捕获运行日常业务运营的系统中的每一次插入、更新和删除操作。
这些系统通常是 CDC 数据的主要目的地,可整合来自多个来源的信息,用于商业智能、数据分析和 AI。
利用 CDC 从关键业务平台(通常通过 API 或网络钩子)提取变更数据,以便在整个组织内同步客户、销售或支持数据。
流式处理和消息传递平台通常充当实时消息总线,从来源接收变更事件,并同时将其分发给多个下游使用者。
原始 CDC 事件日志的常见目的地,因为对象存储为构建数据湖提供了可扩缩且经济高效的基础。
CDC 可解锁一系列关键应用场景,从确保数据连续性,到为实时数据分析和 AI 提供支持,不一而足。
通过捕获和传播实时发生的更改,CDC 可确保多个系统(例如主数据库及其备份,或主数据库及其数据分析平台)始终保持同步。这消除了数据差异,并维护了所有平台上的数据完整性。
变更数据捕获通过识别、跟踪和提取源数据库中数据的更改来实现,它采用多种方法,包括:
数据库是变更数据捕获最常见、最可靠的来源,因为它们都共享一个核心组件:事务日志。该日志是不可变的有序记录,记录了每一项更改,使其成为准确高效地捕获数据修改的理想基础,而且不会影响数据库性能。下面我们将深入探究这些关键概念。
在任何数据写入实际数据库表之前,更改(插入、更新或删除)都会首先记录在事务日志中。现代 CDC 工具会利用此日志以非侵入方式捕获更改。这是数据库复制技术的核心部分,尽管该概念具有普适性,但这种日志在不同的热门数据库中名称各异。部分值得注意的示例:
对于大型现有数据库,由于网络性能和其他限制,从事务日志中读取完整的历史记录可能不切实际。一种常见的实际部署模式是先执行批量加载,然后使用 CDC 进行同步。过程包括以下步骤:
这种“快照和追赶同步”方法,能够确保目标端完整载入历史数据,并随后与所有实时更改保持精确同步。Google Cloud 的 Datastream 和 Database Migration Service 等托管式服务,正是通过这种方式执行无缝可靠的回填。
为了可靠地管理此过程,CDC 依赖于事务日志中的唯一标识符,通常称为日志序列号 (LSN)。这些数字可作为变更数据流的精准书签。它们对于以下方面至关重要:
事务日志、初始快照和日志序列号这三种机制协同合作,使得数据库 CDC 兼具高效率和高可靠性。
CDC 可以提供多项优势,使其在现代数据工作流中不可或缺:
跨系统数据一致性
同步实时发生的更改,减少数据差异,确保跨平台数据更高的准确性。
高效的数据移动
确保仅捕获更改(而非整个数据集),从而显著减轻系统负载并减少网络使用。
无缝集成
借助预构建的连接器库,连接您的系统。许多平台提供无代码界面来配置流水线,并自动管理复杂的后端任务(例如架构漂移检测和传输中的数据转换),确保您的数据流不中断。
运营弹性
通过自动保持系统和备份一致(无需人工干预),为灾难恢复和复制工作提供支持。
实时数据分析
可实现近乎即时地访问最新数据,从而更快、更明智地制定决策。这种敏捷性可以在金融交易、电子商务和物流等快节奏环境中提供关键优势,在这些环境中,数据的价值会在数秒内衰减。
有多种技术与 CDC 重叠或互补,提供了管理数据变更和实现实时处理的多元方法。下面是 CDC 与其他主要方法的比较:
HTAP 将事务型 (OLTP) 和分析型 (OLAP) 工作负载整合到一个系统中,可对数据进行即时分析。尽管这使得 HTAP 非常适合在独立环境中进行统一数据分析,但它可能难以与整个组织中存在的多元化分布式数据源同步。另一方面,CDC 擅长在多个系统之间维护数据一致性,并支持分布式工作流。
联合查询(以及一种称为“外部表”的类似方法)允许数据仓库或查询引擎在运行查询时,直接从外部源系统(例如事务型数据库)读取数据。这种方法无需复制或移动数据,可直接实时访问数据所在位置的信息。
此方法非常适用于临时数据分析或偶发性查询,因为它无需设置复制流水线即可立即访问。然而,对于经常使用或对性能敏感的查询,这种方法可能效率不高,因为每次查询都会直接给源操作性系统带来负载。与主动将变更数据流推送到目标以实现优化数据分析的 CDC 不同,联合查询是按需拉取数据,这可能不适用于高频工作负载。
Kafka 是一个开源平台,专为高吞吐量数据流式传输和处理而打造。尽管 Kafka 能够高效管理大规模数据流,但它是 CDC 的补充,而非替代方案。CDC 侧重于实时捕获精准的数据库更改,而 Kafka 则负责流式传输更广泛的事件数据,例如网站点击、物联网 (IoT) 传感器读数,或商品添加到购物车等信息。这些技术相结合,可以为实时工作流提供强大助力。
CDC 采用无代码方法复制数据,而连接到应用层的集成技术则使用低代码方法连接系统和 SaaS 平台。如果您希望能够在平台之间移动数据时进行转换,那么 Google Cloud 的 Application Integration 等应用级集成产品将是更合适的工具。
Datastream 是 Google Cloud 提供的可靠、易用且无服务器的变更数据捕获 (CDC) 和复制服务。它可最大限度地减少延迟,同时支持跨多元化数据库和应用同步数据。下面这些资源可帮助您开始使用: