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

3
我有一个使用J2EE+Spring+Hibernate编写的应用程序(称为app1),现在我的老板希望另一个应用程序(app2,完全不同并使用不同的技术编写)可以定期自动与其同步(至少是单向从app1到app2)。我从未做过这样的事情...我可以想到的问题是:app2调用app1(可能使用Web服务),我如何知道上次同步后添加和更新了哪些数据?我的想法是在主应用程序app2的每个表中添加一个时间戳列,以便app1可以说“给我所有在时间戳xxxx之后更改或添加的内容”。这涉及修改许多内容。除了修改应用程序结构之外,还有哪些功能可以用来解决此问题?(假设数据库不同,并且我不想在我的服务器上为每个人打开数据库端口。)
最后,我忘了,那么行删除呢?时间戳无法解决这个问题...
4个回答

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

0

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


0
你可能需要查看一些数据库同步工具。我相信那会更好。

0

通过同步,您是指app2访问的数据应该与app1访问的数据相同(也就是说,app2应该能够看到由app1更新/修改的最新数据)吗?

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


是的,但我明确表示我不想从数据库进行外部访问。此外,app2使用不同的技术,因此它根本无法使用相同的数据库。 - gotch4
1
所以基本上就是这样 - app2的数据库需要与app1的数据库同步。如果有这个需求,您可以查看一些ETL工具。 - user752189

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接