数据库之间同步介绍

来源:互联网 发布:java dos 命令 编辑:程序博客网 时间:2024/06/06 00:42

 一般数据在应用里面产生,再存储到数据库,通过数据流的过程,整个数据库之间数据同步可以分为三种方式

1、应用层数据同步

2、数据库层同步

3、数据文件层同步

这三种同步方式各有各的优缺点


 应用服务层数据库层系统文件层优点1、与业务数据库无关,支持多种,多个数据库
2、同步不影响业务数据库库的性能
3、方便扩展1、与业务系统无关
2、数据同步接入简单,难度小
3、易维护1、高性能
2、操作简单,能快速接入
3、易维护缺点1、接入非常耗时,需要各个业务系统单独做开发
2、非常依赖业务系统,任何一个系统服务器出问题,数据同步会受影响,保证系统高可用难度大
3、很难兼顾不走应用层的数据变更
例如:在生产库刷数据1、非常依赖数据库,一旦换数据库,增加服务器对同步影响巨大。
2、影响业务数据库的性能1、不能指定哪些表和哪些字段不要,必须全部同步

数据库层常见同步介绍:

1、利用sql定时定量去源表中取数据同步
2、利用触发器等数据库的通知机制同步
3、利用数据库日志同步

Oracle到Oracle库之间的数据实时同步,目前缺少免费好用的方案。

打算利用oracle的 DCN(data change notification)实现数据实时同步。

花了一周时间折腾下来,这玩意资料太少了,都没看到有公司在用的案例。

目前碰到的问题
一、少量数据的变更的通知才带上表的rowid,一旦批量几十条以上就只通知不告知变更类型不带上明细的rowid
二、通知错过了不会再通知,不管是否收到只通知一次
三、高并发下的性能未知


网上大量存在的关于DCN的例子都是把官网jdbc中的demo代码贴出来的,往往接收通知消息的时候,

获取的表名是乱码???,搜了一圈都看没到有人给出解决方案。实际上在引入jdbc驱动包时把oracle的

包含区域语言编码包orai18n.jar带上就可以了

1 0