【发布时间】:2018-08-28 10:08:43
【问题描述】:
我很好奇是否有人知道或猜到 Google 的 Firestore 用于按每个字段索引任意 NoSQL 文档的数据结构。我正在寻求构建类似的东西,使其尽可能高效。
有关其默认索引如何工作的一些信息:
- 默认情况下所有字段都被索引,但仅适用于相等搜索而不是范围 ()
- 任何范围搜索都需要额外的索引
- 来源:https://firebase.google.com/docs/firestore/query-data/indexing
它不太可能是每个字段的标准 btree 索引,因为范围搜索无需添加对另一个索引的要求即可工作。另外,如果您添加了一个新字段(使用文档存储很容易),则需要花费一些时间来构建包含数十亿个项目的索引和集合。
一个理论:每个文档 1 个大索引。每个文档中每个字段的索引“field_name:value”。索引映射到包含该字段/值对的排序列表文档 ID。它将能够进行相等搜索(我为每个相等要求合并排序的 doc-id),但不能进行范围搜索。基本上是倒排索引。
对于实现这种模式的更好方法有什么建议吗?
【问题讨论】:
标签: google-cloud-firestore b-tree inverted-index b-tree-index