Couchbase - 存储大量列表的最佳实践

时间:2017-09-19 11:31:00

标签: jquery couchbase nosql-aggregation

Couchbase是否能够存储多个列表,每个列表可容纳100,000-100,000,000个记录?

记录存储在"数据系列"时尚(或延迟排队)并相应查询。

实施例

列出数据集结构:

  • ID
  • list_id#记录所属的列表
  • next_check timestamp
  • 状态
  • 其他一些领域..

典型用例:

  

选择过去具有next_check的所有记录和特定状态。

SELECT * FROM RECORDS
WHERE next_check < now()
  AND status = X
  limit, offset

然后我可以执行几项操作:

  • 使用新的next_check / status值更新记录。
  • 或删除记录并插入新记录。

问题

我试图理解的是:

  1. 如果Couchbase可以处理如此庞大的数据集?
  2. 存储和查询此类结构的最佳方法是什么?
  3. 最后,是否有任何我需要注意的Couchbase限制(即不要使用超过1000个桶)?
  4. 谢谢!

1 个答案:

答案 0 :(得分:0)

要回答您的问题,我需要介绍一些有关Couchbase如何工作的内容。

  1. Couchbase存储JSON文档,这些文档支持对象,数组或原始值的数组。您可以为每个客户提供一个文档,其中一个或多个阵列包含与该客户相关的列表。文档的最大大小为20MB,但通常文档要小得多。尽管如此,听起来20MB应该比您与客户相关的列表所需的大得多。或者,您可能希望将列表元素存储为文档本身。您是否有理由为每位客户提供单独的清单? Couchbase中的数据建模与关系数据库中的数据建模同样重要,但过程有所不同。关于这个主题有几个很好的博客文章,您可以使用自己喜欢的搜索引擎找到它。
  2. 每个文档都作为值存储在键值存储中。检索文档的最快方法是通过其密钥。较慢但仍然非常快,就是在你要查询的任何字段上都有一个索引,例如next_check。 Couchbase 支持数组内字段的索引。与关系数据库一样,访问文档的最慢方式是通过顺序扫描所有记录,如果可以避免,则不想这样做。
  3. Couchbase Buckets是文档集合,每个文档都有一个唯一的密钥。即,密钥空间。 Couchbase群集限制为10个桶,因此您当然不能拥有1000个桶。因此,桶更类似于&#34;数据库&#34;在MySql或Oracle中。由于Couchbase不强制执行模式,因此Couchbase中没有与&#34;表格#34;在关系数据库中。
  4. Couchbase当然可以支持拥有数万或数亿个文档的Buckets,我的笔记本电脑上有一个包含3800万个1kb文档的文档。但是,高效的查询需要定义索引以匹配您运行的查询,拥有足够的内存来保存索引和工作文档集,并可能跨多个节点扩展集群(Couchbase非常简单)。