最近,利用一些时间对oracle数据库实时同步工具作了一些调研分析,主要关注了linkedin的databus和阿里的yugong两个中间件,其中databus须要在每一个待同步的表上增长额外的列和触发器来实现,方案比较重,本文将着重分析一下阿里的yugong实现方案及给出分析调研报告。数据库
1.yugong实时同步原理oracle
使用了oracle的物化视图日志功能,相似于一个内部的触发器,原表的数据库须要对用户受权具备物化视图日志的建立和删除权限,关于物化视图日志的详细描述,能够参考下面的文章:app
http://blog.csdn.net/tianlesoftware/article/details/7720580函数
2.性能测试工具
a.在测试环境1的原表(TEST_SOURCE)新生成300万数据性能
b.为不影响开发环境的数据,修改yugong代码,将目标表改成TEST_SOURCE_BAK测试
c.启动yugong服务,开始同步数据.net
d.通过1.5小时,同步完全部增量数据翻译
3.数据延时测试日志
a.分别手动对原表数据进行了增改删操做,10秒钟内能够实现数据同步
b.在目标库中新增一列,类型为时间类型,默认值为当前时间
c.使用脚本反复在原库中生成一批数据(50条为一批)
d.全部数据的延迟时间都在30秒之内
4.数据完整性测试
a.手工随机抽查数据,对比同一条记录的各个列值,数据都是一致的
b.使用jdbc抽出特定的记录集合,使用md5函数,md5结果一致
5.其它测试用例
a.原表增长字段,而目标表不增长,数据正常同步
b.目标表先增长字段,原表不增长字段,数据正常同步
c.原表和目标表同时增长字段,服务须要从新启动后才能够进行数据同步
d.无主键测试,yugong不支持无主键同步
e.主键为多列测试,能够正常同步
f.yugong服务连续运行72个小时,中间出现过一次同步中断,缘由不明
g.物化视图日志在事务中rollback时,会同步rollback
h.目标表将某条记录删除,原表将此记录更新,此记录会从新同步到目标表
6.yugong分析
a.代码简洁,分为extractor(提取)、translator(翻译)、applier(更新到目标库)三个部分
b.只有一个服务,无其它第三方依赖
c.原理简单,能够按照咱们的意图来更改代码