NoSQL 新手(来自关系数据库领域)并正在寻找最佳实践建议。
在使用 firestore 时,我是最好(更快/减少读取次数)根据用户 ID 过滤集合,还是应该使用用户 ID 创建根集合并为该特定用户的不同数据创建子集合?< /p>
例如
(1) 我是否应该将所有用户数据插入到“订阅 (col) -> (doc) ->(字段,包括 userId)中。在我的阅读中,我使用 where 子句根据 userId 过滤掉集合中的数据
.Collection("订阅")
.WhereEqualsTo("作者", _auth.GetCurrentUserId())
或 (2) 我应该创建根集合作为 userId(上述情况中的作者),然后为该用户插入不同的数据集合并在那里嵌套集合?
答案 0 :(得分:0)
在 Firestore 中,集合中的文档数量不会影响从该集合读取的性能。这是其主要的、独特的保证之一。因此,对于读取性能(或成本)而言,将所有用户数据存储在单个集合中或为每个用户创建一个集合之间没有区别。
这确实在写入性能方面产生影响,这在使用 Firestore 和扩展应用程序时通常是一个“更大”的问题。当更新写入相同的索引时,写入吞吐量主要受到限制,当您将用户数据存储在单个顶级集合中时,这种情况更有可能。因此,出于这个原因,我通常将特定于用户的数据存储在特定于用户的子集合中。