Firestore vs. 实时数据库

17 Mar 2025 | 5 分钟阅读

对于任何应用程序的开发,如桌面、移动和网络,数据库是我们的必备条件,用于存储数据。我们需要存储,以便我们能够以每个应用程序都可以访问相同数据的方式存储和操作数据。Firebase 提供了 Firestore 和 Firebase 实时数据库。这些数据库是基于云的、客户端可访问的数据库解决方案,支持实时数据同步。

云 Firestore

Firestore 是用于移动应用程序开发的最新数据库。云 Firestore 比实时数据库具有更丰富的功能、更快的查询速度和更强的扩展性。云 Firestore 是一个灵活且可扩展的 NoSQL 云数据库。它用于存储和同步客户端和服务器端开发的数据。它用于来自 Google Cloud Platform 和 Firebase 的移动、Web 和服务器开发。

实时数据库

它是 Firebase 的原始数据库。它是一个低延迟的解决方案,并且对于需要在客户端实时同步状态的移动应用程序非常有效。Firebase 实时数据库是一个云托管数据库,其中数据存储为 JSON 格式。数据会实时同步到每个连接的客户端。

Firebase vs Realtime Database

让我们了解一下 Firestore 和实时数据库之间的区别。

对于大多数开发人员来说,云 Firestore 是开始新项目的推荐数据库。云 Firestore 在基础设施上提供了额外的功能、性能和可扩展性,这些基础设施旨在支持未来版本中更强大的功能。希望看到更多强大的安全规则、新的查询类型和性能改进,这些都是为云 Firestore 采用的先进功能。我们可以根据以下因素来比较这两种数据库解决方案

Firebase vs Realtime Database

数据模型

Firestore 和 Firebase 实时数据库都是 NoSQL 数据库,这意味着无需创建表并定义模式。

实时数据库云 Firestore
在实时数据库中,数据存储为一个大型 JSON 树。在云 Firestore 中,数据存储为文档的集合。
数据很简单,因此非常容易存储。在文档中,简单的数据非常容易存储。文档非常类似于 JSON。
复杂的分层数据很难大规模组织。通过使用子集合,可以轻松地大规模组织复杂和分层的数据。
它需要非常少的反规范化和数据扁平化。

实时和离线支持

实时数据库和 Firestore 支持本地数据存储,用于离线就绪的应用程序,并具有实时 SDK。

实时数据库云 Firestore
离线支持 Android 和 iOS 客户端。离线支持 Android 和 iOS 客户端。

存在

存在状态对于了解客户端何时在线或离线非常有用。Firebase 实时数据库提供每当客户端的连接状态发生变化时都会记录客户端连接状态的更新。

实时数据库云 Firestore
实时数据库支持存在状态。Firestore 本身不支持存在状态。我们可以通过使用云函数同步云 Firestore 和 Firebase 实时数据库来利用实时数据库的帮助。

查询

通过查询从实时数据库或云 Firestore 检索、排序和过滤数据。

实时数据库云 Firestore
它允许我们执行具有有限的排序和过滤功能的深度查询。它允许我们执行带有复合排序和过滤的索引查询。
查询可以按属性进行排序或过滤,但不能同时进行。在云 Firestore 中,我们可以在一个查询中链接过滤器并将过滤和排序合并到属性中。
它默认具有深度查询,因此它始终返回整个子树。它具有浅层查询,因此这些查询返回特定集合或集合组中的文档。这些查询不返回子集合数据。
实时数据库查询可以访问 JSON 树中任意点的数据,直到单个叶节点值。云 Firestore 查询始终返回完整的文档。
这些查询不需要索引。但是,某些查询的性能会随着数据集的增长而降低。云 Firestore 查询默认被索引。查询的性能与结果集的大小成正比,而不是数据集的大小。

写入和事务

实时数据库云 Firestore
只能执行基本的写入和事务操作。它允许执行高级写入和事务操作。
在实时数据库中,数据通过 set 和 update 操作写入。在云 Firestore 中,数据通过 set 和 update 操作写入。借助高级转换,如数组和数值运算符,我们也可以写入数据。
在特定数据子树上,事务是原子的。可以从数据库的任何部分以原子方式读取和写入事务数据。

可靠性和性能

实时数据库云 Firestore
它是一个单区域解决方案。它是一个多区域解决方案,可自动扩展。
对于单个区域内的区域可用性,数据库是有限的。保护我们的数据跨越不同区域的多个数据中心,确保全球可扩展性和强大的可靠性。
极低的延迟,是频繁状态同步的理想选择。可在全球范围内的区域或多区域配置中使用。

可扩展性

实时数据库云 Firestore
需要分片才能扩展。在这里,扩展是自动的。
它大约可以扩展 200000 个并发连接,并且在单个数据库中每秒写入 1000 次。除此之外,需要将数据分成多个数据库。扩展是自动完成的。目前,它可以扩展到 100 万个并发连接,并且每秒写入 10000 次。这些限制将来可能会增加。
对于单个数据,对写入速率没有本地限制。它对单个文档或索引有限制。

安全性

实时数据库云 Firestore
它使用级联规则语言,该语言将授权和验证分开。它使用非级联规则,将授权和验证结合在一起。
通过实时数据库规则,从移动 SDK 进行的读取和写入是安全的。借助云 Firestore 安全规则,从服务器 SDK 进行的读取和写入是安全的。
读写规则是级联的。除非我们使用通配符,否则规则不会级联。
使用验证规则单独验证数据。这些规则可以约束查询。如果查询的结果可能包含数据,而用户不必访问它,则整个查询将失败。

价格

实时数据库云 Firestore
仅收取带宽和存储费用,但费率较高。主要执行我们数据库中的操作,并以低费率收取带宽和存储费用。