多数据库之间同步数据怎么做?

beihangsxh 发布于 2013/03/04 14:23
阅读 4K+
收藏 2

从数据库A中查询数据,更新到数据库B中。如果不在A上做修改(比如触发器等等),有没有比较好的做法呢?

1. 如果数据量比较大,每次读取A的查询结果集和B的已有数据,二者对比后更新B,这样做占用内存会不会太大?

2. 每次更新对B进行重写,大数据量下B数据库的IO会不会太大?

恳请各位老师赐教!

加载中
0
恺哥
恺哥

A和B是异构的吗(是不是同一种数据库)?

如果是同一种数据库的话,你同步的数据表结构是否相同,如果也相同的话,完全可以利用数据库的同步复制机制来解决;(做主从)

如果表结构不相同的话,如果不在应用层处理的话,有两种方式参考:

1,A推数据给B;A有数据的时候,实时或非实时(采用event或trigger)将数据推到B中,B再做处理;

2,B从A拉数据,用一个event(mysql中的job)定时从A中拉数据然后进行处理;

另外可以选择在应用层来做,这个我就不多介绍了,根据业务逻辑coding就行了。

由于不清楚你的业务特点,所以无法进一步的帮你分析。

仅供参考

beihangsxh
beihangsxh
谢谢您的回答! A和B都是关系数据库,我想从A中做一些查询,将得到的结果集更新到B中,作为某个应用的基础数据,然后B中其他表存储一些应用相关的其他数据,以达到不改变A的前提下扩展应用的目的。
0
渔樵耕读
渔樵耕读
可以用开源的数据迁移工具etl。基本能满足你的要求。
0
YondWell
YondWell
直接应用层处理就好了。
0
liu_kelin
liu_kelin
楼上 这样会影响运行效率吧。
0
D
Duke.Yee

都是oracle的话推荐用goldengate。

更通用的做法是自己写个工具,A库产生同步指令和数据,B库根据指令和数据同步到本地

0
佐岸
佐岸
数据交换么~
0
茶几123
应该有service层吧,为啥不在里面写定时器,通过A数据库里面的时间去做不行吗?
0
chuangyu
chuangyu

不用触发器,不想每次都全盘复制,就要自己写判断增量的逻辑。


0
s
sztpzh

有些网闸带有同步工具

0
s
sztpzh
比如TIPTOP利谱
返回顶部
顶部