Cloud Firestore和Firebase实时数据库之间有什么区别?


252

Google刚刚发布了Cloud Firestore,这是他们针对应用程序的新文档数据库。

我一直在阅读文档,但是在Firestore和Firebase DB之间看不出很多区别。

重点是,与Firebase(具有JSON基础的传统noSQL数据库)相比,Firestore使用的文档和集合可轻松使用查询。

我想进一步了解它们的区别或用途,或者Firestore是否只是用来替换Firebase DB?


1
在Firestore上读取速度更快,在Firebase实时数据库上写入速度更快
DragonFire

Answers:


380

因此,我写了一篇有关此问题的完整博客文章,建议您查看一下(或官方文档)以获得更完整的答案。

但是,如果您需要快速的(-ish)摘要,则为:

更好的查询和更结构化的数据 -实时数据库只是一棵巨大的JSON树,而Cloud Firestore则更加结构化。您的所有数据均由文档(基本上是键值存储)和集合(即文档的集合)组成。文档还会频繁指向子集合,这些子集合包含其他文档,它们本身也可以包含其他文档,依此类推。

这种结构化数据可以通过两种方式帮助您。首先,所有查询都是浅层的,这意味着您可以在不获取其下所有数据的情况下请求文档。这意味着您可以以对您更有意义的方式分层存储数据,而不必担心使数据库变浅。其次,您拥有更强大的查询。例如,您现在可以跨多个字段进行查询,而不必创建那些组合(和去规范化)数据库其他部分数据的“组合”字段。在某些情况下,Cloud Firestore只会直接运行这些查询,而在其他情况下,它将为您自动创建和维护索引。

专为扩展而设计 -Cloud Firestore将比实时数据库更好地扩展。重要的是要注意您的查询扩展到结果集的大小,而不是数据集的大小。因此,无论您的数据集有多大,搜索都将保持快速。

手动获取数据更容易 -与实时数据库一样,您可以在Cloud Firestore中设置侦听器以实时流式传输更改。但是,如果您不希望这种行为,而只想进行简单的“获取我的数据”调用,Cloud Firestore也会这样做,并且它是作为主要用例内置的。(它们比once实时数据库领域的调用要好得多)

多区域支持 -这基本上意味着更高的可靠性,因为您的数据可以同时在多个数据中心之间共享。但是您仍然具有很强的一致性,这意味着您始终可以进行查询,并可以确保获得最新版本的数据。

不同的定价模式 -实时数据库主要根据存储或网络带宽收费,而Cloud Firestore主要根据您执行的操作数量收费。这会好还是坏?这取决于您的应用程序。

从定价的角度来看,对于为新闻应用程序,回合制多人游戏或您自己的Stack Overflow版本提供动力,Cloud Firestore可能看起来非常优惠。对于像实时组绘图应用程序这样的应用程序,您要在一秒钟内将多个更新发送给多个人,它可能会比实时数据库贵。

为什么您仍然希望使用实时数据库 -归结为几个原因。1)我之前提到的整个“它对于进行大量频繁更新的应用程序可能会便宜一些”,2)它已经存在很长时间了,并且已经被成千上万的应用程序进行了实战测试,3)延迟时间更长当您需要具有可靠的低延迟的实时感觉时,实时数据库可能会更好地工作。

对于大多数新应用,我们建议您查看Cloud Firestore。但是,如果您的应用程序已经在实时数据库中,则我不建议您仅出于切换的目的而进行切换,除非您有充分的理由这样做。

希望有帮助!


2
非常感谢你托德!我看到了公告,但是没有看到!我完全爱上了Firestore,可悲的是,现在我需要重写为该xD包装的整个RxJava。
弗朗西斯科·

1
Google Cloud Datastore如何适合?天真的,它似乎与Cloud Firestore有很多重叠。@ToddKerpelman
Jon G

2
它与Cloud Datastore有很多共同点。最大的不同是与Firebase的集成,因此您可以访问移动和Web SDK以及本机脱机模式以及实时同步功能。Cloud Datastore非常适合大规模服务器端开发,您可以在其中管理自己与应用程序的连接,例如在App Engine上或通过Compute / Container Engine运行自己的网站。
Todd Kerpelman '17

