CDC
指识别和捕获对数据库中的数据所做的更改(包括数据或数据表的插入、更新、删除等),然后将这些更改按发生的顺序完整记录下来,并实时通过消息中间件传送到下游流程或系统的过程。
通过这种方式,CDC能够向数据仓库提供高效、低延迟的数据传输,以便信息被及时转换并交付给专供分析的应用程序。
传统ETL过程,是周期性将数据通过T+1的方式进行全量同步,再分析,再通过BI报表展示给用户。实时性低,数据量大。
常见方式
- 基于查询的CDC
在数据表上进行时间列、自增列的添加,通过修改时间列、插入自增列表示插入、变更的记录,侵入性强,且无法获取删除操作的变更
- 基于触发器的CDC
将变更数据存入临时表,变更数据需要多次写入,有一定的侵入性
- 基于快照的CDC
能够捕获所有的更改,需要大量的存储空间来存储快照数据,实时性低
- 基于日志的CDC
最优的实现方式,实时性高,无侵入性,能够捕获所有的更改
CDC变更日志流
变更发送的信息流包括四种消息状态语义,
- INSERT(+I):新插入的数据记录行
- UPDATE_BEFORE(-U):数据记录行被更新前的数据
- UPDATE_AFTER(+U):数据记录行被更新后的数据
- DELETE(-D):删除的数据记录行