价格

本文档介绍 Firestore 的价格详情。此外还会介绍如何限制和监控您的 Firestore 支出。

如果您使用非美元货币付费,请参阅 Cloud Platform SKU 上以您的币种列出的价格。

价格概览

使用 Firestore 时,您需要为以下各项支付费用:

  • 您执行的读取、写入和删除操作的次数
  • 您的数据库的存储空间使用量,包括元数据和索引的开销。
  • 您的网络带宽使用量

存储空间和带宽使用量是以千兆字节 (GiB) 为单位计算的,其中 1 GiB = 230 个字节。所有费用每天进行累计。

以下部分详细介绍了 Firestore 使用量的收费方式。

不同位置的价格

下表列出了各个 Firestore 位置的读取、写入、删除和存储操作价格:

如果您使用非美元货币付费,请参阅 Cloud Platform SKU 上以您的币种列出的价格。

读取、写入和删除

您需要为使用 Firestore 执行的每次文档读取、写入和删除操作支付费用。

写入和删除操作的收费方式简单明了。对于写入操作,每个 setupdate 操作计为一次写入。

但是读取操作的收费方式有一些您应该注意的细节。以下部分详细介绍了这些细节。

监听查询结果

Firestore 可让您监听查询结果,并且在查询结果发生更改时获得实时更新。

当您监听查询的结果时,每次结果集内添加或更新了文档,您都需要支付读取费用。当从结果集中移除某个文档时,您同样需要支付读取费用,因为该文档已经发生了更改。(但如果某个文档被删除,您不需要支付读取费用)。

另外,如果监听器断开网络连接的时间超过 30 分钟(例如,用户离线),您也需要支付读取费用,就好像您进行了一次全新的查询。

管理大型结果集

Firestore 有几项功能可以帮助您管理会返回大量结果的查询:

  • 游标:可让您继续执行某个运行时间较长的查询。
  • 页面标记:帮助您对查询结果进行分页。
  • 限制:指定要检索多少条结果。
  • 偏移:可让您跳过一定数量的文档。

使用游标、页面标记和限制时没有额外的费用。不仅如此,这些功能只会读取您实际需要的文档,因此还可以帮助您节省费用。

但是,当您发送包含偏移的查询时,对于每个跳过的文档,您仍需要支付读取费用。例如,如果您的查询使用的偏移为 10,并且该查询返回 1 个文档,则您一共需要支付 11 次读取操作的费用。由于存在这笔额外费用,您应该尽可能使用游标,而不是偏移。

文档读取以外的查询

对于文档读取以外的其他查询,例如请求一个集合 ID 列表,您需要支付一次文档读取的费用。如果获取完整的结果集需要发出多个请求(例如,如果您使用了分页功能),则每个请求都会单独计费。

查询的最低费用

即使查询没有返回任何结果,对于您执行的每个查询,系统都会收取相当于一次文档读取的最低费用。

Firestore 安全规则

对于移动和 Web 客户端库,如果您的 Firestore 安全规则使用 exists()get()getAfter() 从数据库中读取一个或多个文档,那么您需要支付如下额外读取费用:

  • 您需要为评估您的 Firestore 安全规则所需的读取操作支付费用。

    例如,如果您的规则引用了三个文档,但 Firestore 只需要读取其中两个文档来评估您的规则,那么您将需要为相关文档的两次额外读取操作支付费用。

    即使您的规则不止一次地引用某个文档,对于该文档您也只需要支付一次读取操作的费用。

  • 您只需为每个请求支付一次规则评估费用。

    因此,一次读取多个文档可能比每次读取一个文档的费用要少,因为读取多个文档需要的请求数更少。

  • 当您监听查询的结果时,在下列所有情况下您都需要支付规则评估费用:

    • 每当您发出查询时。
    • 每当查询结果发生更新时。
    • 每当用户的设备离线然后又重新连线时。
    • 每当您更新自己的规则时。
    • 每当您更新规则中的相关文档时。

存储空间使用量

您需要为您在 Firestore 中存储的数据量支付费用,包括相关存储开销。存储开销包括元数据、自动索引和复合索引。Firestore 中存储的每个文档都需要以下元数据:

  • 文档 ID,包括集合 ID 和文档名称。
  • 每个字段的名称和值。Firestore 是无架构的,因此文档中每个字段的名称必须与字段值一起存储。
  • 引用了该文档的任何单字段索引和复合索引。每个索引条目都包含集合 ID、任意数量的字段值(具体取决于索引定义)以及文档名称。

如需了解如何计算 Firestore 的存储空间使用量,请参阅存储空间大小的计算。您可以访问 Cloud Console 中的 App Engine 配额详细信息页面,查看您数据库的存储空间使用量。

网络带宽

您需要为 Firestore 请求所使用的网络带宽支付费用,如以下部分中所示。Firestore 请求的网络带宽费用取决于请求的响应大小、您的 Firestore 数据库的位置和响应的目标位置。

Firestore 会根据序列化消息格式计算响应大小。协议开销(如 SSL 开销)不计入网络带宽使用量。Firestore 安全规则拒绝的请求不计入网络带宽使用量。

如需了解您使用了多少网络带宽,可以使用 Cloud Console 将结算数据导出为文件

常规网络流量价格

对于源自 Google Cloud Platform(例如,来自在 Google Compute Engine 上运行的应用)的请求,我们按如下标准向您收取费用:

流量类型 价格
入站流量 免费
一个地区内的出站流量 免费
同一多地区内不同地区之间的出站流量 免费
美国境内不同地区之间的出站流量(每 GiB) $0.01(每个月前 10 GiB 免费)
不同地区之间的出站流量(不包括美国境内不同地区之间的流量) Google Cloud Platform 互联网出站流量费率

如果您使用非美元货币付费,请参阅 Cloud Platform SKU 上以您的币种列出的价格。

互联网出站流量费率

您需要支付以下互联网出站流量费用:

  • 不同地区之间的 Google Cloud 请求(不包括美国境内不同地区之间的流量)
  • 来自 Google Cloud 以外(例如来自用户的移动设备)的请求

监控使用情况

您可以在“App Engine 配额”页面中查看每天的 Firestore 使用情况:

转到“配额”页面

管理支出

如需管理支出,请设置每月预算和提醒。

Google Cloud 预算和提醒

Google Cloud 允许您为所有 Google Cloud 服务设置每月预算。您可以使用每月预算来监控 Google Cloud 的总体费用,包括 Firestore 的网络带宽费用。设置预算后,您可以设置提醒,以便在费用接近预算时收到电子邮件通知。

计入 App Engine 支出限额的费用也会计入每月预算。

按照这些说明在 Cloud Console 中设置每月预算并创建提醒。

App Engine 支出限额

App Engine 允许您为 App Engine 及其相关资源(包括 Datastore 和 Firestore 数据库)设置每日支出限额。限额是近似值,应该设置得足够大,以应对资源使用高峰。当您超出每日支出限额后,所有不在免费配额范围内的 Firestore 操作都将失败。

价格示例

如需了解在实际示例应用中 Firestore 结算费用如何累计,请参阅 Firestore 结算示例