您能给我一个提示吗?有没有办法用Java原子地更新Couchbase上的多个文档?我知道,使用文档嵌入是可能的,因此保证了所需的,但不幸的是,它并不适用于我。
在我的例子中,文档更新的事实导致它需要使其他文档无效(将特殊标志设置为false),并且应该原子地执行它。
我感谢你方的任何帮助或建议。谢谢!
发布于 2016-05-21 08:14:02
虽然不存在对多个文档执行原子更改的内置方式,但可以使用两阶段提交实现相同的结果。请注意,在本例中,2PC不提供其他事务性特性,比如隔离和一致性,只提供原子性--这正是您所要求的。在Java中没有引用2PC实现,但是在文档中有两个在Ruby和PHP中。我建议在Couchbase中阅读提供事务逻辑上的文档,以深入描述如何实现这一点。将示例代码移植到Java应该相当简单。
一般来说,要原子地在多个文档上实现一组更改,依次执行对每个文档的原子写入,再加上一个临时的“状态”文档,使流程中的每个步骤都是唯一的。通过这种方式,您可以从相同的步骤继续或回滚您的更改,如果事务因任何原因在中间被中断。
发布于 2016-05-19 16:32:24
不幸的是,这归结为事务,Couchbase不提供本地事务支持。您可以通过Couchbase实现的原子性级别在单个文档的级别上。
我知道有些couchbase用户已经在他们的应用程序代码层实现了手动事务管理,但这是一个相当复杂的主题,据我所知,没有公开可用的解决方案。
https://stackoverflow.com/questions/37321895
复制相似问题