使用java同步不同服务器中的两个表的有效方法

时间:2011-05-17 08:21:58

标签: java sql database optimization jdbc

我们有一个源表,可以从各种外部系统更新。我要求目标表(在不同的服务器中)与此源表同步。目标表不是源表的精确副本,在将数据插入/更新到目标表之前,必须完成一些数据处理。

我想到了以下逻辑

每隔15分钟,我们运行这个java消费者代码,该代码获取创建时间戳的记录,而不是先前更新的记录,并存储在CachedRowSet中。并以CachedRowSet作为参数调用存储过程,完成数据处理并将数据插入/更新到目标表中。

您是否相信上面提到的是一种有效的方式,因为我们每次更新都会处理超过一百万条记录?

当在源表中删除记录时也不会在上面的方法中复制!你能建议在这种情况下做些什么

3 个答案:

答案 0 :(得分:1)

类似于数据库用于保存点和回滚的技术。 只要源表中有一些变化,例如CRUD。根据目标表所需的格式保留更改脚本。您可以定期将这些更改推送到目标服务器。由于您的源表由各种外部系统更新,因此您需要在源表上设置触发器以保留脚本日志。

答案 1 :(得分:0)

您可能想要从Maatkit工具中查看mk-table-sync:

http://www.maatkit.org/doc/mk-table-sync.html

你需要小心你的桌子差异。

答案 2 :(得分:0)