firebase - Firestore 社交网络数据结构
问题描述
如何构建社交网络数据库结构,例如twitter
我们可以关注用户并在我们的时间轴中获取他们的所有推文,我已经检查了这个Firestore - 如何构建提要和关注系统
,但帖子中的解决方案看起来有缺陷。
Firestore 的不同之处在于它需要冗余数据才能有效地访问数据,但假设我正在关注 1000 人,如果我需要通过查询我关注的每 15 个用户的数据并使用limit(10)
方法来获取所有这些用户的帖子,那么orderBy(timeStamp)
可能会有未读查询之间的帖子,因为我们正在使用 获取帖子last post timeStamp
,如何在 Firestore 中为社交媒体应用程序构建数据
解决方案
在 NoSQL 数据库上对用例进行建模时,您倾向于针对应用程序的功能和频繁的读取操作进行优化。
因此,在社交媒体应用程序中,您的主要功能可能是用户可以看到他们关注的每个人的最新帖子。要针对频繁读取优化此操作,您需要将每个用户应该看到的帖子存储在该用户的文档中。因此,与 Twitter 相比,您几乎拥有一个包含每个用户的 twitter 提要的文档。或者,如果单个文档的数据过多,您可能希望将其放入集合中。我经常将其解释为在数据库中对应用程序的屏幕进行建模。
这与关系数据库中的典型数据模型非常不同,因此需要时间来适应是正常的。为了一个好的介绍,我建议:
- 阅读NoSQL 数据建模。
- 观看面向 SQL 开发人员的 Firebase,即使它是针对实时数据库的,它也解释了如何将常见的 SQL 概念映射到 Firebase 的 NoSQL 模型。
- 观看了解 Cloud Firestore
推荐阅读
- flutter - Flutter 嵌套菜单左右飞
- amazon-web-services - 使用 Terraform 创建 AWS EC2 堡垒
- tsibble - 使用 gg_lag() 的 Ausbeer 滞后图失败
- python - 如何将 sqlite 设置为本地服务器(在局域网上)
- python - 一个列表有多个字符串,所以如果另一个字符串中不存在一个字符串,我想连接两个字符串
- javascript - 如何在反应js中找出一个div在窗口内
- xcode - xcode 13 构建问题
- python - 如何计算标签之间的行数?
- flutter - 我不希望在 Flutter 中为我的文本字段显示键盘
- python - 在 Python 中运行迁移时,出现以下错误