本頁說明 Cloud Firestore 中文件、欄位和索引項目的儲存空間大小。
如要瞭解這個儲存空間的費用,請參閱「定價」頁面。
字串大小
字串大小的計算方式為 UTF-8 編碼位元組數 + 1。
以下均以字串形式儲存:
- 集合名稱
- 欄位名稱
- 字串欄位值 (包括
_id)
例如:
- 集合名稱
tasks使用 5 個位元組 + 1 個位元組,總共 6 個位元組。 - 欄位名稱
description使用 11 個位元組 + 1 個位元組,總共 12 個位元組。
欄位值大小
下表列出各類型的欄位值大小。
| 類型 | 大小 |
|---|---|
| 陣列 | 值的總大小 |
| 布林值 | 1 個位元組 |
| 二進位資料 | 非一般 (非 0) 子類型的位元組長度 + 1 |
| 日期 | 8 個位元組 |
| 雙人床 | 8 個位元組 |
| Double128 | 16 個位元組 |
| 32 位元整數 | 4 個位元組 |
| 64 位元整數 (長) | 8 個位元組 |
| 物件 | 內嵌物件中每個欄位名稱的字串大小總和,以及每個欄位值的大小 |
| Min Key | 1 個位元組 |
| Max 鍵 | 1 個位元組 |
| 空值 | 1 個位元組 |
| 規則運算式 | (模式長度 + 1) + (選項長度 + 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。
變更串流事件項目大小
變更串流事件的大小是下列項目的總和:
- 集合名稱字串大小的總和 (x2)。
- 文件的插入和更新事件:
- 如果適用於多文件交易,則
lsid和txnNumber會額外增加 24 個位元組。 - 92 個額外位元組
以下是 tasks 集合中文件的插入事件範例:
{
"_id": { <Resume Token> },
"operationType": "insert",
"clusterTime": <Timestamp>,
"wallTime": <ISODate>,
"ns": {
"db": "db",
"coll": "tasks"
},
"documentKey": {
"_id": "my_task_id"
},
"fullDocument": {
"_id": "my_task_id",
"description": "Learn Cloud Firestore"
},
}
變更串流事件的總大小為 149 個位元組:
- 92 個位元組用於一般中繼資料
- 12 個位元組,根據集合名稱
tasks(6 個位元組) * 2 _id欄位值:11 個位元組description欄位名稱:12 個位元組description欄位值:22 個位元組
文字搜尋索引項目大小
索引中文字搜尋索引項目的總大小,是下列各項的總和:
- 集合名稱的字串大小
_id值的大小- 已建立索引的欄位值位元組總和 (x2)
- 一般中繼資料額外 48 個位元組
以下範例說明 tasks 集合中 _id my_task_id 文件的插入事件:
{ "_id": "my_place", "type": "Restaurant", "visited": false, "priority": 1, "location": GeoPoint(longitude, latitude) }
description 上的文字搜尋索引項目總大小為 105 位元組,計算方式如下:
- 集合名稱
tasks占 6 個位元組 _id值為 11 個位元組- 44 個位元組,根據
description欄位的 22 個位元組 x2 計算 - 一般中繼資料額外 48 個位元組
地理空間索引項目大小
索引中地理空間索引項目的總大小,是下列各項的總和:
- 集合名稱的字串大小
_id值的大小- 每個已建立索引的地理位置點 128 位元組
- 一般中繼資料額外 48 個位元組
以下範例說明 places 集合中 _id my_place 文件的插入事件:
{ "_id": "my_place", "type": "Restaurant", "visited": false, "priority": 1, "location": GeoPoint(longitude, latitude) }
location 上地理空間索引項目的總大小為 192 個位元組,計算方式如下:
- 集合名稱
places占 7 個位元組 - 文件 ID 9 個位元組
location欄位:128 個位元組- 一般中繼資料額外 48 個位元組
後續步驟
瞭解定價。