存储空间大小的计算

本页介绍了 Firestore(MongoDB 兼容版)中文档、字段和索引条目所占的存储空间大小。

您可以参阅 Firestore 企业版价格,了解此类存储的费用。

字符串大小

字符串大小的计算方式为 UTF-8 编码字节数 + 1。

以下各项以字符串形式存储:

  • 集合名称
  • 字段名称
  • 字符串字段值(包括 _id

例如:

  • 集合名称 tasks 使用 5 个字节 + 1 个字节,总计 6 个字节。
  • 字段名称 description 使用 11 个字节 + 1 个字节,总计 12 个字节。

字段值大小

下表显示了各种类型的字段值的大小。

类型 大小
数组 数组中各个值所占存储空间大小的总和
布尔值 1 个字节
二进制数据 对于非泛型(非 0)子类型,为字节长度 + 1
日期 8 个字节
双精度型 8 个字节
Double128 16 个字节
32 位整数 4 个字节
64 位整数 (long) 8 个字节
对象 嵌入对象中每个字段名称的字符串大小和每个字段值的大小的总和
最小键 1 个字节
最大键 1 个字节
1 个字节
正则表达式 (Pattern length + 1) + (Options length + 1)
时间戳 8 个字节
字符串 UTF-8 编码字节数 + 1

例如,名称为 done 的布尔值字段将使用 6 个字节:

  • done 字段名称为 5 个字节
  • 布尔值为 1 个字节

文档大小

文档的大小是以下各项相加的总和:

以下示例针对的是集合 tasks 中的文档:

{
  "_id": "my_task_id",
  "type": "Personal",
  "done": false,
  "priority": 1,
  "description": "Learn Cloud Firestore"
}

这些字段的总大小为 78 个字节:

字段名称和值 字段大小(以字节为单位)
"_id": "my_task_id" 11(字段的字符串值)
"type": "Personal" 14
5(字段名称)+ 9(字段的字符串值)
"done": false 6
5(字段名称)+ 1(字段的布尔值)
"priority": 1 17
9(字段名称)+ 4(字段的 32 位整数值)
"description": "Learn Cloud Firestore" 34
12(字段名称)+ 22(字段的字符串值)

因此,文档大小为 6 + 78 + 48 = 132 个字节:

  • 6 表示合集名称
  • 所有字段一共 78 个字节
  • 额外 48 个字节

索引条目大小

索引中的索引条目的大小是以下各项相加的总和:

假设 tasks 集合中有以下文档:

{
  "_id": "my_task_id",
  "type": "Personal",
  "done": false,
  "priority": 1,
  "description": "Learn Cloud Firestore"
}

对于对 donepriority 字段(均按升序排列)的索引,其中条目的总大小为 70 个字节:

  • 集合名称 tasks 为 6 个字节
  • _id 字段值为 11 个字节
  • 布尔字段值为 1 个字节
  • 32 位整数字段值为 4 个字节
  • 额外 48 个字节

对于稀疏索引,如果文档不包含任何字段,则不会创建任何索引条目。如果文档包含至少一个索引字段,系统会创建一个索引条目,并将缺少的索引字段设置为 NULL

后续步骤

了解 Firestore 企业版价格