背景介绍
mongodb目前是很多企业业务上常用的nosql数据库。我们需要对这些业务mongodb数据库进行 数据同步到 数据仓库中进行 数据分析处理。
技术选型
CDC介绍
CDC (Change Data Capture) 是一种用于捕捉数据库变更数据的技术
CDC 技术的应用场景非常广泛:
数据同步:用于备份,容灾;
数据分发:一个数据源分发给多个下游系统;
数据采集:面向数据仓库 / 数据湖的 ETL 数据集成,是非常重要的数据源。
CDC 的技术方案非常多,目前业界主流的实现机制可以分为两种:
基于查询的 CDC
离线调度查询作业,批处理。把一张表同步到其他系统,每次通过查询去获取表中最新的数据;
无法保障数据一致性,查的过程中有可能数据已经发生了多次变更;
不保障实时性,基于离线调度存在天然的延迟。
基于日志的 CDC
实时消费日志,流处理,例如 Mongodb 的 oplog 日志完整记录了数据库中的变更,可以把 oplog 文件当作流的数据源;
保障数据一致性,因为 oplog 文件包含了所有历史变更明细;
保障实时性,因为类似 oplog 的日志文件是可以流式消费的,提供的是实时数据。
对比常见的开源 CDC 方案,我们可以发现: