难道是使用陶土作为持久溶液(替换数据库)一个好主意?我特别想知道关于事务处理系统的数据完整性问题和支持。

有帮助吗?

解决方案

陶土是事务(同步块修改的对象的形式交易),但不是,不希望JTA兼容。有交易的一个相当长时间的讨论和有关兵马俑这里一些常见的误解。

我写一个博客文章数据寿命以及应该如何包围您关于识别的使用兵马俑的机会思考。总之,兵马俑的甜蜜点是你需要持久性和可用性(您的应用程序可能会崩溃,但你仍然需要的数据),但其中的数据不一定是关键的长期使用情况。

一个典型的例子就是数据在用户会话的上下文中重要的网络应用程序,因为购物车信息等。你想保存这些数据持久的,因此,如果您的Web应用程序崩溃,你保持购物车。但车本身可能或不可能永远购买。所以,你将它存储在兵马俑,直到它的购买,然后到数据库中保存的数据的“记录系统”。

从历史上看,你存储在数据库中的数据总是那是你的业务的长期成功的关键数据的“记录系统”:客户,订单等,在今天的“无状态”的架构(这真的不是活得牛逼无国籍),我们都推中期数据到数据库中。这意味着我们不必要惩罚我们的数据库(有额外的工作和存储)和我们的开发者(谁必须处理的对象关系阻抗失配,即使使用ORM)。更好的办法是把它留在对象和与兵马俑组成群集。最近的一些兵马俑的用户已经使用这种技术来减少显著他们的数据库足迹(为他们节省了数百万美元),同时提高他们的扩展能力。

有是积分点与数据库以及如何使越区切换可靠的问题。我们认为这是一个用例在最近发布的的Examinator (一个Spring /兵马俑/ Tomcat的/ MySQL参考Web应用程序) 。当考试都在进步,状态(问题的答案,随机选择排序,问题标记为审核)存储在兵马俑。但是,当考试结束后,最终得分计算和存储在数据库中的长期的。

要做到这一点安全,我们使用的是产生在兵马俑的第一对象数据库行ID Hibernate的关键策略,然后将数据保存到数据库,然后从兵马俑删除。这个场景有一个潜在的竞争条件,如果保存到数据库中,但之后从秦俑,然后删除该应用程序崩溃。在这种情况下,应用程序可以尝试将数据重新保存到数据库,从而可能产生两行。但由于预先生成的ID,我们可以告诉是否该行先前成功写入与否,避免这一问题。

总之,我不认为兵马俑将很快取代你的数据库随时随地。这是太新业务上,甚至在大多数的商店被认为是这样的。使用模型的方式不同。没有查询或SQL功能集成到堆(您的查询能力是由你的对象模型中定义)。我觉得还可以,并开始取代中期数据使用它是一个更便宜,更容易替代。然而,一些人开始用它来实验长期储存。

其他提示

陶土仅爪哇。如果这是确定你被锁进这个技术,不只是写在其他语言中的某些脚本(不JVM)的可能性,然后用它去了。

在文章杀死你与兵马俑的数据库是非常好的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top