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

What's the difference between Cloud Firestore and the Firebase Realtime Database?

Google 刚刚发布了他们的新应用文档数据库 Cloud Firestore。

我一直在阅读文档,但我没有发现 Firestore 和 Firebase DB 之间有太多区别。

重点是 Firestore 使用的文档和集合与 Firebase 相比更易于查询,Firebase 是具有 JSON 基础的传统 noSQL 数据库。

我想知道更多关于它们的区别或用法,或者 Firestore 是否只是为了取代 Firebase DB?

所以我写了一个 entire blog post all about this very question, and I recommend you check it out (or the official documentation) 以获得更完整的答案。

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

更好的查询和更结构化的数据 -- 虽然实时数据库只是一棵巨大的 JSON 树,但 Cloud Firestore 的结构化程度更高一些。您的所有数据都由文档(基本上是键值存储)和集合(文档集合)组成。文档也经常指向包含其他文档的子集合,子集合本身可以包含其他文档,等等。

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

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

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

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

不同的定价模型 -- 实时数据库主要根据存储或网络带宽收费,而 Cloud Firestore 主要根据操作数 你表演。这会更好,还是更糟?这取决于您的应用。

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

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

  1. 我之前提到的整个“对于经常更新的应用程序来说它可能会更便宜”,

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

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

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

希望对您有所帮助!

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

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

更多结构数据

Realtime Database 将数据存储在 JSON 树中,而 Cloud firestore 将数据存储在文档中,这与 JSON 非常相似。

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

更好的查询

  • 在实时数据库中,我们只能在单个查询中对单个 属性 进行排序或过滤,而不能对 属性 同时进行排序和过滤。在里面 Cloud FireStore,您可以链接过滤器并将过滤和 在单个查询中对 属性 进行排序。
  • 如果您想按降序获取数据,那么 Cloud FireStore 是 对你很有用。对于实时数据库,没有查询 功能可用。
  • 您还可以链接多个“where”方法来创建更具体的 Cloud FireStore 中的查询(逻辑与)。

可扩展性

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

手动获取数据

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

安全

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

写入数据

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

定价

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

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

是改进版

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

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

定价

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

Google

的未来计划

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



也从 google 建议 link : Firebase Real-time Database vs FireStore

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

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

FireStore 是 JSON 'like' NOSQL DB 意味着高并发、全局、易于自动扩展的持久性,专为任何客户端设计(不仅是移动应用程序)具有典型用例,例如资产跟踪、实时分析、构建零售产品目录、社交用户配置文件、游戏排行榜、基于聊天的应用程序等

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

基本介绍。对两者:-

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

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

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

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

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

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

rtdb-vs-firestore

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

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

它通常在用例上结束,如果你打算使用更高的带宽并拥有 98% 的时间存储并使用更高的数据处理,那么我会使用 fire store,否则你可以使用 Realtime数据库 .