存储桶是否跨越Couchbase服务器群集中的所有节点?

时间:2015-04-30 05:57:52

标签: views couchbase couchbase-bucket nosql

我一直在阅读Couchbase Server文档,据我了解,这是"它是如何工作的":

  • 群集有一个或多个节点(服务器)。
  • 群集有一个或多个存储桶。
  • 一个存储桶有一个或多个视图。

我的问题:

  1. 我会假设存储桶中的数据分布在群集中的所有节点上,对吗?或者它是否在所有节点上复制?
  2. 假设存储桶跨越集群中的多个节点,视图是否会从所有这些节点中检索数据?
  3. 或者是特定于某个节点的存储桶及其视图吗?

1 个答案:

答案 0 :(得分:4)

你在第一点的假设大多是正确的。一个桶在1024个vBuckets中分片。然后,这些vBucket分布在集群中的节点上(均匀地,给予或取出其余部分),副本vBuckets放置在与主vBuckets所在的节点分开的节点上。默认情况下,vbucket只会复制到另一个节点(因此每个文档将复制到另一个节点),但是如果需要,您可以配置多个副本以获得更高的可用性。

视图(设计文档)将为每个节点/ vBucket上的特定存储桶索引数据,但该视图的索引数据存储在vBuckets所在的节点中。因此,当您查询视图时,它必须转到群集中的每个节点。重新平衡时,默认情况下,节点上的索引会随着vBuckets的迁移而更改。数据将从源节点中删除,并在目标复制节点上重新生成。

YouTube上的How-To NoSQL 3.0 Webinar详细介绍了Couchbase Server的分片架构。