我如何在 Couchbase 中支持“表格”?

How do I support “Tables” in Couchbase?

RDBMS 有 table;此外,NoSQL 中也存在类似的概念,例如 Google 数据存储中的种类。但是 Couchbase 将所有内容都放在一个大名称空间中。如何以类似 table 的方式排列我的数据?

我想要 table 类命名空间的性能优势。如果我有 1,000,000 行一种类型,10 行另一种类型,我宁愿查询引擎不必查看 1,000,010 行来找到这十行之一。

如何在 Couchbase 中获得 Tables/Kinds 的好处?

目前,正确的做法是添加一个表示文档类型的属性,然后使用您的 "type" 属性在其中创建索引。因此您的查询将直接扫描索引而不是完整的 table 扫描。乍一听这可能不常见,但索引是 CB 中最强大的功能之一。

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

如果您正在使用 Spring 数据,它会自动完成或您通过属性“_class”完成 https://blog.couchbase.com/couchbase-spring-boot-spring-data/

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

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

您可以在每个键前加上类似 "Table" 的名称。 "User:111" 而不是 111。 -> 当您需要过滤应通过跨数据中心复制复制的文档时,这很有用 https://blog.couchbase.com/deep-dive-cross-data-center-replication-xdcr/