Java 具有共享数据的两个web应用程序

Java 具有共享数据的两个web应用程序,java,mysql,spring,web-applications,Java,Mysql,Spring,Web Applications,我们正在开发两个web应用程序,webapp#1是一个商店应用程序,基于spring的应用程序和mysql,另一个(webapp#2)是webapp#1的后台应用程序 我们希望后台操作(webapp#2)不会影响webapp#1的数据库,这需要具有非常高的可用性 我们面临的问题是如何共享(如果有的话)与这两个webapp相关的实体 例如,为了让后台生成门店产品的按需报告,它必须在实体“产品”和“门店”上进行聚合 现在,“产品”和“商店”显然是webapp#1模式中的实体,但是为了让webapp#

我们正在开发两个web应用程序,webapp#1是一个商店应用程序,基于spring的应用程序和mysql,另一个(webapp#2)是webapp#1的后台应用程序

我们希望后台操作(webapp#2)不会影响webapp#1的数据库,这需要具有非常高的可用性

我们面临的问题是如何共享(如果有的话)与这两个webapp相关的实体

例如,为了让后台生成门店产品的按需报告,它必须在实体“产品”和“门店”上进行聚合

现在,“产品”和“商店”显然是webapp#1模式中的实体,但是为了让webapp#2(后台)生成报告,它必须具有相同的实体

那么,我们究竟如何才能做到这一点呢?我们是否应该在两个webapps架构上复制“产品”和“存储”?(并遭受冗余数据的困扰)冗余在现实生活中是否已经成为一种实践?这似乎太糟糕了

请记住,如果模式仅在webapp#1中,那么后台应用程序在生成报告时可能会产生干扰

报告场景不是真正的问题,它只是一个示例


最佳选择,选项1:例如,您可以使用web服务。从实际聚合表中读取数据的。这里有一些工作


选项2:或者有一个带有自己数据库的报表服务器,webapp#2报表应用程序可以使用它。在此数据库中,当webapp#1未加载时,可以在预定义的时间内完成数据库级别的复制。

是只有读访问才有干扰,还是读和写都有干扰?读访问也有干扰,因为某些查询非常复杂。我认为在高可用性上启动报告生成查询不是一个好主意数据库您需要某种类型的暂存数据库来启动报告生成查询。所以我需要数据冗余?不是完全冗余。但是,例如,如果您正在创建每日报告,请创建一个每日作业,该作业将在该1天期间将实时数据导入暂存数据库。导入完成后,在暂存数据库上运行复杂查询。生成报告后,可以从暂存数据库中清除数据。确保暂存数据库保存生成报告期间的数据。