儲存空間大小

本頁面說明 Cloud 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 個位元組
物件 內嵌物件中每個欄位名稱的字串大小,以及每個欄位值的字串大小總和
Min 鍵 1 個位元組
最高速金鑰 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 個 + 欄位的 32 位元整數值佔 4 個
"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 個位元組:

  • 集合名稱佔 6 個位元組 tasks
  • _id 欄位值佔 11 個位元組
  • 布林值欄位值佔 1 個位元組
  • 32 位元整數欄位值佔 4 個位元組
  • 額外 48 個位元組

如果是稀疏索引,如果文件未包含任何欄位,系統就不會建立索引項目。如果文件包含至少一個已建立索引的欄位,系統會建立索引項目,並將缺少的已建立索引欄位設為 NULL

變更串流事件項目大小

變更串流事件的大小是以下各項的總和:

  • 集合名稱的字串大小總和 (x2)。
  • 文件插入和更新事件:
    • fullDocumentupdateDescription 中每個欄位名稱的字串大小總和 (_id 除外)。
    • fullDocumentupdateDescription 中每個欄位值的大小總和。(包括 _id)。
  • 如果適用於多文件交易,lsidtxnNumber 額外需要 24 個位元組。
  • 92 個額外位元組

以工作集合中文件的插入事件為例:

{
  "_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 個位元組
  • 根據集合名稱 tasks (6 個位元組) * 2,共 12 個位元組
  • _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)
}

文字搜尋索引項目的總大小為 105 個位元組,計算依據如下:description

  • 集合名稱 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 個位元組

後續步驟

瞭解定價