And*_*rew 12 firebase google-cloud-firestore
随着集合组查询的出现,我不清楚使用根集合有什么好处。在Firestore 团队的这篇文章中,我唯一看到的是存在名称冲突的可能性,安全规则稍微复杂一些,并且您必须手动创建任何查询索引。是否还有其他原因使用根集合而不是子集合/集合组查询?
Ale*_*amo 17
在决定使用顶级集合还是子集合哪个更好时,请注意,两者在速度或计费方面并不比另一个更好。但是,存在一些细微的差异,可能会让您选择使用顶级集合而不是子集合。因此,唯一的差异可能来自我们构建数据库的方式,而不是性能。这是因为 Firestore 在 1 级和 100 级时的速度一样快。
假设我们有以下使用子集合的结构:
Firestore-root
|
--- shops (collection)
|
--- $shopId (document)
|
--- products (sub-collection)
|
--- productId (document)
Run Code Online (Sandbox Code Playgroud)
该模式还可以设计为:
Firestore-root
|
--- shops (collection)
| |
| --- $shopId (document)
|
--- products (collection)
|
--- $productId (document)
|
--- shopId: $shopId
Run Code Online (Sandbox Code Playgroud)
对于 NoSQL 数据库,推荐的做法是将数据库扁平化。为什么?因为它看起来更有组织性,并且每个顶级集合仅包含与集合本身相关的文档。
当谈到子集合时,当我们查看上面的示例时,每个产品都与“products”子集合、$shopId 和“shops”集合相关联。
关于安全规则,复杂性取决于您需要使用的过滤器的数量和多样性。然而,对于顶级集合来说,这要容易一些。
最后,请记住,当我们谈论架构时,我们总是根据我们打算执行的查询来构建 Firestore 数据库。因此,您可以在这两个选项之间进行选择,看看哪一个可以让您的生活更轻松。
编辑:
正如文档中关于 Firestore 数据结构的说明:
根级集合适用于多对多关系,并在每个集合内提供强大的查询。
| 归档时间: |
|
| 查看次数: |
2845 次 |
| 最近记录: |