辅以专家洞察分析的最新科技新闻
通过 Think 时事通讯,了解有关 AI、自动化、数据等方面最重要且最有趣的行业趋势。请参阅 IBM 隐私声明。
通过 Think 时事通讯,了解有关 AI、自动化、数据等方面最重要且最有趣的行业趋势。请参阅 IBM 隐私声明。
在现代数据管理中,变更数据捕获已成为一项关键数据工程机制。当今企业的数据环境日趋庞大且越发复杂。其中可能包含来自物联网 (IoT) 设备、分布式数据库、应用程序和其他不同来源的数据。在不断扩展的数据生态系统中保持数据的一致性与质量,构成了长期存在的技术难题。
与此同时,企业需要准确、及时的信息,并借此制定实时决策。变更数据捕获是帮助组织满足这一需求的多种方案之一。
变更数据捕获支持低延迟数据管道,通过比其他数据集成方法更高效、资源占用更少的方式提供新数据。例如,数据复制需要复制完整的数据集。相比之下,CDC 仅发送已变更的数据,从而减少源系统负载、网络流量以及对计算能力的需求。
它可以帮助企业快速高效地获取最新、最准确的信息,从而提供多重优势,包括:
CDC 可将业务数据实时推送至数据分析平台与数据仪表板,便于企业输出精准、即时的报表,挖掘业务洞察分析并制定决策。借助这些功能,企业就能满足当今 24/7 全天候不间断、高度时效敏感的商业环境需求。
数据源与目标系统之间的持续同步,可保障数据库、云环境及应用程序之间的数据迁移工作,最大限度减少停机时长与业务中断。例如,在云迁移期间,CDC 会将本地发生的数据变更快速传送到相关的云数据表,确保两个环境之间的一致性。
变更数据捕获能够识别并记录源数据系统内的新增、更新及删除操作。这些数据源涵盖关系数据库,例如 Oracle Database、PostgreSQL、MySQL、Microsoft SQL Server 和 Azure SQL Database,以及非关系 (NoSQL) 数据库,例如 Apache Cassandra 和 MongoDB。
现代 CDC 系统通常采用基于日志的实现方式,相关工具会读取数据库事务日志(记录数据变动的文件),以识别数据变更内容。事务日志中的每个变更事件,都会对应一个有序日志位置,例如日志序列号 (LSN)。借助这类标识,CDC 系统能够精准判定数据变更的发生时间。
系统捕获变更数据后,会以实时或近乎实时的形式将其流式传输至各类下游系统,包括 数据湖 、数据仓库 、流数据平台(如 Apache Kafka )、流处理引擎(如 Apache Spark )和 ETL/ELT 管道。
变更数据捕获可由源系统(推送式方法)发起,也可由目标系统(拉取式方法)发起。二者的核心区别,在于由哪一方系统负责捕获并传输变更数据。
在推送式 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 工具、连接器以及数据集成平台。
ETL(提取、转换、加载)与变更数据捕获都是应用广泛的数据集成方式,但二者的设计用途并不相同。
以下是 ETL 和 CDC 的一些主要区别:
当今组织通常同时使用 ETL 与 CDC,并且常将二者搭配运行。例如,完成初始数据加载后,CDC 可负责传输增量更新数据,对 ETL 管道形成补充。这样,当源系统产生数据变更时,数据集可实时更新,无需等待下一轮 ETL 任务执行。
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 工具时,通常会考虑以下因素:
企业会根据各种用途部署变更数据捕获,包括:
通过变更数据捕获持续跟踪财务记录的变化,可以提前检测欺诈活动,以免其造成重大损失。
CDC 可以高效整合 IoT 设备产生的海量实时数据,实现预测性维护和实时监控。
借助变更数据捕获技术获取实时销售、库存及供应链信息,企业可避免缺货并制定高利润定价决策。
变更数据捕获可以帮助受到严格监管的企业保留准确的记录,以满足 GDPR、“萨班斯-奥克斯利 (SOX) 法案”和美国 HIPAA 等法规的报告与合规要求。
通过简化的用户体验,将原始数据转化为 AI 就绪数据,支持整合任意类型的数据。
利用 IBM 数据集成解决方案,创建弹性、高性能和成本优化的数据管道,以满足您的生成式 AI 计划、实时分析、仓库现代化和运营需求。
通过制定适当的战略、数据、安全和治理措施,成功实现 AI 的规模化应用。