Firestore 中的数据结构如何影响大型数据集中查询的优化、速度和成本?

How does data structure in Firestore affect optimization, speed, and cost of queries in large datasets?

有了这里的数据结构

+Nike
  --Day1
      timestamp: 11-11-2020
            +Mentions
                    --001
                         timestamp: 11-11-2020
                    --002
                         timestamp: 11-11-2020
  --Day2
      timestamp: 11-12-2020
            +Mentions
                    --001
                         timestamp: 11-12-2020
                    --002
                         timestamp: 11-12-2020
                        

如果我放弃层次结构,只是将所有提及项转储到一个集合中,而不按日期将它们分开,那么查询是否昂贵,因为它还必须搜索每个提及项时间戳?

+Nike
          --001
                   timestamp: 11-11-2020
           --002
                  timestamp: 11-11-2020
           --003
                   timestamp: 11-12-2020
           --004
                  timestamp: 11-12-2020

您的直觉希望查询更少的数据,实际上在使用 Firestore 时并不需要。 Firestore 查询性能不取决于您查询的数据量,而仅取决于您检索的数据量。因此,将日期重复到每个提及项中是正确的方法,并且很常见.

我建议仍然保持每天的提及次数,但出于不同的原因: 表现。在 Firestore 上,您主要受到写入性能限制的影响,特别是 Firestore 需要更新的索引。通过跨多个子集合对提及进行分段,您将减少 Firestore 需要更新的联合索引的数量,尽管对集合组查询的需求 does 意味着您至少有一个索引所有提及的内容都需要更新。