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

时间:2017-10-03 16:59:32

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

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

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

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

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

7 个答案:

答案 0 :(得分:258)

所以我写了一篇关于这个问题的entire blog post,我建议您查看(或official documentation)以获得更完整的答案。

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

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

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

旨在扩展 - Cloud Firestore将能够比实时数据库更好地扩展。请注意,您的查询会扩展到结果集的大小,而不是数据集,这一点非常重要。因此,无论您的数据集有多大,搜索都将保持快速。

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

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

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

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

为什么您仍然可能希望使用实时数据库 - 归结为几个原因。 1)对于经常进行大量更新的应用来说,整个"它可能会更便宜。我之前提到过的事情,2)它已经存在了很长时间,并且经过数千个应用程序的战斗测试(Cloud Firestore仍在测试中),3)它有更好的延迟,当你需要时对于实时感觉具有可靠低延迟的东西,实时数据库可能会更好。

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

希望有所帮助!

答案 1 :(得分:41)

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

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

更多结构数据

实时数据库将数据存储在JSON树中,但Cloud firestore将数据存储在与JSON非常相似的文档中。 enter image description here

在Cloud FireStore中,Documents可以包含子集合和嵌套对象(如上图中的“phone”),这两个对象都可以包含字符串等原始字段(如上图中的“name”,“email”等)或像列表这样的复杂对象。

更好的查询

  • 在实时数据库中,我们只能对属性进行排序或过滤 单个查询,而不是对属性进行排序和过滤 Cloud FireStore,您可以链接过滤器并组合过滤和 在单个查询中对属性进行排序。
  • 如果您想按降序获取数据,那么Cloud fireStore就是 对您来说非常有用,但对于Realtime数据库,没有查询 功能可用。 enter image description here
  • 您还可以链接多个“where”方法以创建更具体的方法 Cloud FireStore中的查询(逻辑AND)。 enter image description here

<强>可扩展性

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

手动提取数据

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

安全

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

撰写数据

我们可以将多个操作作为一个批处理执行,并使用set()update()delete()方法的任意组合以原子方式完成这些操作。 enter image description here

<强>定价

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

答案 2 :(得分:5)

基于实时数据库选择Cloud Firestore的原因

这是改进版本

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

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

定价

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

Google的未来计划

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



注意:同时,请记住Cloud Firestore当前处于测试版。

答案 3 :(得分:1)

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

从google文档中提取,这里是一个小总结:

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

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

答案 4 :(得分:1)

Cloud firestore基本上是为简单而又大数据而设计的 实时数据库专为复杂数据存储(看起来像JSON)

基本介绍。都:-

  • Cloud Firestore 是Firebase用于移动应用程序开发的最新数据库。它以新的,更直观的数据模型为基础,建立在实时数据库的成功之上。与实时数据库相比,Cloud Firestore还具有更丰富,更快捷的查询功能,并且扩展范围更大。
  • 实时数据库是Firebase的原始数据库。这是一种针对需要在客户端之间实时同步状态的移动应用程序的高效,低延迟的解决方案。

主要区别:- 实时数据库:::

  • 简单数据非常容易存储。
  • 复杂的分层数据更难以大规模组织。 云消防站
  • 简单数据易于存储在文档中,与JSON非常相似。
  • 使用文档中的子集合,复杂的分层数据更易于按比例组织。
  • 需要更少的非规范化和数据展平。

来源(更多信息..google):- https://firebase.google.com/docs/database/rtdb-vs-firestore#key_considerations

答案 5 :(得分:0)

尽管大多数答案基本上是正确的,但Firebase文档指出,说Firestore是新方法并不是一件简单的事情。这取决于您要对数据库执行的操作! Firebase在下面的链接中向您询问多个问题,请仔细考虑,因为围绕一个应用程序编写应用程序然后发现需要使用另一个应用程序并不容易!

例如: 数据库实例数: 您需要多个数据库,每个主要客户一个,还是一个大型数据库? 如果是前者,则使用Firebase Realtime数据库;如果后者,则使用Firestore。

rtdb-vs-firestore

答案 6 :(得分:0)

  • Cloud Firestore 是 Firebase 的最新移动应用数据库 发展。它建立在实时数据库的成功基础上 一个新的、更直观的数据模型。 Cloud Firestore 还具有 比实时数据库更丰富、更快的查询和扩展。

  • 实时数据库是 Firebase 的原始数据库。这是一个高效的, 需要同步状态的移动应用程序的低延迟解决方案 实时跨客户。