361

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

我一直在阅读文档,但我没有看到 Firestore 和 Firebase DB 之间有很多区别。

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

我想更多地了解它们的区别或用法,或者 Firestore 是否刚刚取代了 Firebase DB?

4

7 回答 7

509

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

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

更好的查询和更结构化的数据——虽然实时数据库只是一个巨大的 JSON 树,但 Cloud Firestore 更结构化一些。您的所有数据都由文档(基本上是键值存储)和集合(文档集合)组成。文档还会经常指向子集合,这些子集合包含其他文档,这些文档本身可以包含其他文档,依此类推。

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

为扩展而设计——Cloud Firestore 将能够比实时数据库更好地扩展。请务必注意,您的查询会根据结果集的大小而不是数据集的大小进行缩放。因此,无论您的数据集有多大,搜索都将保持快速。

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

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

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

对于新闻应用程序、回合制多人游戏或类似您自己的 Stack Overflow 版本的驱动,从定价的角度来看,Cloud Firestore 可能看起来非常有利。对于像实时群组绘图应用程序这样的应用程序,您在一秒钟内向多人发送多个更新,它可能会比实时数据库更昂贵。

为什么您仍然希望使用实时数据库——归结为几个原因。

  1. 我之前提到的整个“对于进行大量频繁更新的应用程序来说可能会更便宜”,

  2. 它已经存在了很长时间,并且经过了数千个应用程序的实战测试,

  3. 它有更好的延迟,当您需要具有可靠低延迟的东西以获得实时感觉时,实时数据库可能会更好地工作。

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

希望有帮助!

于 2017-10-03T17:03:02.287 回答
89

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

Firebase Realtime database结构为 JSON 树,同时Cloud Firestore将数据存储在文档(文档是一组键值对)和集合(文档集合)中。

更多结构数据

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

在 Cloud FireStore 中,文档可以包含子集合和嵌套对象(如上图中的“电话”),这两者都可以包含字符串等原始字段(如上图中的“姓名”、“电子邮件”)或列表等复杂对象。

更好的查询

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

可扩展性

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

手动获取数据

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

安全

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

写入数据

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

价钱

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

于 2018-01-23T08:30:43.307 回答
25

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

这是一个改进的版本

Firebase 数据库对于基本应用程序来说已经足够了。但它还不足以处理复杂的需求。这就是引入 Cloud Firestore 的原因。以下是一些重大变化。

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

价钱

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

谷歌的未来计划

当他们发现实时数据库的缺陷时,他们创建了另一种产品,而不是改进旧产品。尽管没有可靠的细节显示他们目前在实时数据库上的排名,但现在是时候开始考虑它可能会被放弃了。



于 2018-08-29T18:41:31.997 回答
4

也建议来自谷歌的链接: Firebase Real-time Database vs FireStore

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

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

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

于 2019-11-24T14:06:09.987 回答
2

虽然大部分答案基本上是正确的,但 Firebase 文档表明,说 Firestore 是新方法并不是一件简单的事情。这取决于你想对数据库做什么!Firebase 在下面的链接中向您提出了许多问题,请仔细考虑,因为围绕一个编写应用程序然后发现您需要使用另一个并不是那么容易!

例如: 数据库实例的数量:您需要很多数据库,每个主要客户 1 个,还是只需要 1 个大型数据库?如果是前者,则使用 Firebase 实时数据库,如果后者则使用 Firestore。

rtdb-vs-firestore

于 2020-08-06T13:30:44.903 回答
1

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

基本介绍。二者皆是:-

  • Cloud Firestore是 Firebase 用于移动应用开发的最新数据库。它建立在实时数据库的成功之上,采用了一种新的、更直观的数据模型。Cloud Firestore 还具有比实时数据库更丰富、更快的查询和扩展能力。
  • 实时数据库是 Firebase 的原始数据库。对于需要跨客户端实时同步状态的移动应用程序,它是一种高效、低延迟的解决方案。

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

  • 简单的数据很容易存储。
  • 复杂的分层数据更难大规模组织。云火库
  • 简单的数据很容易存储在文档中,这与 JSON 非常相似。
  • 使用文档中的子集合,复杂的分层数据更易于大规模组织。
  • 需要较少的非规范化和数据扁平化。

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

于 2020-07-01T02:48:49.603 回答
-1
  • Cloud Firestore 是 Firebase 用于移动应用开发的数据库。它以实时数据库的成功为基础,采用一种新的、更直观的数据模型。Cloud Firestore 还具有比实时数据库更丰富、更快速的查询和扩展能力。

  • 实时数据库是 Firebase 的原始数据库。对于需要跨客户端实时同步状态的移动应用程序,它是一种高效、低延迟的解决方案。
于 2021-07-26T06:54:32.167 回答