所以我就这个问题写了一个entire blog post,我建议您查看它(或official documentation)以获得更完整的答案。
但如果你想要快速(-ish)总结,这里是:
更好的查询和更结构化的数据 -- 虽然实时数据库只是一个巨大的 JSON 树,但 Cloud Firestore 的结构化程度更高。您的所有数据都由文档(基本上是键值存储)和集合(文档集合)组成。文档还会经常指向子集合,这些子集合包含其他文档,而这些子集合本身可以包含其他文档,等等。
这种结构化数据可以通过两种方式帮助您。首先,所有查询都是浅的,这意味着您可以请求一个文档,而无需抓取下面的所有数据。这意味着您可以以一种对您更有意义的方式分层存储数据,而不必担心保持数据库浅层。其次,您有更强大的查询。例如,您现在可以跨多个字段进行查询,而无需创建那些组合(和非规范化)来自数据库其他部分的数据的“组合”字段。在某些情况下,Cloud Firestore 会直接运行这些查询,而在其他情况下,它会自动为您创建和维护索引。
专为扩展而设计 -- Cloud Firestore 将能够比实时数据库更好地扩展。请务必注意,您的查询会根据结果集的大小而不是数据集的大小进行缩放。因此,无论您的数据集有多大,搜索都将保持快速。
更轻松地手动获取数据 -- 与实时数据库一样,您可以在 Cloud Firestore 中设置侦听器以实时流式传输更改。但是,如果您不想要这种行为,而只想要一个简单的“获取我的数据”调用,Cloud Firestore 也有,并且它是作为主要用例内置的。 (它们比实时数据库领域的once 调用要好得多)
多区域支持 -- 这基本上意味着更高的可靠性,因为您的数据同时在多个数据中心共享。但是您仍然具有很强的一致性,这意味着您始终可以进行查询并确保您获得的是最新版本的数据。
不同的定价模式 -- 虽然实时数据库主要根据存储或网络带宽收费,但 Cloud Firestore 主要根据您执行的操作次数收费。这会更好,还是更糟?这取决于您的应用。
对于为新闻应用程序、回合制多人游戏或类似您自己的 Stack Overflow 版本提供支持,从定价的角度来看,Cloud Firestore 可能看起来非常有利。对于像实时群组绘图应用程序这样的应用程序,您在一秒钟内向多人发送多个更新,它可能会比实时数据库更昂贵。
为什么您仍然希望使用实时数据库 -- 这归结为几个原因。
-
我之前提到的整个“对于频繁更新的应用来说可能会更便宜”,
-
它已经存在了很长时间,并且经过了数千个应用程序的实战测试,
-
它有更好的延迟,当您需要具有可靠低延迟的东西以获得实时感觉时,实时数据库可能会更好地工作。
对于大多数新应用,我们建议您查看 Cloud Firestore。但是,如果您的应用程序已经在实时数据库中,我真的不建议仅仅为了切换而切换,除非您有令人信服的理由这样做。
希望有帮助!