Couchbase查看一致性

时间:2016-02-11 12:11:28

标签: go couchbase consistency couchbase-view durability

以下代码保证任何给定文档将以持久的方式保存到Couchbase群集中的活动节点,并复制到另外一个节点:

cas, err := myBucket.UpsertDura(docToStore, valueToStore, 1, 1)

鉴于Couchbase视图最终是一致的,在编写文档后调用视图(确保文档出现在视图中)时,似乎有2个选项可以保证一致性:

选项1

将上述代码中的replicateTo值更改为群集中的其他节点总数(减去活动节点),确保每个节点都包含文档的副本:

cas, err := myBucket.UpsertDura(docToStore, valueToStore, 3, 4)

选项2

使用标准Upsert功能保存文档,但调用视图时stale-mode设置为after-update

_, err := bucket.Upsert(myID, &myDoc, 0)

vq := gocb.NewViewQuery("doc", "view").Stale(gocb.StaleMode(1))
err = bucket.ExecuteViewQuery(vq)

有没有其他方法可以以最高性能的方式实现这一目标?基本上我希望文档在保存后立即显示在所有相关视图中。

1 个答案:

答案 0 :(得分:1)

您需要将陈旧模式设置为false。如果设置了stale = ok,则Couchbase即使过时也不会刷新视图。这样做的好处是改进了查询延迟。如果设置了stale = update_after,Couchbase将在返回过时结果后更新视图。如果设置了stale = false,Couchbase将刷新视图并返回最新的结果。