当前位置: 首页 > 工具软件 > 增量超越 > 使用案例 >

增量数据抽取

蓝星辰
2023-12-01

1. 增量数据的抽取方案

1.1 基于触发器的方式

在要抽取的表上建立需要的触发器,一般要建立I(INSERT)、D(DELETE)、U(UPDATE)三种触发器;每当源表中的数据发生变化,就被相应的触发器将变化的数据写入到一个临时表中,再通过ETL工具从临时表中抽取数据写到目标表中,同时要将临时表中抽取过的数据标记或者删除。

优点:是数据库本身的触发机制,契合度高,可靠性高,不会出现有增量数据没有被捕获到的现象。

缺点:因为要在业务表中简历触发器,对元数据库有影响,可能会对业务系统构成威胁

1.2 基于时间戳

对比数据的修改时间和上次发起数据同步的时间,将修改时间大于上次数据同步时间之后的数据抽取出来进行同步。

优点:逻辑清楚,流程简单

缺点:业务数据库必须存在不为空的修改时间。若只有创建时间不可行,会导致基某一个时间错(创建时间)之后的修改行为(修改或者逻辑删除)无法捕捉到

1.3 基于全量数据对比

为要抽取的表建立一个类似结构的快照库表;每次抽之前,对比源表和快照表,(对比方式可以使用字段一一对照或者布隆过滤器),找出更新的数据;将更新的数据同步到目标库表上;最后更新快照表

优点:逻辑清楚;对源库表没有影响;对目标库影响小

缺点:源表和目标表都需要主键,源表主键用于对比找出增量数据,目标表主键用于同步时跟源表建立映射关系;适用于数量比较小的表

1.4 全表删除,重新插入

每次操作均删除目标表的数据,再将源表的数据全量同步到目标表中。

优点:简单暴力,速度快

缺点:对目标表之前的存量数据影响较大,每次同步都会将之前的目标库数据完全舍弃,目标库的存量数据即使备份,意义也不大(因为数据不全);不适合需要进行数据修复的场景

2. 数据库同步工具

2.1 常见的集中开源数据库同步工具:

数据库同步工具简介优点缺点
canalcanal是有Alibaba开源的一个基于binlog的增量日志组件,核心原理是canal伪装成吧Mysql的slave,发送dump协议获取binlog,解析并存储起来给客户端消费可以同步任何非查询类型的操作。DDL和DML语句(除了数据查询语句select)。增量和全量都可以数据源只支持Mysql,因为使用了Mysql的binlog特性
otterotter是一款基于Java且免费、 开源基于数据库增量日志解析,准实时同步到本机房或异地机房的数据库的解决方案支持单向同步,双向同步,文件同步,双A同步等多种同步解决方案同canal,因其使用canal来进行同步的
yugongyugong是Alibaba推出的Oracle数据库迁移同步工具,支持全量和增量两种抽取方案数据库支持oracle作为源,支持异构数据,实现相对简单由于是以oracle物化视图为基础去做的增量方案,类似于trigger机制会对数据库写入造成一定的影响
dataxdatax是一个异构数据源离线同步工具,致力于实现包括关系型数据库(Mysql、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的同步功能支持非常多种数据库同步,原理是通过select同步的不支持DDL同步

参考资料:
https://blog.csdn.net/mochou111/article/details/80995156

https://blog.csdn.net/yangtongli2012/article/details/51725408

 类似资料: