存储空间大小的计算

本页面介绍了 Cloud Firestore 中文档、文档名称、字段和索引条目所占的存储空间大小。

您可以参阅 Cloud Firestore 定价,了解此类存储的费用。

字符串大小

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

以下内容是以字符串形式存储的:

  • 文档名称
  • 集合 ID
  • 字段名称
  • 字符串字段的值

例如:

  • Task 这个集合 ID 使用了 4 个字节 + 1 个字节,总计 5 个字节。
  • description 这个字段名称使用了 11 个字节 + 1 个字节,总计 12 个字节。

文档名称大小

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

  • 文档名称的完整字符串大小(每个整数 ID 占 8 个字节)
  • 额外 16 个字节

对于名为 Task 的集合中具有以下数值 ID 的文档:

Task id:5730082031140864

大小是 5 + 8 + 16 = 29 个字节:

  • Task 集合 ID 为 5 个字节
  • 数值 ID 为 8 个字节
  • 额外 16 个字节

对于名为 Task 的集合中具有以下字符串 ID 的文档:

Task name:my_task_id

大小是 5 + 11 + 16 = 32 个字节:

  • Task 集合 ID 为 5 个字节
  • my_task_id 字符串 ID 为 11 个字节
  • 额外 16 个字节

字段大小

字段的大小是以下各项相加的总和:

  • 字段名称的字符串大小
  • 字段值的大小

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

类型 大小
数组 数组中各个值所占存储空间大小的总和
布尔值 1 个字节
字节 字节长度
日期和时间 8 个字节
浮点数 8 个字节
地理位置点 16 个字节
整数 8 个字节
Map map 大小的计算方式与文档大小相同
Null 1 个字节
引用 文档名称大小
文本字符串 UTF-8 编码字节数 + 1

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

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

文档大小

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

以下示例中的文档位于 Task 集合中,且具有如下数值 ID:

Task id:5730082031140864
 - "type": "Personal"
 - "done": false
 - "priority": 1
 - "description": "Learn Cloud Firestore"

这些字段的总大小是 70 个字节:

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

所以文档大小是 29 + 70 + 32 = 131 个字节:

  • 文档名称为 29 个字节
  • 所有字段一共 70 个字节
  • 额外 32 个字节

索引条目大小

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

  • 已编入索引的文档的文档名称大小
  • 已编入索引的字段大小的总和
  • 已编入索引的文档的集合 ID 大小(如果索引是自动索引)(不适用于复合索引)
  • 额外 32 个字节

这与计算文档大小的方式相同,但不同之处在于:索引条目并没有将文档的所有字段都包括在内,而是只存储索引需要的那些字段。另外,索引条目的大小绝对不会超过 1500 个字节。

还是上例中的那个文档:

Task id:5730082031140864
 - "type": "Personal"
 - "done": false
 - "priority": 1
 - "description": "Learn Cloud Firestore"

如果 done 是编入索引的字段,则单字段 done 索引中的自动索引条目将由文档名称、done 字段名称和值、Task 集合 ID 以及索引条目的额外 32 个字节组成。此索引条目的总大小是 72 个字节:

  • 文档名称为 29 个字节
  • done 字段名称和布尔值为 6 个字节
  • Task 集合 ID 为 5 个字节
  • 额外 32 个字节

默认情况下,Cloud Firestore 会自动为每个文档的每个字段预定义两个单字段索引,一个按升序排列,另一个按降序排列。所以这个文档在按升序排列的单字段 done 索引中有一个 72 字节的索引条目,并且在按降序排列的单字段 done 索引中也有一个 72 字节的索引条目。

以同一个文档为例,请思考一下同时使用 donepriority 字段(均为升序)的复合索引的大小。此索引中索引条目的总大小是 84 个字节:

  • 文档名称为 29 个字节
  • done 字段名称和布尔值为 6 个字节
  • priority 字段名称和整数值为 17 个字节
  • 额外 32 个字节

后续步骤

了解 Cloud Firestore 定价

发送以下问题的反馈:

此网页
需要帮助?请访问我们的支持页面