什么是变更数据捕获?

变更数据捕获,释义

变更数据捕获 (CDC) 用于检测并采集数据库内的数据变动,并将变动内容传输至下游系统。当数据库数据发生变动后,CDC 可在各系统间实现近乎实时或实时的数据同步复制以及事件驱动处理。

变更数据捕获属于实时数据集成方式,可集成组织内分散、存在差异的数据,实现数据统一。其他数据集成方式还包括流数据集成、数据虚拟化以及应用集成

CDC 可低延迟地为近乎实时或实时更新下游流程与系统,对实时数据分析、云迁移以及人工智能 (AI) 模型的稳定运行起到关键作用。该技术可适配各行业的多种用例,覆盖零售、金融、医疗等领域的欺诈检测、供应链管理、合规管控等场景。

变更数据捕获有多种方法,其中最常见的是基于日志的 CDC、基于时间戳的 CDC 和基于触发器的 CDC。企业可以借助数据库原生工具、开源平台和第三方解决方案实现变更数据捕获。

变更数据捕获有哪些优点?

在现代数据管理中,变更数据捕获已成为一项关键数据工程机制。当今企业的数据环境日趋庞大且越发复杂。其中可能包含来自物联网 (IoT) 设备、分布式数据库、应用程序和其他不同来源的数据。在不断扩展的数据生态系统中保持数据的一致性与质量,构成了长期存在的技术难题。

与此同时,企业需要准确、及时的信息,并借此制定实时决策。变更数据捕获是帮助组织满足这一需求的多种方案之一。

变更数据捕获支持低延迟数据管道,通过比其他数据集成方法更高效、资源占用更少的方式提供新数据。例如,数据复制需要复制完整的数据集。相比之下,CDC 仅发送已变更的数据,从而减少源系统负载、网络流量以及对计算能力的需求。

它可以帮助企业快速高效地获取最新、最准确的信息,从而提供多重优势,包括:

  • 更快地做出决策
  • 零停机时间迁移
  • ETL 流程优化
  • 提高 AI 性能

更快地做出决策

CDC 可将业务数据实时推送至数据分析平台与数据仪表板,便于企业输出精准、即时的报表,挖掘业务洞察分析并制定决策。借助这些功能,企业就能满足当今 24/7 全天候不间断、高度时效敏感的商业环境需求。

零停机时间迁移

数据源与目标系统之间的持续同步,可保障数据库、云环境及应用程序之间的数据迁移工作,最大限度减少停机时长与业务中断。例如,在云迁移期间,CDC 会将本地发生的数据变更快速传送到相关的云数据表,确保两个环境之间的一致性。

ETL 流程优化

ETL(提取、转换、加载)数据管道是数据分析和机器学习工作流不可或缺的一部分。但是,依赖批处理的 ETL 执行往往速度较慢,并且会消耗系统资源。将 CDC 集成至 ETL 可以优化资源利用率并加速数据迁移。

更优异的人工智能 (AI) 性能

实施变更数据捕获可确保模型源数据实时更新,以便大语言模型 (LLM) 提供准确、及时的输出。例如,在检索增强生成 (RAG) 用例中,AI 模型与外部知识库相连以获取更精准的响应。

AI Academy

数据管理是生成式 AI 的秘诀吗?

深入了解为什么高质量数据对于成功使用生成式 AI 至关重要。

变更数据捕获的运作模式?

变更数据捕获能够识别并记录源数据系统内的新增、更新及删除操作。这些数据源涵盖关系数据库,例如 Oracle Database、PostgreSQL、MySQL、Microsoft SQL Server 和 Azure SQL Database,以及非关系 (NoSQL) 数据库,例如 Apache Cassandra 和 MongoDB。

现代 CDC 系统通常采用基于日志的实现方式,相关工具会读取数据库事务日志(记录数据变动的文件),以识别数据变更内容。事务日志中的每个变更事件,都会对应一个有序日志位置,例如日志序列号 (LSN)。借助这类标识,CDC 系统能够精准判定数据变更的发生时间。

