什么是 CDC?
CDC(Changed Data Capture),变更数据捕获。顾名思义通俗的讲 CDC 就是获取发生改变的数据,是一种增量抽取的解决方案。
为什么要用 CDC?
利用 CDC,在对源表进行 INSERT、UPDATE 或 DELETE 等操作的同时就可以提取数据,可以批量的获取增量也可以近实时的获取数据的变化。广义来说我们通过 CDC 可以实现近实时的数据同步,但 CDC 并不等于实时数据同步。
CDC 的实现方式
1)时间戳:需要源系统有相应的数据列表示最后的数据变化。
2)快照:可以使用数据库系统自带的机制实现,如 Oracle 的物化视图等获取增量。
3)触发器:在源表上简历触发器在对该表执行 DML 语句的时候触发,捕获数据的变化。
4)日志:通过解析数据库日志,获取数据的变化。
CDC 大体上可以分为侵入式和非侵入式两种,侵入式是指 CDC 操作会给源库带来性能影响,简单来说 CDC 操作以任何一种方式对源库执行了 SQL 语句就可以认为是侵入式,非侵入式对源库不具有侵入性如解析日志的方式。
WASP 的 CDC 实现
偶数科技自研的 WASP(V4.2.0.0+)数据同步工具支持 CDC。
WASP 负责读取 Kafka 中的 CDC 增量数据,同步到目标数据库。并且可以支持任意格式的 CDC 数据,如 OGG、Canal 采集的 CDC 数据格式、或者其它任意 JSON 格式的 CDC 数据。
WASP CDC 增量数据同步的功能,与 OushuDB 支持高性能 Update、Delete 的特性相结合,可以实现实时数据同步,是实时数仓解决方案中不可或缺的一个环节。