【问题标题】:Which firebase database to use for chat applicatoin, Firestore or Realtime Database?哪个 Firebase 数据库用于聊天应用程序、Firestore 或实时数据库?
【发布时间】:2020-06-13 07:49:21
【问题描述】:

我正在构建一个使用 Firestore 存储大部分数据的应用。该应用程序具有聊天功能,我正在考虑为此使用实时数据库。将 Firebase Firestore 与实时数据库用于此聊天功能有什么好处?如果没有区别,我应该对一切都使用 Firestore 吗?

附:我已经阅读了这两个 https://firebase.google.com/docs/database/rtdb-vs-firestore 的 firebase 比较,但我仍然不确定该采取哪种方式。

【问题讨论】:

  • FB RTDB 是为聊天应用程序设计的,但对于简单的查询来说并不是那么好。 Firestore 是为了改进查询要求而开发的,并且更新。更新并不一定意味着更好,取决于用例。他们的定价模式非常不同,因此您需要了解您的用例将如何收费。
  • 你当然可以同时使用。它们可以很好地协同工作,但如果您只需要简单的聊天需求,我会使用 RTDB。
  • @GrahamD,请在答案部分写下您的 cmets,以便我将其标记为答案。
  • 好的,会的。 ??????
  • 已输入答案并添加了更多内容。谢谢。

标签: firebase firebase-realtime-database google-cloud-firestore chat


【解决方案1】:

FB RTDB 是为聊天应用程序而设计的,但不仅仅是简单的查询。 Firestore 是为了改进查询要求而开发的,并且更新。更新并不一定意味着更好,取决于用例。他们的定价模式非常不同,因此您需要了解您的用例将如何收费。

您当然可以同时使用这两种方法。它们可以很好地协同工作,但如果您只需要一个简单的聊天需求,我会使用 RTDB。

PS。在 RTDB 中为每条新记录生成的唯一键会自动按时间顺序排列,这与它是为聊天应用程序设计的有关。但是有一点需要注意,聊天消息可能仍然会出现乱序,因为密钥是在设备上生成的,如果设备时钟略微超时并且消息正在快速交换,那么您可能会错过时间。解决方法是使用服务器时间属性编写每条记录......并使用它对聊天消息进行排序。希望对您的决定有所帮助。

PPS。 RTDB 对数据存储量和数据下载量收费。 Firestore 对存储和数据库读取和写入收费。在聊天应用程序中会有很多后者,所以我建议在 Excel 中运行一些假设场景。

【讨论】:

  • 我发现 Firebase 也在他们的一个“了解 Firestore”在线视频中回答了这个问题。这是它的链接youtu.be/6NegFl9p_sE?t=395
【解决方案2】:

那么哪个更实时?

我不认为一个比另一个更实时。

但后来 Firestore 出现了,从那以后我们看到了很多 Firestore 的建议

没错,Firestore 比 Firebase 实时数据库有了一些新功能,这就是为什么它被命名为“新旗舰”。查询性能取决于您请求的项目数,而不是您请求它们的项目数。因此,每次您想获取数据时,请按比例获取数据以保持您所说的速度。正如 Firebase 团队的人所说,Cloud Firestore 有性能保证,没有慢查询,因此您的应用检索数据所需的时间仅取决于您检索的数据量,而不取决于您拥有的数据量Firebase 服务器。换句话说,无论您在单个集合中有 1000、100 万甚至 10 亿个文档,例如检索其中的 15 个文档,都将花费相同的时间。

这种性能有一些限制,为此,我建议您查看官方文档中有关在 Cloud Firestore 中获取数据的所有部分。这就是 Firestore 使用这些约束的原因,因为必须保持这种性能保证。但根据我的经验,Cloud Firestore 中没有任何“SQL”查询无法以某种方式进行翻译。

所以请记住,无论您是从 10 个文件中请求一个文件,还是从 100.000 个或 100.000.000.000 个中请求一个文件,结果都会在确切的时间内出现。这里我以一个文档为例。因此,就速度而言,从 1 亿份文件中请求一份文件将比从同样的 1 亿份文件中请求 10 份文件要快。所以集合中的文档数量对查询性能没有影响。

这是关于 Cloud Firestore,但我建议您在使用其中一个或另一个之前阅读两个主要资源:

https://firebase.google.com/docs/database/rtdb-vs-firestore https://firebase.googleblog.com/2017/10/cloud-firestore-for-rtdb-developers.html 因此,请检查每一个的价格模型。但是恕我直言,Cloud Firestore 和 Firebase 实时数据库一起工作得非常好。

【讨论】:

  • 关于 IMO 值得了解的一点是,实时数据库稍微“更实时”。我遇到了多个客户端在很短的时间内更新同一个 Firestore 文档的问题(客户端会不同步),并且 Firestore 文档确实指出文档确实有每秒 1 次的限制/最大写入速率。因此,例如,对于实时游戏来说,Firestore 可能是绝对错误的解决方案(至少对于游戏的更实时部分而言)。
猜你喜欢
  • 2019-12-09
  • 2020-08-28
  • 2017-11-16
  • 2023-04-04
  • 2018-06-01
  • 1970-01-01
  • 2019-02-23
  • 2021-06-30
  • 1970-01-01
相关资源
最近更新 更多