Firestore 价格

本文档介绍 Firestore 的价格详情。

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

价格概览

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

  • 读取、写入和删除的文档数量
  • 为满足查询要求而读取的索引条目数详细了解索引读取
  • 数据库使用的存储空间容量,包括元数据和索引的开销。
  • 网络带宽使用量

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

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

免费配额

Firestore 提供了一定的免费配额,让您可以 (default) 数据库的免费配额。免费配额数量如下所示。 如果您需要更多配额,则必须为 Google Cloud 项目启用结算功能

配额按日计算,并会在美国太平洋时间零点重置。

只有 (default) 数据库有资格使用免费配额。

免费层级 配额
数据存储 1 GiB
文档读取 每天 50000 次
文档写入 每天 20000 次
文档删除 每天 20000 次
出站数据传输 每月 10 GiB

以下操作和功能不包括免费使用量。您必须启用结算功能才能使用这些功能:

  • 使用命名(非默认)数据库
  • TTL 删除
  • PITR 数据
  • 备份数据
  • 恢复操作

如需详细了解这些功能的结算方式,请参阅存储价格

不同位置的价格

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

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

命名数据库没有免费配额

如需创建命名(非默认)数据库,您必须启用结算功能。

创建或删除命名数据库不会产生额外费用,但这些数据库不符合免费配额的条件。相反,您需要为这些命名数据库产生的用量付费。

读取、写入和删除

您需要支付为满足查询要求而产生的文档和索引条目读取费用。您需要为执行的每次文档写入和删除操作支付费用。

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

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

索引条目读取

对于查询所读取的每批不超过 1,000 个索引条目,系统都会收取相当于一次读取操作的费用,但以下情况除外:

  • K 最近邻向量搜索查询中,对于查询所读取的每批不超过 100 个 kNN 向量索引条目,系统都会收取相当于一次读取操作的费用。

    例如,如果下面具有 limit: 5 限制的向量搜索查询返回了 5 个文档并读取了 1,550 个 kNN 向量索引条目,则您需要为返回的文档支付 5 次读取操作的费用并为读取的索引条目支付 16 次读取操作的费用:

    // Requires single-field vector index
    const vectorQuery: VectorQuery = db.collection('cities').findNearest('embedding_field', FieldValue.vector([3.0, 1.0, 2.0]), {
      limit: 5,
      distanceMeasure: 'EUCLIDEAN'
    });
    
  • 不超过一个范围字段的查询不会产生索引条目读取费用。

    例如,下面的查询包含一个等式字段 (age) 和一个范围字段 (start_date),该查询就不会产生索引条目读取费用:

    db.collection("employees").whereEqualTo("age", 35)
                              .whereGreaterThanOrEqualTo("start_date", new Date(2020, 1, 1))
    

    下面的查询包含两个范围字段(agestart_date),该查询就会产生索引条目读取费用:

    db.collection("employees").whereGreaterThanOrEqualTo("age", 35)
                              .whereGreaterThanOrEqualTo("start_date", new Date(2020, 1, 1))
    

    如果查询中至少有一个其他范围字段,“排序依据”子句中的字段便会被视为是范围字段。因此,下面的查询包含两个范围字段(agestart_date),且该查询会产生索引条目读取费用:

    db.collection("employees").whereGreaterThanOrEqualTo("age", 35)
                              .orderBy("start_date")
    

    __name__ 字段始终会被视为是范围字段,即使该字段仅用在等式过滤条件中也是如此。因此,下面的查询包含两个范围字段(age__name__),且该查询会产生索引条目读取费用:

    db.collection("employees").whereIn("__name__", Arrays.asList("/employees/Alice", "/employees/Bob"))
                              .orderBy("age")
    

聚合查询

对于聚合查询(例如,count()sum()avg()),您需要按上述规定为查询支付索引条目读取费用。对于读取 0 个索引条目的聚合查询,系统会收取相当于一次文档读取的最低费用。

例如,如果 count() 操作读取 0 至 1,000 个索引条目,则系统会收取相当于一次文档读取的费用;如果 count() 操作读取 1,500 个索引条目,则系统会收取相当于两次文档读取的费用。

您可以使用查询解释详细了解所用索引和所读取的索引条目。

监听查询结果

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

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

移动 SDK 和 Web SDK 中的监听器的结算还取决于是否启用了离线持久化

  • 如果启用了离线持久化,则在监听器断开网络连接的时间超过 30 分钟(例如用户下线)后,您才需要支付文档和索引条目读取费用,就像您进行了全新查询一样。

  • 但如果停用离线持久化,则只要监听器断开网络连接并进行重新连接,您便需要支付文档和索引条目读取费用,就好像进行全新查询一样。

管理大型结果集

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

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

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

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

文档读取以外的查询

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

查询的最低费用

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

Firestore 安全规则

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

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

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

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

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

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

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

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

数据库存储空间大小

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

存储在 Firestore 中的每个文档都需要以下元数据:

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

存储费用以 GiB/月为单位,每天计算一次。Firestore 每天测量数据库大小。在一个月内,系统会计算这些样本点的平均值,以计算数据库存储空间大小。此平均值乘以存储空间(GiB-月)的单价

如需了解如何计算 Firestore 的存储空间使用量,请参阅存储空间大小 计算

PITR 数据

如果启用 PITR,您需要支付 PITR 数据的存储费用。大多数客户会发现 PiTR 数据存储的总费用与数据库的存储费用类似。

PITR 的存储费用以 GiB/月为单位,每天计算一次。Firestore 每天都会测量数据库大小。在一个月内,系统会计算这些样本点的平均值,以计算数据库存储空间大小。此平均值乘以 PITR(GiB-月)的单价。

例如,如果数据库一个月的平均大小为 1 GiB,并且整个月都启用了 PITR,则计费 PITR 数据大小也是 1 GiB。

最低结算费用:即使您在启用后 1 天内停用了 PITR,系统也可能会向您收取最多 1 天的 PITR 存储费用。

备份数据和恢复操作

如果启用了备份功能,则需要支付数据库备份的存储费用。备份的存储空间大小与您进行备份时数据库的存储空间大小相同。

备份的存储费用以 GiB/月为单位。在一个月内,系统会计算每个备份的保留天数,还会计算一个月内的平均值。备份费用的计算方法是:备份的存储空间大小乘以备份保留月份的比例,再乘以单价。

在您执行恢复操作时,Firestore 会测量 恢复操作的备份大小。备份的大小乘以恢复操作 (GiB) 的单价。

查询解释

使用 Firestore 查询解释会产生费用。

如果您在使用查询解释时选择的是默认选项,系统不会执行任何索引读取操作。无论查询复杂程度如何,都只会收取一次读取操作的费用。

如果您在使用查询解释时选择的是分析选项,系统会相应执行索引和读取操作,因此您需要照常为查询付费。解释和分析活动不会产生额外费用,只会收取执行查询的常规费用。

网络带宽

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

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

了解在配置网络时 可以使用 Google Cloud 控制台导出您的 结算数据创建一个文件

常规网络流量价格

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

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

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

互联网数据传输速率

您需要为以下服务支付互联网数据传输费用:

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

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

监控使用情况

如需了解如何监控 Firestore 用量,请参阅 监控使用情况

管理支出

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

Google Cloud 预算和提醒

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

按照这些说明设置每月预算 在 Google Cloud 控制台中创建提醒。

价格示例

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

后续步骤

申请定制报价

Google Cloud 采用随用随付的价格模式,您只需为实际使用的服务付费。请与我们的销售团队联系,获取为贵组织量身定制的报价。
联系销售团队