首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >耦合基增量值XDCR

耦合基增量值XDCR
EN

Stack Overflow用户
提问于 2014-04-13 16:44:50
回答 1查看 428关注 0票数 1

如果我在couchbase中存储类似数组的结构,如下所示:

代码语言:javascript
复制
mykey = 3
key_1 = 47
key_2 = 11
key_3 = 17

我的更新过程是这样的:

代码语言:javascript
复制
a = increment(mykey)
set key_a = 42

这会在跨多个数据中心复制的桶上工作吗?有更好的方法吗?

我认为不同数据中心上的两个客户端可能同时调用增量,获取相同的值,然后将相同的键设置为不同的值。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-14 10:03:46

如果您使用的是XDCR,则有可能出现重复键的情况。即使在set之前检查值(使用couchbase.add操作),它也可以生成两个相同的键。

在集群中,Couchbase Server在文档级别提供了很强的一致性。另一方面,XDCR还提供了跨集群的最终一致性。如果同一文档在两个组上发生变异,则内置冲突解决方案将在两个组中选择相同的“赢家”。如果发生冲突,更新最多的文档将被视为“赢家”。如果同一文档在源和目标上被更新相同的次数,则使用其他元数据,例如数字序列、CAS值、文档标志和过期TTL值来选择“胜利者”。XDCR跨集群应用相同的规则,以确保文档一致性得到维护。

为了避免这种情况,couchbase建议存储一些关于数据中心/集群的信息,或者使用像GUID这样的唯一键。我认为第二种方式是不可取的,因此您可以通过添加数据中心位置作为密钥前缀来实现第一种方式,并在应用程序端处理它们:

代码语言:javascript
复制
US-east.mykey_1
US-west.mykey_1
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23045418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档