ไปที่คอนโซล

选择数据库:Cloud Firestore 或实时数据库

Firebase 提供了两种支持实时数据同步且可通过客户端访问的云数据库解决方案:

  • 实时数据库是 Firebase 的原有数据库。对于需要在客户端之间实时同步状态的移动应用,这是一种高效、低延迟的解决方案。
  • Cloud Firestore 是 Firebase 用于移动应用开发的最新旗舰数据库。它具备更直观的新数据模型,在实时数据库的成功基础上更上一层楼。与实时数据库相比,Cloud Firestore 还提供了更丰富、更快速的查询以及更好的扩展功能。

哪个数据库适合您的项目?

我们建议大多数开发新项目的开发者使用 Cloud Firestore。Cloud Firestore 可提供更多的功能、更高的性能以及扩缩能力,其基础架构可支持在未来版本中开发更强大的功能。今后,我们将为 Cloud Firestore 推出新的查询类型、更可靠的安全规则以及其他高级功能,并改进其性能。

选择数据库解决方案时,请考虑 Cloud Firestore 和实时数据库之间的以下不同点。

数据模型

实时数据库和 Cloud Firestore 都是 NoSQL 数据库。

实时数据库 Cloud Firestore
将数据存储为一个大型 JSON 树。
  • 简单数据极易存储。
  • 复杂的分层数据较难大规模组织。

了解有关实时数据库数据模型的更多信息。

将数据存储在按集合组织的文档中。
  • 简单数据很容易存储在文档中,这点与 JSON 非常相似。
  • 通过在文档中使用子集合,复杂的分层数据较易于大规模组织。
  • 反规范化和数据平展方面的需求更少。

了解有关 Cloud Firestore 数据模型的更多信息。

实时和离线支持

两者都具有移动优先的实时 SDK,并且都支持离线就绪应用的本地数据存储。

实时数据库 Cloud Firestore
仅 iOS 和 Android 上的移动客户端具有离线支持功能。 为 iOS、Android 和网页客户端提供离线支持。

查询

通过查询从数据库检索、排序和过滤数据。

实时数据库 Cloud Firestore
借助有限的排序和过滤功能进行深度查询。
  • 在单个查询中,您只能对某个属性进行排序或过滤,而不能对该属性同时进行排序和过滤
  • 默认情况下会深入查询:查询总是返回整个子树。
借助复合排序和过滤功能进行索引查询。
  • 您可以链接多个过滤条件,并在单个查询中对属性同时进行过滤和排序操作。
  • 为子集合编写浅查询:您可以查询文档中的子集合,而不是查询整个集合,甚至整个文档。
  • 默认情况下会为查询编制索引:查询性能与结果集的大小(而不是与数据集的大小)成比例。

写入和事务

实时数据库 Cloud Firestore
基本写入和事务操作。
  • 以单个操作的形式写入数据
  • 原生 SDK 中的事务要求使用完成回调函数。
原子写入和事务操作。
  • 批量操作并以原子方式完成这些操作。
  • 事务会自动重复执行,直到完成为止。

可靠性和性能

实时数据库 Cloud Firestore
实时数据库是一种单区域解决方案。
  • 极低的延迟,因此它是频繁同步状态的绝佳选择。
  • 数据库仅限于在单个区域中可用。
请在服务等级协议中阅读有关实时数据库性能和可靠性特性的更多信息。
Cloud Firestore 是一种可自动扩缩的多区域解决方案。
  • 将数据放在位于不同区域的多个数据中心,确保全球可扩展性和强大的可靠性。
  • 提供 Google Cloud Platform 所具有的稳定性和可靠性。
如需详细了解 Cloud Firestore 性能和可靠性特性,请参阅服务等级协议

扩容

实时数据库 Cloud Firestore
扩展需要分片。

在单个数据库中扩展到约 100000 个并发连接和 1000 次写入/秒。如果超出此范围,需要将数据分片到多个数据库。

自动扩容。

扩容完全自动。目前,扩容限制大约是 100 万个并发连接和 1 万次写入/秒。我们未来计划提高这些限制。

安全

实时数据库 Cloud Firestore
需要单独验证的级联规则。 为移动 SDK、网页 SDK 和服务器 SDK 提供更简单、更强大的安全保障。
  • 移动 SDK 和网页 SDK 使用 Cloud Firestore 安全规则。 服务器 SDK 使用 Identity and Access Management (IAM)
  • 规则不会进行级联,除非您使用通配符。
  • 自动进行数据验证。
  • 规则可以限制查询:如果某个查询返回的结果可能包含用户无权访问的数据,则整个查询都会失败。

价格

这两种解决方案都可在 Spark、Flame 和 Blaze 定价方案中获得。

实时数据库 Cloud Firestore
仅对带宽和存储收费,但费率较高。

请阅读有关实时数据库定价方案的更多信息。

主要针对在数据库中执行的操作(读取、写入、删除)收费,并以较低的费率对带宽和存储收费。

Cloud Firestore 支持对 Google App Engine 项目设置每日支出限额,确保不会超出您能接受的费用水平。

请阅读有关 Cloud Firestore 定价方案的更多信息。

使用 Cloud Firestore 和实时数据库

您可以在同一个 Firebase 应用或项目中同时使用这两种数据库。这两种 NoSQL 数据库可以存储相同类型的数据,客户端库的工作方式也相似。如果您决定在应用中同时使用这两种数据库,请注意数据库之间的上述差异。

详细了解实时数据库Cloud Firestore 中的可用功能。