不同数据源之间数据同步的几种实现方式

数据同步一般是指一个数据源的数据发生改变时,其他相关的数据源的数据也发生相应变化。数据同步可以有五种实现方案,根据具体需求不同,可以采取不同方案。

1. 触发器:在源数据库建立增、删、改触发器,每当源数据库有数据变化,相应触发器就会激活,触发器会将变更的数据保存在一个临时表里。ORCLE 的 同步 CDC (synchronized CDC) 实际上就是使用的触发器
优点:
能做到实时同步
缺点:
降低业务系统性能,ORCLE 的 synchronized CDC 大概降低10% 左右。
影响到业务系统,因为需要在业务系统建立触发器。

2. 日志:通过分析源数据库日志,来获得源数据库中的变化的数据。ORCLE 的 异步 CDC (Asynchronized CDC) 就是使用这种方式。


优点:
基本不影响业务系统,如Oracle Asynchronized CDC 的 HotLog 方式对业务系统的性能大概降低 3% 左右,而 AutoLog 方式对业务系统几乎没有影响。
缺点:
有一定的延时
对于没有提供日志分析接口的数据源,开发的难度比较大。
3. 时间戳:在要同步的源表里有时间戳字段,每当数据发生变化,时间戳会记录发生变化的时间。
优点:
基本不影响业务系统
缺点:
要求源表必须有时间戳这一列。
在删除数据时,还要做一些特殊处理。

4. 数据比较:通过比较两边数据源数据,来完成数据同步。一般用于实时性要求不高的场景。
优点:
基本不影响业务系统
缺点:
效率低

5. 全表拷贝:定时清空目的数据源,将源数据源的数据全盘拷贝到目的数据源。一般用于数据量不大,实时性要求不高的场景。
优点:
基本不影响业务系统
开发、部署都很简单
缺点:
效率低

总结:
1. 上面五种数据同步方式,除了第五种都需要业务表有主键。
2. 对于没有触发器和日志的一些小型数据源,如txt 文本,excel 文件,Aceess,则只能使用后三种方式。
3. 对于大型数据源,一般优先选择日志方式,如 ORCALE Asynchronized CDC, 对于不能通过日志来实现的情况,可以考虑第1,3,4种方式。

PS.

PDI 的官方版 3.1 可以提供第 3,4,5 种解决方案,在我们改进的 PDI 中文版中提供了 ORACLE CDC 的解决方案(使用 ORACLE CDC 输入和 ORACLE CDC 输出插件完成)
目前我们正在开发 SQLServer 触发器方式 和 SQLServer CDC 方式的同步插件。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
分布式存储数据同步是通过一系列协议和算法来实现的。以下是常见的几种方法: 1. 基于主从复制的数据同步:在分布式系统中,一个节点作为主节点,负责接收写操作并将数据同步到其他从节点。从节点只能接受读操作,不能写入数据。主节点将写操作记录到日志中,并将其发送到所有从节点。从节点接收到日志后,按照日志顺序执行写操作,从而实现数据同步。 2. 基于多数派决策的数据同步:在分布式系统中,多数派决策是指如果要进行写操作,需要获得大多数节点的同意。这样可以避免数据冲突和数据丢失。在这种情况下,节点会相互通信,并使用一些算法(如Paxos)来确定写操作的顺序和结果。 3. 基于对等网络的数据同步:在对等网络中,每个节点都可以读写数据,并且每个节点都可以成为其他节点的同步源。节点之间通过协议进行通信,并共享数据。例如,BitTorrent就是一种基于对等网络的数据同步协议。 4. 基于共享存储的数据同步:在分布式系统中,多个节点可以访问共享存储,从而实现数据同步。例如,使用分布式文件系统(如HDFS)可以将数据存储在共享存储中,并允许多个节点同时访问该数据。 以上方法都是通过不同的协议和算法来实现的,可以根据实际需求选择适合的方法来实现分布式存储数据同步

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值