当前位置: 首页 > 知识库问答 >
问题:

哪个firebase数据库用于Firestore或实时数据库中的聊天应用程序?

万俟英锐
2023-03-14

我正在构建一个使用Firestore存储大多数数据的应用程序。该应用程序具有聊天功能,我正在考虑使用实时数据库。使用Firebase Firestore vs Realtime Database实现此聊天功能有哪些好处?如果没有区别,我应该什么都使用Firestore吗?

附言:我已经阅读了两个https://firebase.google.com/docs/database/rtdb-vs-firestore的火力比较,我仍然不确定该走哪条路。

共有2个答案

伊锦
2023-03-14

那么哪一个更实时呢?

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

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

没错,Firestore在Firebase实时数据库上有一些新功能,这就是为什么它被命名为“新旗舰”的原因。查询性能取决于您请求的项目数,而不是您从中请求的项目数。因此,每次您想获取数据时,都要按一定比例获取数据,以保持您所谈论的速度。正如Firebase团队的成员所说,云Firestore有性能保证,没有慢速查询,因此应用程序检索数据所需的时间只取决于您检索的数据量,而不取决于您在Firebase服务器上拥有的数据量。换言之,在一个集合中是否有1000、100万甚至10亿个文档并不重要,检索其中的15个文档总是需要相同的时间。

此性能有一些限制,为此,我建议您查看官方文档中有关在Cloud FiRecovery中获取数据的所有部分。这就是FiRecovery使用这些约束的原因,因为维护此性能保证是强制性的。但根据我的经验,没有“SQL”查询不能以某种方式在Cloud FiRecovery中翻译。

因此,请记住,如果您从10个文档中请求一个文档,或者从100.000或100.000.000.000中请求一个项目,那么结果将在准确的时间内出现。这里我以一份文件为例。因此,就速度而言,从一亿份文件中请求一份文件要比从一亿份文件中请求10份文件快。因此,集合中的文档数对查询性能没有影响。

这是关于云Firestore的,但我建议您在使用其中一种之前阅读两种主要资源:

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

国兴贤
2023-03-14

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

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

备注:RTDB中为每个新记录生成的唯一键自动按时间顺序排列,这与它是为聊天应用程序设计的有关。不过需要注意的是,由于按键是在设备上生成的,因此聊天信息可能仍然会出现问题,如果设备时钟稍微超时,并且信息交换速度很快,则可能会错过计时。解决方法是使用服务器时间属性写入每个记录。。。并使用它对聊天信息进行排序。希望这有助于你的决定。

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

 类似资料:
  • 我们正在构建一个聊天应用程序,一对一聊天是该应用程序的主要目的,所以目前,消息传递速度是我们的第一要务。我们需要一个后端解决方案,我们最初计划使用Firebase实时数据库。但后来Firestore出现了,从那以后,我们看到了Firebase团队对实时数据库Firestore的许多建议。 我们已经使用了实时数据库和Firestore,所以我们非常了解两者的功能和查询能力。对于我们的用例,就特性而言

  • 我正在开发一个Android聊天应用程序,似乎我需要通过FCM发送每条消息,还需要保存到实时数据库。 我使用Firebase realtime DB存储和发送消息。我仍然需要发送每个消息(或至少消息id)也通过FCM。我担心如果我不这样做,并且只在应用程序在后台时发送FCM,用户可能会错过一些传入的消息。 将侦听器放在服务上似乎不够可靠(如果android干掉了服务怎么办?直到我重新启动它,我可能

  • 我希望基本上在我的应用程序内翻拍Kik。对于我在firebase聊天应用程序上看到的大多数指南,都有一个主要的消息节点,然后在该节点下面有一个扇出,每个用户都有引用主列表中消息的消息。 根据目前我的Firebase的布局方式,实现类似以下内容会更容易: 因此,当用户向对方发送消息时,我会更新发送者和用户下面的“聊天消息”节点。 有什么理由不这样做吗?我看到每个人都按照我描述的第一种方式进行,但我看

  • 我需要将数据从Firebase实时数据库切换到Firestore DB。我该怎么做? 视频主要关注实时db,但我认为由于我没有激活实时db,它会转到Firestore。但我让它工作的唯一方法是启用实时db。所以我可以在Firebase中插入和读取数据,但我需要它在Firestore中。 任何帮助都是非常感激的。

  • 我很难弄清楚如何正确地构造多用户聊天室体系结构。 基本上,该应用程序支持用户之间的私人消息(可以是两个用户之间的消息,也可以是多个用户之间的消息)。如果只在2个用户之间,数据结构真的很容易。 我试图降低成本(我不希望当当前登录的用户正在与某人聊天,而观察者正在获得与该特定聊天无关的所有消息时),并正确地构造数据。如果只有2个用户,我总是可以在当前用户ID下添加受体,并只查询该节点。但是有多个用户(