1

您能否给我一个提示,是否有任何方法可以使用 Java SDK 以原子方式更新 Couchbase 上的多个文档?我知道,可以使用嵌入文档,从而保证需要,但不幸的是,它不适合我。

就我而言,文档更新的事实导致需要使其他文档无效(将特殊标志设置为 false),并且应该以原子方式执行。

感谢您提供的任何帮助或建议。谢谢!

4

2 回答 2

1

虽然没有内置方法可以对多个文档执行原子更改,但您可以使用两阶段提交来实现相同的结果。请注意,在这种情况下,2PC 不提供其他事务功能,例如隔离和一致性,只提供原子性 - 这就是您所要求的。Couchbase 的 Java 中没有参考 2PC 实现,但文档中有 Ruby 和 PHP 中的两个。我建议阅读有关在 Couchbase 中提供事务逻辑的文档,以深入描述如何实现这一点。将示例代码移植到 Java 应该相当简单。

一般来说,要以原子方式对多个文档实施一组更改,您需要依次对每个文档执行原子写入,加上一个临时的“状态”文档,这样流程中的每个步骤都是唯一的。这样,如果事务由于任何原因在中间中断,您就可以从同一步骤继续或回滚您的更改。

于 2016-05-21T08:14:02.330 回答
0

不幸的是,这归结为事务,Couchbase 不提供本地事务支持。您可以使用 Couchbase 实现的原子性级别是单个文档的级别。

我知道一些 couchbase 用户已经在他们的应用程序代码层中实现了手动事务管理,但这是一个相当复杂的话题,而且我知道没有公开可用的解决方案。

于 2016-05-19T16:32:24.973 回答