具有离线存储/查询功能的Grails应用程序

具有离线存储/查询功能的Grails应用程序,grails,web-applications,Grails,Web Applications,我有个朋友想让我为他拥有的三家商店写一个库存管理系统。我在想我可以使用Grails编写一个webapp,这样所有三个商店都可以读取和写入一个公共数据库。问题是,如果互联网连接出现问题,他将失去与数据库的连接,因此无法进行任何交易 我的问题是,如果出现网络故障,我是否可以采取措施使应用程序退回到本地数据库实例,并且当网络备份时,重新连接并更新主数据库中的数据?将责任推到数据库级别并使用主复制。例如,Mysql提供了这样的东西。不过,以股票为例,这可能会很困难 您可以为您的场景使用JMS插件。您的应

我有个朋友想让我为他拥有的三家商店写一个库存管理系统。我在想我可以使用Grails编写一个webapp,这样所有三个商店都可以读取和写入一个公共数据库。问题是,如果互联网连接出现问题,他将失去与数据库的连接,因此无法进行任何交易


我的问题是,如果出现网络故障,我是否可以采取措施使应用程序退回到本地数据库实例,并且当网络备份时,重新连接并更新主数据库中的数据?

将责任推到数据库级别并使用主复制。例如,Mysql提供了这样的东西。不过,以股票为例,这可能会很困难

您可以为您的场景使用
JMS插件。您的应用程序将数据转储到队列中,队列处理其余的数据。例如,您可以指定重试策略。

您可以使用MongoDB(请参阅MongoDB插件),让每个Grails实例在复制发生时写入自己的Mongo实例(?或者可能有一个主实例和两个从实例?)。如果一个节点失去连接,它应该继续使用其本地Mongo节点(最近的节点?),直到其他节点恢复。我没有做过类似的事情,所以不能100%确定它是否适用于您的用例,但值得一看。带有webapps的机器将位于不同的地理位置。我不认为这种模式对我有用。我不认为不同的地理位置应该是一个问题——事实上,它是为了解决这个问题而设计的,因为如果一个数据中心存在电源/网络/漏洞问题,您通常希望一个非现场从站能够接管作为主站。哦,我会研究一下。但MongoDB不是专为投标数据设计的吗。我的数据最多只能跨越几GB。我认为mongo db本身并不是为大数据而设计的。当然,通过水平扩展,许多nosql存储允许您轻松地进行扩展,您可以实现具有某种“大数据”的场景。但是,您希望横向扩展的原因可能是其他形式的(如您描述的场景)。所以这里的@nickdos提示似乎是一种有效的方法。我认为我的问题与主复制无关。