我正在寻找一个高级答案,但这里有一些细节以防它有帮助,我正在将 J2EE 应用程序部署到 WebLogic 中的集群。后端有一个 Oracle 数据库。
应用程序的正常流程是
- 用户向应用程序提供数据(以行形式插入)
- 应用程序等待数据达到一定大小并批量插入数据库(仅 1 次提交)
数据库中有一个限制,防止“重复”数据插入。如果应用程序违反了约束,它将不得不一次回滚并重新插入一行,因此可以“重命名”并插入重复的行。
假设我有 2 个正在运行的应用程序实例。每个实例都将插入 1000 行。即使只有 1 个重复项,一个实例也必须回滚并逐行插入。
我可以很容易地看出,在这种情况下,将不冲突的 999 行作为批处理重新插入会更聪明,但如果我有 3 个正在运行的应用程序并且这 999 行也有重复的机会怎么办?
所以我的问题是:是否有针对这种情况的设计模式?
这是一个很长的问题,所以请让我知道在哪里澄清。感谢您的宝贵时间。
编辑: 每个实例的 1000 行数据都在内存中,但它们看不到彼此的行。他们知道某行是否重复的唯一方法是将其插入数据库。
如果当前的应用程序设计没有意义,请随时提出解决此问题的更好方法。我将不胜感激。
最佳答案
关于java - 是否有针对此问题的分布式软件和一个后端数据库的良好模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4187899/