再见shareplex

shareplex是Quest公司出品的软件,专门用来做Oracle数据库之间的同步,他的原理是通过解析Oracle的redo log,然后解析成SQL语句同步到其他的数据库中,它最大的好处在于,同步时目标数据库可以读写。类似shareplex的软件有很多,比如国内的厂商 DSG,他们虽然实现的细节上有差异,但是基本原理都是一样的。

我很奇怪Oracle为什么一直不推出自己的解决方案,据Oracle的顾问说,他们从来没有将redo log的格式公开给其他任何一个公司,包括Quest公司(但我对此表示怀疑,因为Oracle logical standby据说就是Quest给OEM的)。Oracle从10g开始,推出了自己的产品Stream,但是目前我们对其并不看好,虽然redo的格式Oracle最清楚,但是要形成一个成熟的产品还有很长的路要走,毕竟还没有经过大规模应用的检验。

我们同样面临很多数据同步的问题,通常的做法是:用trigger记录变化,然后通过程序定期同步数据。但是这种方法需要在数据库中建立大量的trigger,严重影响性能,且实时性很差。

去年部门来了一位对Oracle internal和C语言很精通的同事范鑫,我们也有想法自己做Oracle redo解析。我们的目标很简单,并不是要做一个类似shareplex这种大而全的商业软件,而是通过Oracle redo解析出变化的PK,将其记录到数据库(MySQL)或者文件中,然后程序根据这些PK再去同步数据(其实可以看成是替换了数据库中用来记录变化的 trigger)。因为目标简单,通过大半年的努力,现在已经在数据仓库得到了应用。原来数据仓库抽取数据必须依赖于每个表上的修改时间字段,非常不可靠,而且每天只能取一次。现在通过redo解析(可以解析online redo),可以基本做到准实时同步。解决了多年困扰数据仓库的数据抽取问题。

这套系统我们还在不断的完善中,包括DDL的支持,CLOB等特殊数据类型,直接SQL解析,并行apply等等。接下来,我们要将其逐步应用到数据库站点之间的同步上。不仅如此,这套系统给我们更多的遐想,包括Oracle和MySQL数据库的数据同步,Oracle与搜索引擎,memcache 之间的数据同步等等。

地球人都知道我们“不差钱”,那为啥不用成熟的商业软件,自己费半天劲做的能比shareplex好?就象我们自己用PC机搭建的山寨存储,可能比某些公司用跳楼价卖给我们的存储还要贵。有些人说:让专业的人做专业的事,言下之意,DBA就应该只管好数据库。我承认山寨存储永远也做不到象 EMC那样专业,自己的redo解析工具肯定不会比shareplex更强大。我们也没想过要做一个东西来替代它们,我们的目标是适用于我们自己的环境,简单可靠,而且技术掌握在自己手中有很大的灵活性,比如redo解析工具加以修改就可以演化出很多小工具,给DBA的工作带来了便利。另一方面,除了结果,我们更看重创新的过程,如果连想都不敢想,创新从何谈起。

通过这个Oracle redo解析的工具和一系列同步的应用程序,我们就可以搭建一个山寨版的Oracle数据库同步方案。”能解决问题的方案就是好方案,就是有技术含量的方案“,我现在非常推崇用简单的技术搭建复杂的系统,用搭积木的方式解决工作中的问题,请各位大牛不要总拿技术含量说事。

在这个项目中,我只是个旁观者,从最初的怀疑态度到现在的坚定支持者,我的观点发生了很大的改变。感谢大师,感谢范鑫,感谢团队的共同努力,让不可能成为可能,而不是总停留在想法的阶段。

借用发哥一句话:成功?我才刚上路呢。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值