桶是否跨越 Couchbase Server 集群中的所有节点?
Does a bucket span over all nodes in a Couchbase Server cluster?
我一直在阅读 Couchbase Server 文档,据我了解,这是 "how it all works":
- 一个集群有一个或多个节点(服务器)。
- 一个集群有一个或多个桶。
- 一个桶有一个或多个视图。
我的问题:
- 我假设桶中的数据分布在集群中的所有节点上,对吗?还是在所有节点上复制?
- 假设一个桶跨越集群中的多个节点,视图是否从所有这些节点检索数据?
- 或者是特定于某个节点的存储桶及其视图?
你在第一点的假设大部分是正确的。一个桶被分片到 1024 个 vBuckets。然后,这些 vBuckets 分布在集群中的节点上(平均分配或取余),副本 vBuckets 被放置在与主 vBuckets 所在的节点分开的节点上。默认情况下,vbucket 只会复制到另一个节点(因此每个文档都会复制到另一个节点),但是如果需要,您可以配置多个副本以获得更高的可用性。
视图(设计文档)将在每个 node/vBucket 中为特定存储桶的数据编制索引,但该视图的索引数据存储在 vBucket 所在的节点中。因此,当您查询视图时,它必须转到集群中的每个节点。当您重新平衡时,默认情况下,节点上的索引会随着 vBucket 的迁移而更改。数据从源节点移除,在复制的目标节点重新生成。
YouTube 上的 How-To NoSQL 3.0 Webinar 中对 Couchbase Server 的分片架构进行了很好的概述。
我一直在阅读 Couchbase Server 文档,据我了解,这是 "how it all works":
- 一个集群有一个或多个节点(服务器)。
- 一个集群有一个或多个桶。
- 一个桶有一个或多个视图。
我的问题:
- 我假设桶中的数据分布在集群中的所有节点上,对吗?还是在所有节点上复制?
- 假设一个桶跨越集群中的多个节点,视图是否从所有这些节点检索数据?
- 或者是特定于某个节点的存储桶及其视图?
你在第一点的假设大部分是正确的。一个桶被分片到 1024 个 vBuckets。然后,这些 vBuckets 分布在集群中的节点上(平均分配或取余),副本 vBuckets 被放置在与主 vBuckets 所在的节点分开的节点上。默认情况下,vbucket 只会复制到另一个节点(因此每个文档都会复制到另一个节点),但是如果需要,您可以配置多个副本以获得更高的可用性。
视图(设计文档)将在每个 node/vBucket 中为特定存储桶的数据编制索引,但该视图的索引数据存储在 vBucket 所在的节点中。因此,当您查询视图时,它必须转到集群中的每个节点。当您重新平衡时,默认情况下,节点上的索引会随着 vBucket 的迁移而更改。数据从源节点移除,在复制的目标节点重新生成。
YouTube 上的 How-To NoSQL 3.0 Webinar 中对 Couchbase Server 的分片架构进行了很好的概述。