【问题标题】:Does couchbase 3.0 support transaction?couchbase 3.0 支持事务吗?
【发布时间】:2015-02-13 04:44:40
【问题描述】:
  • 沙发底座配置

主持人: ip:127.0.0.1 端口:17000

桶: 桶 1 桶 2 桶 3

我想设置 3 个桶 {set(Bucket1), set(Bucket2), set(Bucket3)} 作为一个事务。

应该如何实现?

【问题讨论】:

  • 你为什么需要交易?
  • 一个大实体由3个小实体组成。大实体必须作为一个整体初始化。小实体具有“key:value”属性。
  • 您是否有理由不能将它们全部保存在一个文档中?
  • 是的,我必须分开它。有4种“key”查询。
  • 我真的想不出一个查询会导致需要将相关实体拆分为单独文档的情况。如果有的话,这是分开的原因。无论如何,也许 Couchbase 不是您用例的最佳选择?

标签: couchbase


【解决方案1】:

简短的回答是“不”。 Couchbase 不支持跨不同文档的事务。正如 The Mayer 所提到的,您可以通过对数据进行不同的建模来避免对事务的需求。但是,如果您必须拥有它,您可以使用两阶段提交来获得部分事务功能(原子性和持久性,但不是隔离或一致性。)

您可以在此处阅读有关 2PC 的一般信息:http://en.wikipedia.org/wiki/Two-phase_commit_protocol,特别是与 Couchbase 相关的内容:http://docs.couchbase.com/couchbase-devguide-2.5/#performing-two-phase-commits

【讨论】:

    【解决方案2】:

    截至Couchbase Server 6.5(撰写本文时为测试版),有一种方法可以在单个transaction 中自动修改多个文档。您可能希望将其建模为不同集合中的文档。

    【讨论】:

      猜你喜欢
      • 2018-12-13
      • 2015-08-26
      • 1970-01-01
      • 2011-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多