系统捕获变更数据后,会以实时或近乎实时的形式将其流式传输至各类下游系统,包括 数据湖数据仓库流数据平台(如 Apache Kafka )、流处理引擎(如 Apache Spark )和 ETL/ELT 管道。

CDC 方法:“推”与“拉”

变更数据捕获可由源系统(推送式方法)发起,也可由目标系统(拉取式方法)发起。二者的核心区别,在于由哪一方系统负责捕获并传输变更数据。

推送式 CDC

在推送式 CDC 模型中,源系统检测到数据变更后,会立即将数据推送至目标系统。该方式一般依托数据库事务日志、事件流或是 Apache Kafka 这类消息代理实现。

由于数据变更会随产生即时发送,推送式 CDC 适用于对流数据传输有实时、近乎实时要求的用例,例如流分析、事件驱动架构以及 AI/ML 系统。

拉取式 CDC

在拉取式 CDC 模式下,目标系统定期轮询源系统,并在识别变更后“拉取”变更。轮询操作可按照固定周期执行,因此拉取式 CDC 十分适配批处理任务,或是无需即时更新数据的系统。

相比推送式 CDC,该模式架构更简单、部署成本更低,但会带来更高延迟,同时加重源数据库的查询负担,进而影响数据库运行性能。目前多数现代化数据平台,都会结合数据与业务需求,同时兼容这两种运行模式。

变更数据捕获的常用方法

变更数据捕获的执行方法多种多样。常见的 CDC 类型包括:

  • 基于日志的 CDC
  • 基于时间戳的 CDC
  • 基于触发器的 CDC

基于日志的 CDC

数据库事务日志是数据库的标准功能,用于记录所有数据库事务。(事务日志文件可用于在发生系统故障时恢复数据库。)

在基于日志的 CDC 模式中,CDC 应用程序会处理日志内记录的数据库数据与元数据变更,并将更新内容同步至其他系统。基于日志的 CDC 凭借高效的特性得到广泛应用,该模式依托日志而非查询语句获取数据,不会给源系统造成过大压力。但是,事务日志格式的变化可能会使跨不同数据库的基于日志的 CDC 执行变得复杂。

基于时间戳的 CDC

基于时间戳的变更数据捕获(也称为基于查询的 CDC)要求数据库表模式具有列功能,例如时间戳列,以注明记录变更的日期和时间。CDC 工具可用于通过源表中的时间戳列识别更改的记录,然后将更新提供给目标系统。

虽然基于时间戳的 CDC 易于实施,但当频繁轮询时间戳数据时,它也会给系统造成额外的侵入性负载。基于时间戳的 CDC 在整行数据与时间戳均被删除时,同样无法捕获删除操作。

基于触发器的 CDC

在基于触发器的变更数据捕获中,一旦数据库中发生特定修改(例如插入、删除和更新),就会执行名为“数据库触发器”的存储过程或函数。变更后的数据存储于变更表或影子表中。

与基于时间戳的 CDC 相仿,基于触发器的 CDC 同样易于实施。然而,它也会给源系统造成负担——源表中每发生一次事务,触发器都会“激活”。

常用 CDC 数据源与目标端

为全面了解 CDC 技术,下面介绍几种常见的 CDC 数据源与目标端。

CDC 数据源是指数据产生的系统,例如:

CDC 目标端是接收流式数据或副本数据的系统,例如:

  • 数据流平台(Apache Kafka、Amazon Kinesis、Google Cloud Pub/Sub)

  • 数据仓库和湖仓一体(Snowflake、Amazon Redshift、Google BigQuery)

  • 对象存储(AWS S3、Azure Blob Storage、Google Cloud Storage)

实现数据源与目标端的对接,通常需要借助 CDC 工具、连接器以及数据集成平台。

ETL 与 CDC:关键区别因素

ETL(提取、转换、加载)与变更数据捕获都是应用广泛的数据集成方式,但二者的设计用途并不相同。

