从数据库A中查询数据,更新到数据库B中。如果不在A上做修改(比如触发器等等),有没有比较好的做法呢?
1. 如果数据量比较大,每次读取A的查询结果集和B的已有数据,二者对比后更新B,这样做占用内存会不会太大?
2. 每次更新对B进行重写,大数据量下B数据库的IO会不会太大?
恳请各位老师赐教!
A和B是异构的吗(是不是同一种数据库)?
如果是同一种数据库的话,你同步的数据表结构是否相同,如果也相同的话,完全可以利用数据库的同步复制机制来解决;(做主从)
如果表结构不相同的话,如果不在应用层处理的话,有两种方式参考:
1,A推数据给B;A有数据的时候,实时或非实时(采用event或trigger)将数据推到B中,B再做处理;
2,B从A拉数据,用一个event(mysql中的job)定时从A中拉数据然后进行处理;
另外可以选择在应用层来做,这个我就不多介绍了,根据业务逻辑coding就行了。
由于不清楚你的业务特点,所以无法进一步的帮你分析。
仅供参考
######谢谢您的回答! A和B都是关系数据库,我想从A中做一些查询,将得到的结果集更新到B中,作为某个应用的基础数据,然后B中其他表存储一些应用相关的其他数据,以达到不改变A的前提下扩展应用的目的。######可以用开源的数据迁移工具etl。基本能满足你的要求。######直接应用层处理就好了。######楼上 这样会影响运行效率吧。都是oracle的话推荐用goldengate。
更通用的做法是自己写个工具,A库产生同步指令和数据,B库根据指令和数据同步到本地
######数据交换么~######应该有service层吧,为啥不在里面写定时器,通过A数据库里面的时间去做不行吗?不用触发器,不想每次都全盘复制,就要自己写判断增量的逻辑。
有些网闸带有同步工具
######比如TIPTOP利谱版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。