2
“强一致性”的真正含义是什么?CAP定理指出,您不能在分布式和可用的环境中“确信您正在获取最新版本的数据”。一致性,可用性,分区容差=>选择
2。– AjahnCharles

1
@ToddKerpelman如果有机会进行Cloud Firestore / Cloud Datastore比较。两者看起来非常相似。
TheAddonDepot '10

63

您可以在此处阅读整篇文章:https : //medium.com/@beingrahul/firebase-cloud-firestore-vs-firebase-realtime-database-931d4265d4b0

Firebase Realtime database它被构造为JSON树,但Cloud Firestore将数据存储在文档(一组键值对)和集合(一组文档)中。

更多结构数据

实时数据库将数据存储在JSON树中,但Cloud firestore将数据存储在文档中,这与JSON非常相似。 在此处输入图片说明

在Cloud FireStore中,文档可以包含子集合和嵌套对象(如上图中的“电话”),它们都可以包括诸如字符串之类的原始字段(如上图中的“ name”,“ email”等)或复杂的对象(如上图)列表。

更好的查询

  • 在实时数据库中,我们只能在单个查询中对属性进行排序或过滤,而不能同时对属性进行排序和过滤,而在Cloud FireStore中,您可以在单个查询中链接过滤器以及对属性进行过滤和排序组合。
  • 如果要按降序获取数据,则Cloud fireStore对您非常有用,但对于实时数据库,没有可用的查询功能。 在此处输入图片说明
  • 您还可以链接多个“ where”方法以在Cloud FireStore中创建更具体的查询(逻辑AND)。 在此处输入图片说明

可扩展性

Cloud Firestore的扩展能力将优于实时数据库。请务必注意,查询性能与结果集的大小成正比,而不与数据集的大小成正比。因此,无论您的数据集有多大,搜索都将保持快速。

手动提取数据

我们可以像实时数据库一样在Cloud FireStore中实时监听数据,但在Cloud FireStore中,我们也可以手动获取数据(如果您只想一次获取任何数据)。

安全

在实时数据库中,我们需要使用验证规则分别验证数据,但在Cloud FireStore中,数据验证会自动进行。

写入数据

我们可以将多个操作作为一个批处理执行,并使用set()update()delete()方法的任意组合以原子方式完成它们。 在此处输入图片说明

价钱

在实时数据库中,仅对带宽和存储收费,但收费较高。在Cloud FireStore中时,主要对数据库中执行的操作(读取,写入,删除)以及较低的带宽和存储收费。


12
这将是很好的链接原创文章:medium.com/@beingrahul/...
塞勒姆Ouerdani

1
您能否更详细地解释“数据验证自动发生”是什么意思?
SoEzPz

12

选择Cloud Firestore而非实时数据库的原因

它是一个改进的版本

Firebase数据库足以用于基本应用程序。但是它的功能不足以处理复杂的需求。这就是引入Cloud Firestore的原因。这是一些主要更改。

  • 基本文件结构得到改善。
  • Web客户端的脱机支持。
  • 支持更高级的查询。
  • 写和事务操作是原子的。
  • 可靠性和性能改进
  • 缩放将是自动的。
  • 会更安全。

价钱

在Cloud Firestore中,费率降低了,即使它主要对数据库中执行的操作以及带宽和存储收费。您也可以设置每日支出限额。是有关计费的完整详细信息。

Google的未来计划

当他们发现实时数据库的缺陷时,他们创建了另一种产品而不是改进旧产品。即使没有可靠的细节可以揭示其在实时数据库上的当前地位,但现在该是时候开始考虑可能会放弃它了。




2

还建议从Google链接: Firebase实时数据库与FireStore

摘自google docs,这里有一个小总结:

FireBase实时数据库是基于JSON的NO SQL DB,适用于区域性移动应用程序,通常用于实时/极低延迟地在用户/设备之间存储和同步数据。

FireStore是类似于JSON的NOSQL DB,旨在实现高并发,全局,易于自动扩展的持久性,针对具有典型用例(例如资产跟踪,实时分析,构建零售产品目录,社交用户)的任何客户端(不仅是移动应用)而设计个人资料,游戏排行榜,基于聊天的应用程序等。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.