存储空间大小的计算
本页介绍了 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" }
对于对 done
和 priority
字段(均按升序排列)的索引,其中条目的总大小为 70 个字节:
- 集合名称
tasks
为 6 个字节 _id
字段值为 11 个字节- 布尔字段值为 1 个字节
- 32 位整数字段值为 4 个字节
- 额外 48 个字节
对于稀疏索引,如果文档不包含任何字段,则不会创建任何索引条目。如果文档包含至少一个索引字段,系统会创建一个索引条目,并将缺少的索引字段设置为 NULL
。
后续步骤
了解 Firestore 企业版价格。