如何在Couchbase中支持“Tables”?

问题描述 投票:1回答:1

RDBMS有表;此外,NoSQL中存在类似的概念,例如Google Datastore中的Kinds。但Couchbase将所有内容都放在一个大的命名空间中。如何以类似表格的方式排列数据?

我想要像表格一样的命名空间的性能优势。如果我有一个类型的1,000,000行和另一个10行,我宁愿查询引擎不必查看1,000,010行来查找这十行中的一行。

  • 铲斗可用,但最多只有十个。所以,这些并不像桌子那样。
  • 可以在每个type中使用kindJsonDocument属性在应用程序层上实现表。但这会混合不同的抽象层:元数据和数据。
  • 您可以为每个键添加一个类似“表”的名称。 "User:111"而不是111

如何在Couchbase中实现Tables / Kinds的优势?

couchbase
1个回答
2
投票

目前,正确的方法是添加一个表示文档类型的属性,然后在其中创建带有“type”属性的索引。因此,您的查询将直接扫描索引而不是全表扫描。这听起来可能不常见,但索引是CB中最强大的功能之一。

您可以查看您的查询是否正在使用您在Web控制台的“计划”选项卡中创建的索引:https://blog.couchbase.com/couchbase-5-5-enhanced-query-plan-visualization/

如果您使用的是Spring Data,则可以自动完成,也可以通过属性“_class”https://blog.couchbase.com/couchbase-spring-boot-spring-data/完成

为此用例创建多个存储桶不是一个好策略,因为每当您需要进行连接时,您将需要一些额外的工作。

您可以通过查询中的meta()访问该文档的一些元数据(例如:meta()。id,meta()。cas)但类型本身必须保留为文档的顶级属性。

您可以为每个键添加一个类似“表”的名称。 “用户:111”而不是111. - >当您需要过滤哪些文档应通过跨数据中心复制https://blog.couchbase.com/deep-dive-cross-data-center-replication-xdcr/时,这非常有用

© www.soinside.com 2019 - 2024. All rights reserved.