Concurrency db4o如何支持并发和事务?

Concurrency db4o如何支持并发和事务?,concurrency,transactions,db4o,Concurrency,Transactions,Db4o,我们正在寻找一个在服务器端使用Java的高容量电子商务网站db40。并发和事务支持对我们来说非常重要。当客户购买商品时,我们需要锁定产品和客户对象,以便在单个事务中分别更新库存和客户订单历史记录。对于db4o,这可能吗?我想确保它支持多对象事务。这里已经有类似的问题,像这样。我的答案大致相同 关于高容量电子商务网站:db4o从来都不是作为一个高容量、大数据库构建的,而是用于嵌入式用例,如桌面和移动应用程序。这取决于“高容量”的含义。我假设它意味着数百个或并发事务。这当然超出了db4o的范围 并发

我们正在寻找一个在服务器端使用Java的高容量电子商务网站db40。并发和事务支持对我们来说非常重要。当客户购买商品时,我们需要锁定产品和客户对象,以便在单个事务中分别更新库存和客户订单历史记录。对于db4o,这可能吗?我想确保它支持多对象事务。

这里已经有类似的问题,像这样。我的答案大致相同

关于高容量电子商务网站:db4o从来都不是作为一个高容量、大数据库构建的,而是用于嵌入式用例,如桌面和移动应用程序。这取决于“高容量”的含义。我假设它意味着数百个或并发事务。这当然超出了db4o的范围

并发性和事务性支持:db4o内核本质上仍然是单线程的,因此只能支持少量的并发操作。使用。这意味着一个事务只能看到其他事务的提交状态。实际上,这是一个很弱的保证

例如:您可以在一次交易中使用产品和消费者更新购买。但是,另一个事务可以更新这些对象中的任何一个并提交。然后,已经读取了一些对象的正在运行的事务可能会使用旧值进行计算并存储它。因此,脆弱的隔离“污染”了你的国家。 可以使用锁来防止这种情况,但db4o没有任何好的对象锁定机制。这将进一步降低性能


总而言之,我认为您可能需要一个“更大”的数据库,它对并发性和事务处理有更好的支持

听起来您需要使用db4o。

核心是单线程的吗?这也适用于Versant VOD,它是db4o的老大哥吗?我觉得很难相信。如果核心是单线程的,这意味着简单的读取必须排队等待其他读取执行。与RDBMS相比,10x的性能究竟来自何方?当然,对于视频点播来说,情况并非如此。我声明了db4o的当前状态。VOD是另一种野兽,它支持所有这些特性。由于在数据库理论方面相当薄弱,我有兴趣阅读更多关于更好的隔离方案的内容,而不是“读取承诺隔离”。你能指出一些关于“更大”的数据库如何更好地处理这个问题的信息吗?我找了一下,但没找到多少。也许你至少可以提供一些关键词。@user646584额外的性能不是来自它的并发功能,而是来自复杂对象持久化的速度。看:当然可能。但是,要获得细粒度的正确锁定是很困难的,而且需要大量的工作。这使得缩放方面更加糟糕。在这一点上,我认为您应该选择一个“更大”的数据库来更好地支持这些事情。