数据同步 模式汇总

目录

1 全量同步

1.1 全表覆盖

1.2 差异更新

2 增量同步

2.1 时间戳

2.2 触发器

2.3 日志解析


BeeDI支持全量及增量数据同步功能,可定时或实时保持目标与源端数据一致。

1 全量同步

BeeDI将源表全部数据(或满足特定过滤条件的部分数据)同步到目标表,当源表数据量较大时,同步时间较长。依据同步前是否删除目标表已有数据可选择全表覆盖或差异更新方式。

1.1 全表覆盖

在同步数据前首先删除目标表已有数据(或依据过滤条件删除特定数据),然后将源表数据批量写入目标表。

全表覆盖方式每次同步前需要删除目标表已有数据,会对依赖目标表的查询业务产生影响,通常用于首次数据初始化或定时同步。

1.2 差异更新

比较源表和目标表所有数据(或满足特定过滤条件的部分数据),根据数据差异情况对目标表进行相应操作,对于缺失数据则新增,对于变更数据则更新,对于冗余数据则删除。

差异更新方式需要逐条比对数据,同步时间较长,由于需要使用内存缓冲,所以对于每次同步的数据量有一定的限制,通常用于小规模数据定时同步。

2 增量同步

BeeDI每次仅同步源表变化数据,同步效率高,但要求源表或源库满足一定的条件。

2.1 时间戳

要求源表存在一个或多个字段(时间戳),其值随着新记录的增加而不断递增,数据同步时,程序通过时间戳对数据进行过滤,同步结束后,程序记录时间戳信息。

时间戳可以同步新增或更新数据(依赖于时间戳变化),对于删除数据则无法同步。

时间戳模式通过记录包含的时间或序列快照识别变化数据,适合于业务数据变化不频繁时段的定时同步需求。

​​​​​​​2.2 触发器

需要在源数据库中创建触发器和临时表(自动创建),触发器捕获变化的数据到临时表中,同步时程序从临时表读取变化数据。

触发器可以捕获源表的增、删、改操作,按照临时表中数据标记的时间序列信息在目标表执行相应的操作。

触发器需要临时表缓存变化数据,产生额外的磁盘开销,另外当数据批量更新时,触发器可能导致业务操作异常。

触发器模式通过临时表中数据标记的时间识别变化数据,适合于业务数据变化较小的准实时同步需求。

​​​​​​​2.3 日志解析

源库要求以下类型数据库:

Oracle(8i、9i、10g、11g、12c)

SQL Server(2005、2008、2012、2014)

MySQL(5.6、5.7、8.0)

DB2(9.5、9.7、10.5)

Gbase(8.3)

PostgreSQL(10.5、11.8、12.3)

程序读取解析源库日志信息,还原增、删、改操作,然后在目标表上顺序执行相应操作。

日志解析需要源库开启归档、完整或二进制日志,产生较大的磁盘开销。

日志解析模式可以完整还原DML事务操作序列,可满足业务数据变化较大的实时同步需求。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值