在不同应用程序之间同步数据的推荐方法是什么?

时间:2011-05-13 10:20:06

标签: java synchronization versioning

我有一个用J2EE + Spring + Hibernate编写的应用程序(称之为app1),现在我的老板想要另一个应用程序(app2,完全不同并使用不同技术编写),可以定期自动同步它(至少只有一种方式app1到app2)。我从来没有做过这样的事情......我可以想到这个问题:app2调用app1(可能使用web服务),我怎么知道自上次同步以来哪些部分数据已被添加和更新?我想要的是在主app2的每个表上添加一个时间戳列,以便app1可以说“给我一些在时间戳xxxx之后被更改或添加的内容。这包括修改很多东西。我还可以使用哪些其他功能来解决这个问题,whitout修改了太多的应用程序结构?(假设数据库不同,我不希望我的服务器上的每个人都可以打开数据库端口。)

最后,我忘记了,行删除怎么办?时间戳不会解决这个问题......

4 个答案:

答案 0 :(得分:1)

您可以在app2中维护更改日志。插入/更新/删除的触发器可以维护此日志表。 App1可以读取表以获取更改并定期删除已处理的日志行。

答案 1 :(得分:0)

看看Terracotta(http://www.terracotta.org/),它是一个非常强大的框架,用于在机器之间同步对象。

答案 2 :(得分:0)

您可能需要查看一些数据库同步实用程序。我相信那会更好。

答案 3 :(得分:0)

通过同步,你的意思是app2访问的数据应该与app1访问的数据相同(意味着,app2应该能够看到最新数据,由app1更新/修改)?

如果是这种情况,为什么不将app2指向app1使用的同一个数据库?