以下是 ETL 和 CDC 的一些主要区别:

  • 数据流动:ETL 管道一般会摄取完整数据集或大批量数据。CDC 仅捕获并传输发生变动的数据。

  • 处理速度与延迟:ETL 大多按照既定周期执行批处理操作。CDC 面向低延迟数据传输场景,可实现数据持续同步。

  • 主要用例:ETL 多用于商业智能、历史报表统计以及机器学习场景。CDC 多用于实时分析、欺诈检测以及事件驱动架构场景。
  • 数据转换:ETL 管道会在加载数据前完成数据清理与转换工作。CDC 系统仅识别并复制变更数据,不会开展后续处理。

  • 系统影响:传统 ETL 会持续执行批处理任务,对源系统造成较大负载。CDC 仅传输变动数据,能够有效降低系统开销。

当今组织通常同时使用 ETL 与 CDC,并且常将二者搭配运行。例如,完成初始数据加载后,CDC 可负责传输增量更新数据,对 ETL 管道形成补充。这样,当源系统产生数据变更时,数据集可实时更新,无需等待下一轮 ETL 任务执行。

SCD 与 CDC:有何区别?

CDC 与缓变维度 (SCD) 相互配合,保障目标系统的数据准确且及时更新。

CDC 负责从源系统捕获并传输变更数据,而 SCD 则规定如何在数据仓库的维度表中管理和存储这些变更。

(本文中,维度数据一般指数据仓库内的维度表,用于存储客户地址、联系电话等描述性属性信息。)

SCD 主要分为两种类型:类型 1 和类型 2。

SCD 类型 1:使用新数据覆盖维度表内原有数据,不保留历史记录

SCD 类型 2:在维度表中新增数据行,完整留存全部历史变更记录

变更数据捕获工具

变更数据捕获 (CDC) 工具可实时捕获并传输数据库变更数据,助力组织搭建现代化数据集成、数据分析以及事件驱动架构。

部分数据库环境原生搭载 CDC 功能,例如 AWS Database Migration Service (DMS),该技术也可在各类环境中通用部署。主流 CDC 解决方案包含 Debezium 等开源工具,以及 IBM StreamSets、Oracle GoldenGate 等商业平台。

许多组织将 Apache Kafka 作为 CDC 管道的基础组件。基于 Kafka 的 CDC 架构能够捕获数据库变更,经由 Kafka 主题完成流式转发,再将数据分发至下游应用程序、数据仓库、分析平台以及 AI 系统。

组织在选型 CDC 工具时,通常会考虑以下因素:

  • 可扩展性
  • 定价
  • 延迟
  • 连接器支持能力
  • Kafka 集成能力
  • 可靠性
  • 部署灵活性
  • API 支持

变更数据捕获的用例

企业会根据各种用途部署变更数据捕获,包括:

欺诈检测

通过变更数据捕获持续跟踪财务记录的变化,可以提前检测欺诈活动,以免其造成重大损失。

物联网 (IoT) 支持

CDC 可以高效整合 IoT 设备产生的海量实时数据,实现预测性维护和实时监控。

库存和供应链管理

借助变更数据捕获技术获取实时销售、库存及供应链信息,企业可避免缺货并制定高利润定价决策。

法规一致性

变更数据捕获可以帮助受到严格监管的企业保留准确的记录,以满足 GDPR、“萨班斯-奥克斯利 (SOX) 法案”和美国 HIPAA 等法规的报告与合规要求。

作者

Alice Gomstyn

Staff Writer

IBM Think

Alexandra Jonker

Staff Editor

IBM Think

相关解决方案
IBM® watsonx.data 集成

通过简化的用户体验,将原始数据转化为 AI 就绪数据,支持整合任意类型的数据。

深入了解 watsonx.data integration
数据集成解决方案

利用 IBM 数据集成解决方案,创建弹性、高性能和成本优化的数据管道,以满足您的生成式 AI 计划、实时分析、仓库现代化和运营需求。

深入了解数据集成解决方案
数据和 AI 咨询服务

通过制定适当的战略、数据、安全和治理措施,成功实现 AI 的规模化应用。

深入了解数据和 AI 咨询服务
采取后续步骤

通过多种方式(包括批量处理、实时流和复制)整合结构化和非结构化数据,以免您将时间和金钱浪费在工具切换上。

  1. 深入了解 IBM watsonx.data integration
  2. 深入了解数据集成解决方案