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

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

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

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


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

但如果你想要一个简短的总结,下面是:

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

This structured data helps you out in two ways. First, all queries are shallow, meaning that you can request a document without grabbing all the data underneath. This means you can keep your data stored hierarchically in a way that makes more sense to you without having to worry about keeping your database shallow. Second, you have more powerful queries. For instance, you can now query across multiple fields without having to create those "combo" fields that combine (and denormalize) data from other parts of your database. In some cases, Cloud Firestore will just run those queries directly, and in other cases, it will automatically create and maintain indexes for you.

设计为可扩展——Cloud Firestore将能够比实时数据库更好地扩展。需要注意的是,查询的规模取决于结果集的大小,而不是数据集的大小。因此,无论你的数据集有多大,搜索都将保持快速。

更容易手动获取数据——像Realtime Database一样,您可以在Cloud Firestore中设置侦听器来实时输入更改。但如果你不想要那种行为,而只是想要一个简单的“取回我的数据”调用,Cloud Firestore也有,它是一个主要的用例。(它们比实时数据库中的一次性调用要好得多)

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

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

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

为什么你仍然想要使用实时数据库——这可以归结为几个原因。

我之前提到的“频繁更新的应用程序可能会更便宜”, 它已经存在了很长一段时间,并经过了数千个应用程序的测试, 它有更好的延迟,当你需要可靠的低延迟来获得实时性时,实时数据库可能会更好。

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

选择Cloud Firestore而不是Realtime Database的原因

这是一个改进版本

Firebase数据库足以满足基本应用程序的需求。但是它还不够强大,无法处理复杂的需求。这就是引入Cloud Firestore的原因。以下是一些主要的变化。

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

定价

在Cloud Firestore中,尽管它主要是对在数据库中执行的操作以及带宽和存储进行收费,但费率已经降低了。你也可以设定每天的消费限额。这是关于账单的完整细节。

谷歌的未来计划

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



推荐谷歌的链接: Firebase实时数据库vs FireStore

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

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

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

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


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

要根据您的应用程序需求选择Firebase Realtime数据库和Cloud firestore,请阅读这里的官方文档。