Google刚刚发布了Cloud Firestore,这是他们针对应用的新文档数据库。
我一直在阅读文档但我没有看到Firestore和Firebase DB之间存在很多差异。
重点是Firestore使用的文档和集合与Firebase相比,可以轻松使用查询,Firebase是一个带有JSON基础的传统noSQL数据库。
我想了解更多关于他们的差异或用法,或者Firestore是否刚刚取代Firebase DB?
答案 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非常相似的文档中。
在Cloud FireStore中,Documents可以包含子集合和嵌套对象(如上图中的“phone”),这两个对象都可以包含字符串等原始字段(如上图中的“name”,“email”等)或像列表这样的复杂对象。
更好的查询
<强>可扩展性强>
Cloud Firestore将能够比实时数据库更好地扩展。请务必注意,您的查询性能与结果集的大小成正比,而不是数据集。因此,无论您的数据集有多大,搜索都将保持快速。
手动提取数据
我们可以像Cloud FireStore一样在实时数据库中实时监听数据,但在Cloud FireStore中,我们也可以手动获取数据(如果您只需要一次数据)。
安全强>
在实时数据库中,我们需要使用验证规则单独验证数据,但在Cloud FireStore中,数据验证会自动进行。
撰写数据
我们可以将多个操作作为一个批处理执行,并使用set()
,update()
或delete()
方法的任意组合以原子方式完成这些操作。
<强>定价强>
在实时数据库中,仅为带宽和存储充电,但速度更快。在Cloud FireStore中,主要是对数据库中执行的操作(读取,写入,删除)以及较低速率的带宽和存储进行收费。
答案 2 :(得分:5)
这是改进版本
Firebase数据库足以用于基本应用程序。但是它的功能不足以处理复杂的需求。这就是引入Cloud Firestore的原因。这是一些主要更改。
定价
在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)
基本介绍。都:-
主要区别:- 实时数据库:::
来源(更多信息..google):- https://firebase.google.com/docs/database/rtdb-vs-firestore#key_considerations
答案 5 :(得分:0)
尽管大多数答案基本上是正确的,但Firebase文档指出,说Firestore是新方法并不是一件简单的事情。这取决于您要对数据库执行的操作! Firebase在下面的链接中向您询问多个问题,请仔细考虑,因为围绕一个应用程序编写应用程序然后发现需要使用另一个应用程序并不容易!
例如: 数据库实例数: 您需要多个数据库,每个主要客户一个,还是一个大型数据库? 如果是前者,则使用Firebase Realtime数据库;如果后者,则使用Firestore。
答案 6 :(得分:0)