儲存空間大小

本頁說明 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 個額外位元組

索引項目大小

索引中索引項目的總大小為下列各項的總和:

  • 集合名稱的字串大小
  • _id 欄位值的大小
  • 已建立索引的欄位值總和
  • 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)。
  • 文件的插入和更新事件:
    • fullDocument 或 updateDescription (_id 除外) 中每個欄位名稱的字串大小總和。
    • fullDocument 或 updateDescription 中每個欄位值的大小總和。(包括 _id)。
  • 如果適用於多文件交易,則 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 個位元組

後續步驟

瞭解定價。