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

Fra*_*cia 198 firebase google-cloud-platform firebase-realtime-database google-cloud-firestore

谷歌刚刚发布了Cloud Firestore,这是他们针对应用的新文档数据库.

我一直在阅读文档但我没有看到Firestore和Firebase DB之间存在很多差异.

重点是Firestore使用的文档和集合与Firebase相比,可以轻松使用查询,Firebase是一个带有JSON基础的传统noSQL数据库.

我想更多地了解他们的差异或用法,或者Firestore是否刚刚取代Firebase DB?

Tod*_*man 291

所以我写了一篇关于这个问题的完整博客文章,我建议你查看(或官方文档)以获得更完整的答案.

但是如果你想要快速(-ish)摘要,这里是:

更好的查询和更结构化的数据 - 虽然实时数据库只是一个巨大的JSON树,但Cloud Firestore更加结构化.您的所有数据都包含文档(基本上是键值存储)和集合(它们是文档集合).文档还经常指向子集合,其中包含其他文档,其本身可以包含其他文档,等等.

这种结构化数据可以通过两种方式帮助您.首先,所有查询都很浅,这意味着您可以在不抓取下面的所有数据的情况下请求文档.这意味着您可以以对您更有意义的方式分层存储数据,而无需担心数据库保持浅薄.其次,您有更强大的查询.例如,您现在可以跨多个字段进行查询,而无需创建组合(和非规范化)数据库其他部分数据的"组合"字段.在某些情况下,Cloud Firestore将直接运行这些查询,而在其他情况下,它将自动为您创建和维护索引.

旨在扩展 - Cloud Firestore将能够比实时数据库更好地扩展.请务必注意,您的查询会缩放到结果集的大小,而不是数据集.因此,无论您的数据集有多大,搜索都将保持快速.

更轻松地手动获取数据 - 与实时数据库一样,您可以在Cloud Firestore中设置侦听器以实时流式传输更改.但是,如果您不想要这种行为,并且只想要一个简单的"获取我的数据"调用,那么Cloud Firestore也可以使用它,并且它是作为主要用例构建的.(它们比once实时数据库中的调用要好得多)

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

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

对于为新闻应用程序,回合制多人游戏或类似您自己的Stack Overflow版本提供动力,从定价的角度来看,Cloud Firestore可能看起来非常有利.对于像实时组绘图应用程序这样的东西,您可以在多个人之间发送多个更新,它可能比实时数据库更昂贵.

为什么你仍然可能想要使用实时数据库 - 这归结为几个原因.1)整个"对于经常进行大量更新的应用程序可能会更便宜"我之前提到的事情,2)它已经存在了很长时间并且已经被成千上万的应用程序进行了战斗测试(Cloud Firestore仍处于测试阶段) ),它有更好的延迟,当你需要具有可靠的低延迟的东西以实现实时感时,实时数据库可能会更好地工作.

对于大多数新应用,我们建议您查看Cloud Firestore.但是如果你有一个已经在实时数据库中的应用程序,我不建议仅仅为了切换而进行切换,除非你有令人信服的理由这样做.

希望有所帮助!

  • 非常感谢托德!我看到了宣布帖子,但没有看到这个!我完全爱上了Firestore,遗憾的是现在我需要为这个xD重写我的整个RxJava. (2认同)
  • 它与Cloud Datastore有很多共同之处.最大的不同是与Firebase的集成,因此您可以访问移动和Web SDK以及本机离线模式以及实时同步功能.Cloud Datastore非常适合大规模服务器端开发,您可以在其中管理自己与应用程序的连接,例如在App Engine上运行您自己的网站或通过Compute/Container Engine. (2认同)
  • "强一致性"究竟意味着什么?CAP定理表明您*不能*"确保您在分布式和可用的环境中获得最新版本的数据".一致性,可用性,分区容差=>选择2. (2认同)
  • @ToddKerpelman 您有机会进行 Cloud Firestore / Cloud Datastore 比较。两者看起来非常相似。 (2认同)

0xA*_*iHn 49

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

Firebase Realtime database它被构造为JSON树,但Cloud Firestore存储在文档(一组键值对)和集合(它是文档集合)格式中.

更多结构数据

实时数据库将数据存储在JSON树中,但Cloud firestore将数据存储在与JSON非常相似的文档中. 在此输入图像描述

在Cloud FireStore中,Documents可以包含子集合和嵌套对象(如上图中的"phone"),这两者都可以包括字符串等原始字段(如上图中的"name","email"等)或复杂对象名单.

更好的查询

  • 在实时数据库中,我们只能对单个查询中的属性进行排序或过滤,而不能对属性进行排序和过滤.而在Cloud FireStore中,您可以链接过滤器并在单个查询中对属性组合过滤和排序.
  • 如果你想获取降序排列数据,那么云计算公司的FireStore是对你非常有用,但对于实时数据库,没有可用的查询功能. 在此输入图像描述
  • 您还可以链接多个"where"方法,以在Cloud FireStore中创建更具体的查询(逻辑AND). 在此输入图像描述

可扩展性

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

手动获取数据

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

安全

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

写数据

我们可以执行多个操作作为单一批次和完成它们原子,用的任意组合set(),update()delete()方法. 在此输入图像描述

价钱

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

  • 链接原始文章会很好:https://medium.com/@beingrahul/firebase-cloud-firestore-vs-firebase-realtime-database-931d4265d4b0 (9认同)
  • 你能更详细地解释一下“数据验证自动发生”是什么意思吗? (3认同)

Ber*_*yle 6

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

它是一个改进的版本

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

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

价钱

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

Google的未来计划

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




Tec*_*ree 5

还建议来自 google 的链接: Firebase Real-time Database vs FireStore

摘自谷歌文档,这里有一个小总结:

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

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