在不同的数据库上复制修改的数据

时间:2013-09-12 14:34:50

标签: java database jpa jms

我想问一个研究技术或框架的起点。

我需要完成的工作如下:

我们有一个使用JPA的Java EE 6应用程序用于持久性;我们希望将主数据库用作某种暂存器,用户可以根据给定的任务插入/删除记录。然后,在一天结束时,管理员将对他们批准或不批准的工作进行某种检查。如果他批准了这项工作,所有更改都将永久完成,主数据库将同步 - 复​​制到另一个(出于安全原因)。否则,如果管理员不批准更改,则会回滚它们。

现在我有两个问题要弄明白:

首先 - 是否有可能在一段时间内回滚一堆JPA操作?

Second.-按代码触发复制(这可以由RDBMS引擎完成)。 现在,如果无法进行RDBMS复制(可能是因为客户端要求),我们需要JPA的同步框架作为备份。我正在研究一些JMS解决方案,但不清楚确切的过程或如何使它们在JPA上工作。

任何帮助将不胜感激, 感谢。

2 个答案:

答案 0 :(得分:1)

我认为,您的设计步骤在丢失数据方面存在太大的风险。我的理解是你在谈论在内存中保存数据,直到管理员批准/拒绝它。在这种情况下,您必须考虑灾难情况并保存数据。

相反,这个问题陈述更倾向于工作流设计,其中

  
      
  1. 数据由一个实体输入,它是持久的。
  2.   
  3. 其他实体批准/>拒绝数据。
  4.   
  5. 所有已批准的数据将进一步复制到下一个数据库。
  6.   

所有这三个步骤都可以在3个模块中实现,并以持久存储/ JMS技术为后盾。根据实时情况,每个步骤都需要;你可以想到一个优雅的设计,以经济有效的方式实现这一目标。

答案 1 :(得分:1)

  • 在表格中添加“工作流程状态”列。州:等待批准,批准,复制
  • 使用JPA正常保留您的数据(状态:等待批准)
  • 审批人批准:使用JPA更新,更改为已批准状态

至于复制

  • 在批准方法中,您可以将数据同步复制到其他数据库(使用JPA)
  • 您可以将已批准的数据复制到另一个表,并使用一些RDBMS功能让RDBMS复制该表的数据
  • 您也可以发送JMS消息。在一天结束时,作业将读取队列并将数据保留在其他数据库中

无论如何,我建议使用具有同步复制的普通RDBMS群集。在这种情况下,您不必开发自制的复制方案,并且始终拥有数据的副本。您始终拥有工作流程状态。