用于聊天应用的 Firebase 实时数据库或 Firestore? [关闭]

Posted

技术标签:

【中文标题】用于聊天应用的 Firebase 实时数据库或 Firestore? [关闭]【英文标题】:Firebase Realtime Database or Firestore for chatting app? [closed] 【发布时间】:2019-12-09 20:38:16 【问题描述】:

我们正在构建一个聊天应用程序,一对一聊天是该应用程序的主要目的,因此目前,消息传递速度是我们的首要任务。我们需要一个后端解决方案,我们最初计划使用 Firebase 实时数据库。但随后 Firestore 应运而生,从那时起,我们从 Firebase 团队看到了很多关于 Firestore over Realtime 数据库的建议。

我们同时使用了实时数据库和 Firestore,因此我们非常了解两者的功能和查询能力。对于我们在功能方面的用例,它们中的任何一个都可以。但正如我之前所说,我们主要关心的是消息传递速度。那么哪个更实时?

【问题讨论】:

在体验过真正的应用之后,我肯定会选择实时数据库而不是 Firestore,尤其是在定价方面 【参考方案1】:

在我看来,计算很简单。实时数据库 10 000 M 聊天消息数据传输 = 490 美元。 Firestore 50 亿次读取 = 3000 美元,50 亿次写入 9000 美元 = 12000 美元。因此,最便宜的方法是使用实​​时数据库,并且由于存储了 5 美元/GB,您需要每隔几周/几个月将消息重写到 Firestore。对于像不和谐这样的聊天应用程序,您可以与许多用户共享对话,最好的方法是设置一个服务器,使用不同的数据库,如 Cassandra。

【讨论】:

【参考方案2】:

那么哪个更实时?

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

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

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

这种性能有一些限制,为此,我建议您查看官方文档中有关getting data in 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 实时数据库可以很好地协同工作。

【讨论】:

以上是关于用于聊天应用的 Firebase 实时数据库或 Firestore? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

聊天应用中的Firebase实时数据库无法按时检索邮件

Firebase 网络将聊天存储为实时数据库中的数组

如何在 Firebase 实时数据库中搜索类似数组的数据?

使用 Firebase 的 Android 聊天应用程序,但未在 firebase 中存储数据

聊天应用程序的 Firebase 推送通知

使用 Firebase 实时数据库 Flutter 进行实时更新