原生模式:配额和限制

本页面介绍了以原生模式运行的 Cloud Firestore 的请求配额和企业版限制。

免费层级使用量

原生模式的 Cloud Firestore 提供免费层级,让您可以免费开始使用原生模式的 Cloud Firestore。下表列出了免费层级用量。

免费层级用量按日计算,并在美国太平洋时间零点重置。

对于免费层级,每个项目只能有一个 Cloud Firestore 数据库。在没有免费层级数据库的项目中创建的第一个数据库会获得免费层级。如果删除了应用免费层级的数据库,则下一个创建的数据库会获得免费层级。

免费层级 配额
数据存储 1 GiB
读取单位 每天 50000 次
实时更新单位 每天 50000 次
写入单位 每天 40,000 次
出站数据传输 每月 10 GiB

标准限制

下表显示了适用于原生模式 Cloud Firestore 的限额。除非另有说明,否则这些属于硬性限额。

数据库

限制 详细信息
每个项目的数据库数上限

100

您可以与支持团队联系,申请提高此限制。

每个项目的客户管理的加密密钥 (CMEK) 数据库数量上限

0

默认情况下,配额为 0,因为此功能仅限许可名单上的用户使用。您可以填写 CMEK 访问申请表单来申请增加配额。

集合、文档和字段

限制 详情
对于集合 ID 的限制
  • 必须是有效的 UTF-8 字符
  • 长度不能超过 1500 字节
  • 不能包含正斜杠 (/)
  • 不能只包含单个英文句点 (.) 或两个英文句点 (..)
  • 不能匹配正则表达式 __.*__
子集合的最大深度 100
对于文档 ID 的限制
  • 必须是有效的 UTF-8 字符
  • 长度不能超过 1500 字节
  • 不能包含正斜杠 (/)
  • 不能只包含单个英文句点 (.) 或两个英文句点 (..)
  • 不能匹配正则表达式 __.*__
  • 如果您将 Datastore 实体导入 Firestore 数据库,数字实体 ID 会显示为 __id[0-9]+__
文档名称的大小上限 6 KiB
文档的大小上限 1 MiB(1048576 字节)
对于字段名称的限制
  • 必须是有效的 UTF-8 字符
  • 不能匹配正则表达式 __.*__
字段名称的大小上限 1500 字节
对于字段路径的限制
  • 必须使用单个英文句点 (.) 来分隔字段名称
  • 可以作为点 (.) 分隔的段字符串传递,其中每个段要么是简单的字段名称,要么是带引号的字段名称(定义如下)。
简单的字段名称是指名称符合以下所有条件:
  • 仅包含字符 a-zA-Z0-9 和下划线 (_)
  • 开头不是 0-9
引用的字段名称以反引号字符 (`) 开头和结尾。例如,foo.`x&y` 是指嵌套在 foo 字段下的 x&y 字段。要使用反引号字符构造字段名称,请使用反斜杠字符 (\) 转义反引号字符。为方便起见,您可以将字段路径作为 FieldPath 对象进行传递以避免使用引号的字段名称(如需查看示例,请参阅 JavaScript FieldPath)。
字段路径的大小上限 1500 字节
字段值的大小上限 1 MiB - 89 字节(1048487 字节)
映射 (map) 或数组中字段的最大深度

20

映射和数组字段会向对象的总深度额外添加一层深度。例如,以下对象的总深度为三层:


{
  nested_map: {         #depth 1
    nested_array: [     #depth 2
      {
        foo: "bar"      #depth 3
      }
    ]
  }
}
      

写入和事务

限制 详细信息
API 请求的大小上限 10 MiB
事务的时间限制 270 秒,并具有 60 秒的空闲到期时间
在一项 Commit 操作或一项事务中,可以对单个文档执行的字段转换操作最大数量 500

索引

限制 详细信息
数据库的索引数量上限

每个文档的索引条目数量上限

40000

索引中的字段数上限 100
索引条目的大小上限

7.5 KiB

一个文档的索引条目的大小总和上限

8 MiB

存留时间 (TTL)

限制 详情
数据库单字段配置的数量上限
  • 200(如果尚未为 Google Cloud 项目启用结算功能)。

    如果您需要更多配额,则必须Google Cloud 项目启用结算功能

  • 1000(如果您为 Google Cloud 项目启用了结算功能)。

一个字段级配置可以包含同一字段的多个配置。例如,单字段索引例外项和针对同一字段的 TTL 政策将被视为一个字段配置计入限额。

导出/导入

以下限制适用于代管式导入和导出操作

限制 详情
一个项目每分钟允许的导出和导入请求总数上限 20
并发导出和导入的数量上限 50
导出和导入请求的集合 ID 过滤条件的数量上限 100

安全规则

限制 详细信息
每个请求调用 exists()get()getAfter() 的最大次数
  • 10 - 对于单文档请求和查询请求。
  • 20 - 对于多文档读取、事务和批量写入。前面的 10 次限制也适用于每个操作。

    例如,假设您创建了一个包含 3 次写入操作的批量写入请求,并且您的安全规则使用 2 次文档访问调用来验证每次写入。在此情况下,每次写入会使用 10 次访问调用限额中的 2 次调用,而批量写入请求则会使用 20 次访问调用限额中的 6 次调用。

超过任一限制都会导致权限被拒绝的错误。

某些文档访问调用可能会被缓存,缓存的调用不会计入限额。

嵌套 match 语句深度上限 10
在路径段中,可在一组嵌套 match 语句中使用的路径长度上限 100
可在一组嵌套 match 语句中使用的路径捕获变量数上限 20
函数调用深度上限 20
函数参数的数量上限 7
每个函数的 let 变量绑定数上限 10
递归或循环函数调用次数上限 0(不允许)
每个请求中评估的表达式数量上限 1000
规则集的大小上限 规则集必须符合以下两种大小限制:
  • 对于从 Firebase 控制台或使用 firebase deploy 从 CLI 发布的规则集文本源,其大小不得超过 256 KB。
  • 对于 Firebase 处理该源并在后端将其激活时生成的编译规则集,其大小不得超过 250 KB。