Java 在不同的应用程序之间同步数据的推荐方法是什么?
我有一个用J2EE+Spring+Hibernate编写的应用程序(称之为app1),现在我的老板希望另一个应用程序(app2,完全不同,使用不同的技术编写)可以定期自动与之同步(至少是app1到app2的一种方式)。我从来没有做过这样的事。。。我可以想到这个问题:app2调用app1(可能使用Web服务),如何知道自上次同步以来添加和更新了哪些数据?我想到的是在主app2的每个表上添加一个时间戳列,这样app1可以说“给我时间戳xxxx之后更改或添加的所有内容。这涉及到修改许多内容。在不修改太多应用程序结构的情况下,我可以使用哪些其他功能来解决这个问题?”?(假设数据库不同,我不想让服务器上的每个人都可以使用数据库端口)Java 在不同的应用程序之间同步数据的推荐方法是什么?,java,synchronization,versioning,Java,Synchronization,Versioning,我有一个用J2EE+Spring+Hibernate编写的应用程序(称之为app1),现在我的老板希望另一个应用程序(app2,完全不同,使用不同的技术编写)可以定期自动与之同步(至少是app1到app2的一种方式)。我从来没有做过这样的事。。。我可以想到这个问题:app2调用app1(可能使用Web服务),如何知道自上次同步以来添加和更新了哪些数据?我想到的是在主app2的每个表上添加一个时间戳列,这样app1可以说“给我时间戳xxxx之后更改或添加的所有内容。这涉及到修改许多内容。在不修改太
最后,我忘了,行删除怎么办?时间戳解决不了这个问题…看看Terracotta(http://www.terracotta.org/),它是一个非常健壮的框架,用于在机器之间同步对象。您可能需要查看一些数据库同步实用程序。我认为这会更好。通过同步,您的意思是app2访问的数据应该与app1访问的数据相同吗(也就是说,app2应该能够看到由app1更新/修改的最新数据)
如果是这种情况,为什么不将app2指向app1使用的同一个数据库?您可以在app2中维护更改日志。插入/更新/删除触发器可以维护此日志表。app1可以读取该表以获取更改并定期删除处理过的日志行。是的,但我明确表示不需要外部访问此外,app2使用不同的技术,所以它不能使用同一个数据库。因此,它基本上归结为这一点-app2的数据库需要与app1的数据库同步。如果需要,您可以查看一些工具。