优点:处理速度快,数据处理逻辑相对简单 。
缺点:源数据库没有时间戳字段的表需要更改表结构,而且需要源数据库来维护时间戳字段;无法实现数据同步,因为使用时间戳字段无法获取删除后的数据 。
- CDC增量同步
优点:可靠性强,对源系统没有影响 。
缺点:各数据库系统的日志文件绝大部分都是私有的,并且日志格式都不一样,因此捕获这些日志需要有专门有针对性的组件来进行,个别数据库还需要管理员权限进行配合才能实现 。对于没有提供日志分析接口的数据源,开发的难度比较大
- 触发器同步
优点:借助数据库本身的机制,可靠性强 。
缺点:对源系统有影响,需要建立触发器以及临时表或临时数据存储文件
- 全文比对同步
优点:对源系统没有任何影响 。
缺点:面对海量数据(千万级、万万级)进行比对时有一定的性能问题 。
这些同步方式除了全量同步,其他几种都需要业务表有主键 。这些同步的方式各有优缺点,在实际使用中应根据企业系统自身实际情况来采取适合的交换方法 。网上有许多人推荐使用CDC的方式,CDC这种架构下数据写入主存储后会由主存储再向辅存储进行同步,对应用层是最友好的,只需要与主存储打交道 。主存储到辅存储的数据同步,则可以再利用异步队列复制技术来做 。不过这种方案对主存储的能力有很高的要求,必须要求主存储能支持CDC技术 。另外这种方式在一些数据库中需要有DBA的权限配合才能够完成,所以在进行CDC同步的时候首先就需要考虑数据库的环境是否有条件能够完成CDC的配置 。
触发器、时间戳、全文比对以及方式都能够支持断点续传,所使用的方式各不相同 。
触发器数据同步的过程是先将增量数据同步到临时表中,这个临时表会增加两个字段,一个是所做操作的标识(标识有:insert、update和delete),另一个是自增的列 。在进行同步时是查询这张临时表来进行的,再查临时表时会使用自增的列进行排序进行查询,检查寻到的增量数据通过组件到目标库中根据操作标识进行相应的操作,操作完成后如果成功执行则会去临时表把已经同步的增量数据按照自增列的值进行删除 。如果这个过程中在向目标同步数据时出现异常,则这张临时表中的数据不会被删除掉 。而我们在进行作业触发时一般使用的都是按照频度、计划去定期执行,当前这次同步失败后,在下一次计划触发执行时由于上一次所执行的作业最后并没有将临时表中的作业删除,在这次作业执行时上一次没有同步的数据还在 。所以这次执行时就会从断点位置开始再次进行同步 。
时间戳数据同步的过程是首先到目标表去根据时间戳使用数据库中的获取最大值的函数(一般数据库使用MAX函数)来查找时间戳里的最大值,然后使用这个最大值去源表找大于这个值的数据(同时需要根据这个时间戳进行排序),这些查找到的数据就是我们需要同步的增量数据,时间戳这种方式不能区分这些数据是插入还是更新的操作 。那么接下来使用的是数据平台提供的插入更新组件,这个组件会在执行操作前先根据主键到数据库中查寻一下数据如果有则执行更新,如果没有则执行插入 。这样进行数据同步,如果在执行过程中出现异常那么目标数据库就没有同步这些增量数据 。同样我们在进行作业触发时使用的都是按照频度、计划去定期执行,当前这次同步失败后,在下一次计划触发执行时由于上一次所执行的作业没有进入目标表,在这次执行作业时从目标表查找的最大值就没有变化 。所以这次执行时就会从断点位置开始再次进行同步 。
推荐阅读
- MySQL数据库运维的基本命令
- AI 人工智能,数据科学和数据分析
- 用数据说话,2021悬疑剧全面复盘
- 大数据助力精准帮扶,无锡物价局开展茶叶成本收益数据核对调查工作
- 怎样选择数据库?一文看懂数据库分类
- MySQL数据库表结构快速导出成MarkDown文档
- 80后架构师教你学ApacheBeam,一个开源统一分布式数据处理编程库
- 浅谈数据库分布式架构设计
- 茶叶杀青的目地,冰岛普洱茶的杀青过程
- 创造新白茶的整个过程,新白茶的特点