Couchbase 我如何支持“;表”;在沙发上?

Couchbase 我如何支持“;表”;在沙发上?,couchbase,Couchbase,关系数据库有表;同样,NoSQL中也存在类似的概念,比如Google数据存储中的种类。但Couchbase将所有内容放在一个大名称空间中。如何以类似表格的方式排列数据 我想要表式名称空间的性能优势。如果一种类型有1000000行,另一种类型有10行,我希望查询引擎不必查看1000010行来查找这十行中的一行 桶是可用的,但最多只有十个。所以,这些并不是真正的桌上型 表可以在应用层上使用每个JsonDocument中的type或kind属性来实现。但这混合了不同的抽象层:元数据和数据 您可以在每

关系数据库有表;同样,NoSQL中也存在类似的概念,比如Google数据存储中的种类。但Couchbase将所有内容放在一个大名称空间中。如何以类似表格的方式排列数据

我想要表式名称空间的性能优势。如果一种类型有1000000行,另一种类型有10行,我希望查询引擎不必查看1000010行来查找这十行中的一行

  • 桶是可用的,但最多只有十个。所以,这些并不是真正的桌上型
  • 表可以在应用层上使用每个
    JsonDocument
    中的
    type
    kind
    属性来实现。但这混合了不同的抽象层:元数据和数据
  • 您可以在每个键前面加上一个类似“表”的名称<代码>“用户:111”而不是
    111

如何在Couchbase中实现表/种类的好处?

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

您可以查看查询是否使用您在web控制台的“计划”选项卡中创建的索引:

如果您使用的是Spring数据,它将自动完成,或者通过属性“\u class”完成

为这个用例创建多个bucket不是一个好策略,因为无论何时需要进行连接,您都需要做一些额外的工作

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

您可以在每个键前面加上一个类似“表”的名称。“用户:111”而不是111。->当您需要筛选哪些文档应通过跨数据中心复制进行复制时,此功能非常有用