数据同步方法有以下几种:
1、触发器。在源数据方的数据库建立触发器,当源数据库有数据变化时,相应触发器就会激活,根据触发器的设置进行数据同步操作。 使用触发器的方法实现数据同步的优点在于它能做到实时同步, 而缺点是由于需要在业务系统建立触发器, 因此会影响到业务系统, 降低业务系统性能。
2、分析日志。
通过分析源数据库日志,来获得源数据库中的变化的数据,再根据数据变化进行相应的数据操作。 优点: 基本不影响业务系统。 缺点: 会有一定的延时; 对于没有提供日志分析接口的数据源, 开发的难度比较大。
3、增加标志位。在表中添加一个字段。 当有记录被新增或修改的时候, 这个标志位置的值发生改变, 系统根据标志位的值进行数据同步操作。 优点: 基本不影响业务系统。缺点: 需要在源数据表增加一列; 且在删除数据时, 还要做一些特殊处理。
4、数据比较。通过比较两边数据源数据, 来完成数据同步。 一般用于实时性要求不高的场 多个业务系统间数据同步系统的设计与实现 。 优点: 基本不影响业务系统。 缺点: 效率低。
5、全表复制。定时清空目的数据源, 将源数据源的数据全盘拷贝到目的数据源。 一般用于数据量不大, 实时性要求不高的场景。 优点: 基本不影响业务系统; 开发、 部署都简单。 缺点: 效率低。
收起首先多个应用系统之间的耦合性应该尽可能的低,
单纯的数据库层面的实时同步个大数据库厂商都有着对应的解决方案,但是效果一般,满足低访问量的小型项目需求,
大型的项目,应该考虑集群缓存的方案,持久化存储的io一直存在瓶颈,
应该从程序设计入手,阿里等公司都有着相关的消息中间件,数据库中间件,此类方法不失为一种解决方案,
程序的稳定性是你自己的程序设计问题,现比较好的rpc框架可以参考阿里的dubbo的架构设计
应该还是依靠ESB之类的产品,效率主要是通讯协议的选择吧。RPC之类的性能就是不错开业的有阿里的DUBBO,新浪MOTAN等。
类型 | 产品 | 公司 |
Oracle Service Bus (OSB) | Oracle||
Oracle Enterprise Service Bus (ESB) | ||
WebSphere Enterprise Service Bus | IBM||
WebSphere Message Broker | ||
WebSphere DataPower | ||
Sonic ESB | Progress | |
ActiveMatrix Service Bus | TIBCO | |
Mule | MuleSoft | |
ServiceMix/FUSE ESB | Progress | |
Synapse/WSO2 ESB | WSO2 |