Google刚刚发布了Cloud Firestore,这是他们新的应用程序文档数据库。我一直在阅读文档,但我没有看到Firestore和Firebase DB之间有太多的区别。主要的一点是,Firestore使用文档和集合,与Firebase(一个基于JSON的传统noSQL数据库)相比,它允许轻松使用查询。我想知道更多关于它们的区别,或用法,或是否Firestore只是来取代Firebase DB?
q3qa4bjr1#
我写了一个关于这个问题的entire blog post,我建议你看看它(或official documentation),以获得更完整的答案。但是如果你想快速总结一下,这里有:
更好的查询和更结构化的数据--Realtime Database只是一个巨大的JSON树,而Cloud Firestore的结构化程度更高一些。所有数据都由文档(基本上是键-值存储)和集合(文档的集合)组成。文档还经常指向子集合,子集合包含其他文档,子集合本身也可以包含其他文档,等等。
这种结构化数据在两个方面对您有所帮助。首先,* 所有查询都是浅层的 *,这意味着您可以请求文档而无需获取其下的所有数据。这意味着您可以以一种对您更有意义的方式分层存储数据,而不必担心数据库的浅层性。其次,您拥有更强大的查询。例如,你现在可以跨多个字段进行查询,而不必创建那些“组合”字段来合并(和反规范化)来自数据库其他部分的数据。2在某些情况下,Cloud Firestore将直接运行这些查询,而在其他情况下,它将自动为你创建和维护索引。
专为可伸缩性设计-Cloud Firestore的可伸缩性将优于Realtime Database。请注意,您的查询是根据结果集的大小而伸缩的,而不是根据数据集的大小。因此,无论数据集变得多么大,搜索都将保持快速。更轻松地手动获取数据--与Realtime Database类似,您可以在Cloud Firestore中设置侦听器,以实时流传输更改。但如果您不需要这种行为,而只需要一个简单的“获取我的数据”调用,Cloud Firestore也有这种功能,并且它是作为主要用例内置的。(它们比Realtime Database-land中的once调用要好得多)多区域支持-这基本上意味着更高的可靠性,因为您的数据同时在多个数据中心共享。但您仍然具有很强的一致性,这意味着您可以随时进行查询,并确保获得最新版本的数据。不同的定价模式-Realtime Database主要根据存储或网络带宽收费,而Cloud Firestore主要根据您执行的 * 操作数量 * 收费。这是更好还是更差?这取决于您的应用程序。
once
对于新闻类应用、回合制多人游戏,或者你自己的Stack Overflow版本,Cloud Firestore从价格上看可能会很有优势。对于实时群组绘图应用,你需要在一秒钟内向多个人发送多个更新,它可能会比实时数据库更贵。
为什么您仍然希望使用实时数据库--原因有几个。
1.我之前提到的“频繁更新的应用程序可能会更便宜”,1.它已经存在了很长一段时间,并已通过数千个应用程序的实战测试,1.它有更好的延迟,当你需要一个可靠的低延迟的实时感觉,实时数据库可能会更好地工作。对于大多数新的应用程序,我们建议你看看Cloud Firestore。但是如果你有一个已经在实时数据库上的应用程序,我真的不建议仅仅为了切换而切换,除非你有一个令人信服的理由这样做。
raogr8fs2#
这是改进版
Firebase数据库对于基本的应用程序来说已经足够了。但是对于处理复杂的需求来说,它还不够强大。这就是为什么云Firestore被引入的原因。下面是一些主要的变化。
在Cloud Firestore中,尽管主要是对数据库中执行的操作以及带宽和存储进行收费,但费率已经降低。您也可以设置每日支出限制。Here是关于计费的完整详细信息。
Google的未来计划
当他们发现实时数据库的缺陷时,他们创建了另一个产品,而不是改进旧的产品。尽管没有可靠的细节显示他们在实时数据库方面的现状,但现在是时候开始考虑它可能会被放弃了。
9jyewag03#
建议从谷歌链接以及:Firebase Real-time Database vs FireStore摘自谷歌文档,这里有一个小摘要:
FireBase真实的Time DB是基于JSON的NO SQL DB,适用于移动的应用程序、区域,通常用于在用户/设备之间实时/极低延迟地存储和同步数据。FireStore是JSON“类”NOSQL数据库,旨在实现高并发、全局、轻松自动扩展的持久性,专为任何客户端(不仅仅是移动的应用程序)而设计,具有典型用例,如资产跟踪、真实的分析、构建零售产品目录、社交用户配置文件、游戏排行榜、基于聊天的应用程序等。
btxsgosb4#
要根据您的应用需求在Firebase Realtime数据库和Cloud firestore之间进行选择,请阅读此处的官方文档。
rt4zxlrg5#
5条答案
按热度按时间q3qa4bjr1#
我写了一个关于这个问题的entire blog post,我建议你看看它(或official documentation),以获得更完整的答案。
但是如果你想快速总结一下,这里有:
更好的查询和更结构化的数据--Realtime Database只是一个巨大的JSON树,而Cloud Firestore的结构化程度更高一些。所有数据都由文档(基本上是键-值存储)和集合(文档的集合)组成。文档还经常指向子集合,子集合包含其他文档,子集合本身也可以包含其他文档,等等。
这种结构化数据在两个方面对您有所帮助。首先,* 所有查询都是浅层的 *,这意味着您可以请求文档而无需获取其下的所有数据。这意味着您可以以一种对您更有意义的方式分层存储数据,而不必担心数据库的浅层性。其次,您拥有更强大的查询。例如,你现在可以跨多个字段进行查询,而不必创建那些“组合”字段来合并(和反规范化)来自数据库其他部分的数据。2在某些情况下,Cloud Firestore将直接运行这些查询,而在其他情况下,它将自动为你创建和维护索引。
专为可伸缩性设计-Cloud Firestore的可伸缩性将优于Realtime Database。请注意,您的查询是根据结果集的大小而伸缩的,而不是根据数据集的大小。因此,无论数据集变得多么大,搜索都将保持快速。
更轻松地手动获取数据--与Realtime Database类似,您可以在Cloud Firestore中设置侦听器,以实时流传输更改。但如果您不需要这种行为,而只需要一个简单的“获取我的数据”调用,Cloud Firestore也有这种功能,并且它是作为主要用例内置的。(它们比Realtime Database-land中的
once
调用要好得多)多区域支持-这基本上意味着更高的可靠性,因为您的数据同时在多个数据中心共享。但您仍然具有很强的一致性,这意味着您可以随时进行查询,并确保获得最新版本的数据。
不同的定价模式-Realtime Database主要根据存储或网络带宽收费,而Cloud Firestore主要根据您执行的 * 操作数量 * 收费。这是更好还是更差?这取决于您的应用程序。
对于新闻类应用、回合制多人游戏,或者你自己的Stack Overflow版本,Cloud Firestore从价格上看可能会很有优势。对于实时群组绘图应用,你需要在一秒钟内向多个人发送多个更新,它可能会比实时数据库更贵。
为什么您仍然希望使用实时数据库--原因有几个。
1.我之前提到的“频繁更新的应用程序可能会更便宜”,
1.它已经存在了很长一段时间,并已通过数千个应用程序的实战测试,
1.它有更好的延迟,当你需要一个可靠的低延迟的实时感觉,实时数据库可能会更好地工作。
对于大多数新的应用程序,我们建议你看看Cloud Firestore。但是如果你有一个已经在实时数据库上的应用程序,我真的不建议仅仅为了切换而切换,除非你有一个令人信服的理由这样做。
raogr8fs2#
选择Cloud Firestore而非实时数据库的理由
这是改进版
Firebase数据库对于基本的应用程序来说已经足够了。但是对于处理复杂的需求来说,它还不够强大。这就是为什么云Firestore被引入的原因。下面是一些主要的变化。
定价
在Cloud Firestore中,尽管主要是对数据库中执行的操作以及带宽和存储进行收费,但费率已经降低。您也可以设置每日支出限制。Here是关于计费的完整详细信息。
Google的未来计划
当他们发现实时数据库的缺陷时,他们创建了另一个产品,而不是改进旧的产品。尽管没有可靠的细节显示他们在实时数据库方面的现状,但现在是时候开始考虑它可能会被放弃了。
9jyewag03#
建议从谷歌链接以及:Firebase Real-time Database vs FireStore
摘自谷歌文档,这里有一个小摘要:
FireBase真实的Time DB是基于JSON的NO SQL DB,适用于移动的应用程序、区域,通常用于在用户/设备之间实时/极低延迟地存储和同步数据。
FireStore是JSON“类”NOSQL数据库,旨在实现高并发、全局、轻松自动扩展的持久性,专为任何客户端(不仅仅是移动的应用程序)而设计,具有典型用例,如资产跟踪、真实的分析、构建零售产品目录、社交用户配置文件、游戏排行榜、基于聊天的应用程序等。
btxsgosb4#
要根据您的应用需求在Firebase Realtime数据库和Cloud firestore之间进行选择,请阅读此处的官方文档。
rt4zxlrg5#