--- title: "CDC (Change Data Capture)" type: concept tags: [data-engineering, streaming, incremental-pipeline] sources: [engineering-data-engineer] last_updated: 2026-05-02 --- ## Definition CDC(Change Data Capture,变更数据捕获)是一种从源系统捕获增量变更(插入、更新、删除)的技术,使数据管道无需全量刷新即可同步最新数据,大幅降低计算成本。 ## How It Works 1. **识别变更**:从源数据库的事务日志(WAL)、时间戳字段或变更追踪表中提取变更记录 2. **携带元数据**:每条 CDC 记录携带变更类型(INSERT/UPDATE/DELETE)、变更时间、来源事务 ID 3. **幂等写入**:通过主键或变更时间戳实现幂等 upsert(MERGE INTO Delta Lake),确保重新运行安全 ## Benefits - **成本节省**:增量处理 vs. 全量刷新,成本降低 90%+ - **低延迟**:变更实时捕获,支持分钟级甚至秒级数据刷新 - **低影响**:CDC 通常基于数据库日志读取,对源系统影响极小 ## CDC in Medallion Architecture - **Bronze 层**:CDC 记录追加写入,保留完整变更历史(append-only) - **Silver 层**:基于变更类型(INSERT=插入, UPDATE=更新, DELETE=标记删除)进行去重和 conform - **Gold 层**:CDC 支持近实时业务指标更新 ## CDC Technologies - **Debezium**:开源 CDC 平台,捕获 MySQL/PostgreSQL/MongoDB 等变更并发布到 Kafka - **AWS DMS**(Database Migration Service):AWS 托管 CDC 解决方案 - **Azure Data Factory** CDC 活动:Azure 生态 CDC 工具 - **Databricks Auto Loader**:`cloudFiles` 增量摄取 CSV/Parquet/JSON 文件变更 ## Related Concepts - [[Medallion Architecture]] - [[Data Contract]](CDC 需配合数据契约确保 schema 兼容) - [[Apache Kafka]](CDC 常用传输层)