我正在研究沙发基地,任何人都可以了解什么是桶和vbucket?

use*_*468 8 bucket couchbase

我现在正在研究沙发基地,我对'桶'和'vbucket'这个术语的官方描述感到很困惑,有人能解释什么是桶或vbucket吗?有什么不同?最好做一些类比并给出一些例子.

Mil*_*lan 8

简短的回答

Bucket是唯一键控文档的逻辑键空间,均匀分布在集群中的所有节点上.

vBucket是位于单个节点上的存储桶的子集.所有vBuckets的联盟都是一个桶.

答案稍微长一些

想象一下,你有三个节点:

+----------+         +----------+        +----------+
|          |         |          |        |          |
|          |         |          |        |          |
|          |         |          |        |          |
|          |         |          |        |          |
|          |         |          |        |          |
|          |         |          |        |          |
|          |         |          |        |          |
+----------+         +----------+        +----------+
   node1                node2               node3
Run Code Online (Sandbox Code Playgroud)

存储桶是一组文档(可以在结构和属性上不同),它们分布在所有三个节点上,但它共享相同的密钥空间.

   +----------+         +----------+        +----------+
+---------------------------------------------------------------+
|  |          |         |          |        |          |        |
|  |          |         |          |        |          |      Bucket
|  |          |         |          |        |          |        |
+---------------------------------------------------------------+
   |          |         |          |        |          |
   |          |         |          |        |          |
   +----------+         +----------+        +----------+
      node1                node2               node3
Run Code Online (Sandbox Code Playgroud)

请注意,密钥在存储桶中必须是唯一的,与RDBMS中的数据库概念相比,该密钥在表中是唯一的.

存储桶分为1024个段,这些段均匀分布在集群中的所有节点上.这些段是虚拟桶或vBucketes.因此,在这种情况下,每个节点上有1024/3个vBuckets.

   +----------+         +----------+        +----------+
+---------------------------------------------------------------+
|  |          |         |          |        |          |        |
|  |  341 vBs |         |  341 vBs |        |  342 vBs |      Bucket
|  |          |         |          |        |          |        |
+---------------------------------------------------------------+
   |          |         |          |        |          |
   |          |         |          |        |          |
   +----------+         +----------+        +----------+
      node1                node2               node3
Run Code Online (Sandbox Code Playgroud)

每个vBucket都有其相关的文档集.因此,在执行查找时,clusterMap会计算搜索到的文档的键的哈希值,并标识节点和文档所在的vBucket.

参考:http://training.couchbase.com/online


Vla*_*eev 5

Bucket就像RDBMS中的数据库.它包含文档,视图和一些配置.VBucket就像RDBMS中的shard一样.CB上的所有键映射到#VBucket,#VBucket映射到server-name.由于这些散列函数导致在多个节点上均匀分布文档,并通过其id快速获取文档的操作.