Firebase Firestore 数据库结构

Posted

技术标签:

【中文标题】Firebase Firestore 数据库结构【英文标题】:Firebase Firestore database structure 【发布时间】:2019-11-01 12:03:54 【问题描述】:

我正在使用 Flutter 和 Firebase 构建一个应用,并且想知道最好的 Firestore 数据库结构是什么。

我希望用户能够发布消息,然后通过帖子内容和发布者用户名进行搜索。

是否为用户创建一个集合,每个文档存储用户名和其他信息,并为帖子创建一个单独的集合,每个文档包含帖子和发布者的用户名?

万一帖子数量超过一百万或更多,查询这种海量收藏是否需要额外费用?

将每个用户的帖子存储为用户文档下的子集合是否更有意义?我相信这需要额外的读取操作来访问每个文档的子集合。如果我最终获得大量流量,这会更便宜还是更贵?

【问题讨论】:

【参考方案1】:

查询这种海量集合是否需要额外费用?

从 Firestore 读取的成本和性能完全取决于您检索的数据量(文档数量及其大小),而不是集合中的文档数量。

但 Firestore 中的限制是您可以对“彼此接近”的数据执行的写入次数。这种故意模糊的定义意味着,如果数据自然适合这种情况(例如在您的情况下),将数据分布在单独的子集合中通常会更好地实现写入可扩展性。

要深入了解 Firestore 和数据建模权衡,请观看 Getting to know Cloud Firestore。

【讨论】:

以上是关于Firebase Firestore 数据库结构的主要内容,如果未能解决你的问题,请参考以下文章

Firebase Firestore 安全规则共享数据

渲染从 Firebase Firestore 映射的 React 组件

Firebase - 使用 Cloud Functions 定位特定的 Firestore 文档字段

在firebase firestore中获取对象内的数据?

约会应用程序 - 我需要在 Firebase Firestore 中使用哪种数据库结构来查询除不喜欢我的用户之外的所有用户?

SwiftUI Lists + Firebase Firestore,获取数据然后取消获取? (漏洞)