我正在研究沙发底座,谁能解释一下bucket和vbucket到底是啥?

Posted

技术标签:

【中文标题】我正在研究沙发底座,谁能解释一下bucket和vbucket到底是啥?【英文标题】:I am studing couchbase, can anyone exlain what exactly is bucket and vbucket?我正在研究沙发底座,谁能解释一下bucket和vbucket到底是什么? 【发布时间】:2013-12-04 05:24:59 【问题描述】:

我现在正在研究 couchbase,我对术语“bucket”和“vbucket”的官方描述感到非常困惑,谁能解释一下 bucket 或 vbucket 到底是什么?有什么不同? 最好打个比方,举几个例子。

【问题讨论】:

【参考方案1】:

简答

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

vBucket 是位于单个节点上的存储桶的子集。所有 vBucket 的并集就是一个桶。

答案稍长

假设你有三个节点:

+----------+         +----------+        +----------+
|          |         |          |        |          |
|          |         |          |        |          |
|          |         |          |        |          |
|          |         |          |        |          |
|          |         |          |        |          |
|          |         |          |        |          |
|          |         |          |        |          |
+----------+         +----------+        +----------+
   node1                node2               node3

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

   +----------+         +----------+        +----------+
+---------------------------------------------------------------+
|  |          |         |          |        |          |        |
|  |          |         |          |        |          |      Bucket
|  |          |         |          |        |          |        |
+---------------------------------------------------------------+
   |          |         |          |        |          |
   |          |         |          |        |          |
   +----------+         +----------+        +----------+
      node1                node2               node3

请注意,存储桶中的键必须是唯一的,这与 RDBMS 中的数据库概念不同,后者的键在表中是唯一的。

bucket被分成1024个segment,均匀分布在集群中的所有节点上。这些段是虚拟存储桶或 vBucketes。因此,在这种情况下,每个节点上都有 1024/3 个 vBucket。

   +----------+         +----------+        +----------+
+---------------------------------------------------------------+
|  |          |         |          |        |          |        |
|  |  341 vBs |         |  341 vBs |        |  342 vBs |      Bucket
|  |          |         |          |        |          |        |
+---------------------------------------------------------------+
   |          |         |          |        |          |
   |          |         |          |        |          |
   +----------+         +----------+        +----------+
      node1                node2               node3

每个 vBucket 都有其关联的文档集。所以在查找的时候,clusterMap会计算搜索到的文档的key的hash,并识别出文档所在的节点和vBucket。

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

【讨论】:

【参考方案2】:

Bucket 就像 RDBMS 中的数据库。它包含文档、视图和一些配置。 VBucket 就像 RDBMS 中的分片。 CB 上的所有键都映射到#VBucket 和#VBucket 映射到服务器名称。多亏了这些散列函数,文档在多个节点上分布均匀,并通过其 id 快速获取文档。

【讨论】:

谢谢。'Bucket就像RDBMS中的数据库'这很容易理解。但是让我感到困惑的是,关于bucket,我们总是将它与Hash联系起来,这个'Bucket'有什么东西吗?与哈希有关? 如果我在“哈希”下正确理解您的意思是“哈希映射”。确实如此。使用 hashmap 我们可以进行 CRUD 操作(创建、读取、更新、删除)。在 Couchbase 的存储桶中也是如此。我们可以通过它的 id 创建(添加)、读取(获取)、更新(替换)和删除文档。所以 Bucket 就像一个非常大的分布式 HashMap,带有一些配置参数(内存、磁盘空间等)。【参考方案3】:

您可以从 Couchbase 文档的“架构和概念”部分开始 http://docs.couchbase.com/admin/admin/Concepts/concept-intro.html

有关存储桶的更多信息,请参阅http://docs.couchbase.com/admin/admin/Concepts/concept-dataStorage.html。

有关 vBucket 的更多信息,请参阅http://docs.couchbase.com/admin/admin/Concepts/concept-vBucket.html。

简而言之,bucket 是一种抽象,它描述了集群上的某些资源(如 RAM 和磁盘空间),从 API 的角度来看,它是存储在系统中的文档的命名空间,类似于 SQL 世界中的数据库。

【讨论】:

thank you.bucket是Hash中的一个概念,当我在官方文档中看到这个术语时,我不禁将它与某种Hash联系起来。这就是让我感到困惑的重点。跨度> 【参考方案4】:

除了上述答案之外,我还有一个答案,我想分享 vBuckets 存在的更深层次的原因。如果您来自 RDBMS 世界,请将“bucket”视为“table”,将“documents”视为“records”。由于 KV 文档在每个文档中可能有也可能没有固定数量的 KV 对,我们称之为“无模式”。

谈到“vBuckets”,您可能会认为它类似于 DB 块。

桶中

如果副本未启用,则 一个 Bucket1024 个活动的 vBuckets 如果 replicas 设置为“1”,则 一个 Bucket1024 个活动 vBuckets + 1024 个副本 vBuckets 同样,如果 replicas 设置为 '2',则 一个 Bucket1024 个 vBuckets + (1024 x 2) 个副本 vBuckets

1 Bucket: 1024 vBucket”的比例是固定的。我们无法改变这一点。 这个想法是在 CB Cluster 的节点上均匀分布数据

示例:当我们在 3 节点 CB 集群中创建“Bucket”时,其 1024 个 vBucket 将均匀分布在这 3 个节点中。因此,如果我们也有副本 vBucket,它也将均匀分布。但是,Couchbase 服务器将确保对于节点 1 上存在的活动 vBucket,其副本 vBucket 位于该 CB 集群的其他 2 个节点上。同样适用于节点 2 和节点 3。希望你得到这部分......这是为了确保节点故障不会导致数据丢失。如果 3 节点集群中的 1 个节点发生故障,则幸存的 2 个节点的副本 vBucket 将自动提升为活动 vBucket。

【讨论】:

以上是关于我正在研究沙发底座,谁能解释一下bucket和vbucket到底是啥?的主要内容,如果未能解决你的问题,请参考以下文章

我是个VB初学者谁能给我解释一下VB中的 :Exp,log,是干啥的还有怎么用??

谁能解释一下Applets和AWT?

谁能解释一下 RowSize 和 PixelArraySize 在 BMP 文件格式中的含义?

使用沙发和沙发应用程序的分析计数器

什么是BI,谁能解释一下?

我的代码出错了,谁能解释一下怎么回事?