代码之家  ›  专栏  ›  技术社区  ›  Marcelo Glasberg

火库索引限制

  •  1
  • Marcelo Glasberg  · 技术社区  · 6 年前

    documentation Firestore有以下限制:

    • 每个文档的最大索引条目数: 四万

    • 文档索引项大小的最大总和: 8 MIB

    我很难理解这里的“文档”是什么意思。它们是指一个单独的文档,还是指一个特定集合的整个文档集?

    例如,假设我有一个集合,其中包含10000个文档,并且每个文档包含相同的2个字段:

    Document: `students/00001`
      name: "Jeff"
      age: 32
    
    Document: `students/00002`
      name: "Mary"
      age: 28
    
    ...
    
    Document: `students/10000`
      name: "Anne"
      age: 45
    

    根据文档,FireStore将按升序为每个字段创建一个索引,按降序为每个字段创建一个索引。因此,对于每个文档,我们将有4个索引,对于整个文档集合,只有这4个相同的索引,因为它们都有相同的字段。

    一切都好。

    但是,现在假设我有一个集合,其中也包含10000个文档,但是每个文档都包含 两个字段始终不同 :

    Document: `students/00001`
      B2DcG6g9w: true
      YwY3g642D: true
    
    Document: `students/00002`
      A3h7k3e6B: true
      w2Fh0j1g8: true
    
    ...
    
    Document: `students/10000`
      8n4545f7k: true
      j2hle4oOp: true
    

    FireStore将按升序为每个字段创建一个索引,按降序为每个字段创建一个索引。这样,我们就有了 每个文档只有4个索引 . 但是,由于每个文档的这些索引不同,我们将有一个 集合中所有文档共有40000个索引 .

    问题: 我是否达到了40000个索引限制?这种限制真的是通过文件还是通过托收来实现的?

    2 回复  |  直到 6 年前
        1
  •  1
  •   Frank van Puffelen    6 年前

    为集合中的每个字段或字段组合创建了一个索引。每个文档都可以包含在40000个这样的索引中。

        2
  •  2
  •   Doug Stevenson    6 年前

    集合中的文档数与指定的限制无关。缺少字段的文档将没有该字段的索引。(FireStore不会索引不存在的内容。)您可以 remove indexes 为了节省空间和金钱。