不同数据源之间数据同步的几种实现方式
2011-06-18 00:12
676 查看
转自:http://pdi.itpub.net/post/37422/465659
数据同步一般是指一个数据源的数据发生改变时,其他相关的数据源的数据也发生相应变化。数据同步可以有五种实现方案,根据具体需求不同,可以采取不同方案。
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 方式的同步插件。
数据同步一般是指一个数据源的数据发生改变时,其他相关的数据源的数据也发生相应变化。数据同步可以有五种实现方案,根据具体需求不同,可以采取不同方案。
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 方式的同步插件。
相关文章推荐
- 不同数据源之间数据同步的几种实现方式
- 不同数据源之间数据同步的几种实现方式
- 不同数据源之间数据同步的集中实现方式
- 不同页面之间实现参数传递的几种方式
- 不同页面之间实现参数传递的几种方式
- 关于R从不同数据源导入数据的几种方式总结
- 关于不同页面之间实现参数传递的几种方式讨论
- 不同数据源之间的数据同步jdbc解决方案
- hadoop distcp 实现不同集群之间数据同步
- 几种可以实现在不同设备动态正常显示表格数据的方式
- 不同页面之间实现参数传递的几种方式讨论
- 不同页面之间实现参数传递的几种方式讨论
- Kettle 实现mysql数据库不同表之间数据同步——实验过程
- 【笔试题】不同页面之间实现参数传递的几种方式
- 应用系统之间传输数据的几种方式
- 谈谈下订单的几种实现方式(用不同的模式实现:装饰器模式、代理模式、命令模式、状态模式、模版模式)
- 应用系统之间数据传输的几种方式
- 应用系统之间数据传输的几种方式
- 利用DBLink+JOB实现两个Oracle数据库之间的数据同步
- Undo/Redo几种实现方式介绍(二)——保存数据方式