ストレージ サイズの計算

このページでは、Firestore のドキュメント、ドキュメント名、フィールド、およびインデックス エントリのストレージ サイズについて説明します。

Firestore の料金で、このストレージの費用について説明しています。

文字列のサイズ

文字列のサイズは、UTF-8 でエンコードされたバイト数 + 1 の値として計算されます。

以下は、文字列として保存されます。

  • コレクション ID
  • 文字列ドキュメント ID
  • ドキュメント名
  • フィールド名
  • 文字列フィールドの値

次に例を示します。

  • コレクション ID tasks には、5 バイト + 1 バイト、合計 6 バイトが使用されます。
  • フィールド名 description には 11 バイト + 1 バイト、合計 12 バイトが使用されます。

ドキュメント ID のサイズ

ドキュメント ID のサイズは、文字列 ID の場合は文字列のサイズ、整数 ID の場合は 8 バイトです。

ドキュメント名のサイズ

ドキュメント名のサイズは、以下の値の合計です。

  • ドキュメントのパスにある各コレクション ID およびドキュメント ID のサイズ
  • 追加の 16 バイト

サブコレクション users/jeff/tasks にあり、文字列ドキュメント ID が my_task_id であるドキュメントの場合、ドキュメント名のサイズは 6 + 5 + 6 + 11 + 16 = 44 バイトです。

  • users コレクション ID に 6 バイト
  • jeff ドキュメント ID に 5 バイト
  • tasks コレクション ID に 6 バイト
  • my_task_id ドキュメント ID に 11 バイト
  • 追加の 16 バイト

フィールド値のサイズ

次の表に、フィールド値のサイズを型別に示します。

タイプ サイズ
配列 各値のサイズの合計
ブール値 1 バイト
バイト バイト長
日時 8 バイト
浮動小数点数 8 バイト
地理的座標 16 バイト
整数 8 バイト
地図 ドキュメントのサイズと同じ方法で計算されたマップのサイズ
Null 1 バイト
リファレンス ドキュメント名のサイズ
テキスト文字列 UTF-8 でエンコードされたバイト数 + 1
Vector ディメンションあたり 8 バイト

たとえば、done という名前のブール値フィールドは 6 バイトを使用します。

  • done フィールド名に 5 バイト
  • ブール値に 1 バイト

ドキュメントのサイズ

ドキュメントのサイズは以下の合計値となります。

次に、サブコレクション users/jeff/tasks にあり、文字列ドキュメント ID が my_task_id であるドキュメントの例を示します。

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

フィールドの合計サイズは 71 バイトです。

フィールド名と値 フィールドのサイズ(バイト)
"type": "Personal" 14
フィールド名 5 + フィールドの文字列値 9
"done": false 6
フィールド名 5 + フィールドのブール値 1
"priority": 1 17
フィールド名 9 + フィールドの整数値 8
"description": "Learn Cloud Firestore" 34
フィールド名 12 + フィールドの文字列値 22

この結果、ドキュメントのサイズは 44 + 71 + 32 = 147 バイトとなります。

  • ドキュメント名に 44 バイト
  • フィールドに 71 バイト
  • 追加の 32 バイト

インデックス エントリのサイズ

単一フィールド インデックスと複合インデックスの場合、インデックス エントリのサイズは次のように計算されます。

単一フィールド インデックス エントリのサイズ

単一フィールド インデックス エントリのサイズは、インデックスがコレクションかコレクション グループのどちらをスコープとするかによって異なります。

コレクションのスコープ

コレクションのスコープを使用する単一フィールド インデックスのエントリのサイズは、以下の合計値となります。

サブコレクション users/jeff/tasks にあり、文字列ドキュメント ID が my_task_id であるドキュメントについて考えてみます。

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

done フィールドをインデックス登録するコレクションのスコープを使用する単一フィールド インデックスの場合、このインデックスのエントリの合計サイズは 109 バイトです。

  • ドキュメント名 users/jeff/tasks/my_task_id に 44 バイト
  • 親ドキュメントのドキュメント名 users/jeff に 27 バイト
  • done フィールド名に 5 バイト
  • ブール値フィールドの値に 1 バイト
  • 追加の 32 バイト

コレクション グループのスコープ

コレクション グループのスコープを使用する単一フィールド インデックスのエントリのサイズは、以下の合計値となります。

サブコレクション users/jeff/tasks にあり、文字列ドキュメント ID が my_task_id であるドキュメントについて考えてみます。

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

done フィールドをインデックス登録するコレクションのスコープを使用する単一フィールド インデックスの場合、このインデックスのエントリの合計サイズは 98 バイトです。

  • ドキュメント名 users/jeff/tasks/my_task_id に 44 バイト
  • done フィールド名に 5 バイト
  • ブール値フィールドの値に 1 バイト
  • 追加の 48 バイト

複合インデックス エントリのサイズ

複合インデックス内のエントリのサイズは、インデックスがコレクションかコレクション グループのどちらをスコープとするかによって異なります。

コレクションのスコープ

コレクション スコープを使用する複合インデックス内のインデックス エントリのサイズは、以下の合計値となります。

サブコレクション users/jeff/tasks にあり、文字列ドキュメント ID が my_task_id であるドキュメントについて考えてみます。

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

done フィールドと priority フィールド(どちらも昇順)をインデックス登録するコレクションのスコープが使用されている複合インデックスの場合、このインデックスのエントリの合計サイズは 112 バイトになります。

  • ドキュメント名 users/jeff/tasks/my_task_id に 44 バイト
  • 親ドキュメントのドキュメント名 users/jeff に 27 バイト
  • ブール値フィールドの値に 1 バイト
  • 整数フィールド値に 8 バイト
  • 追加の 32 バイト

コレクション グループのスコープ

コレクション グループのスコープを使用する複合インデックス内のインデックス エントリのサイズは、以下の合計値となります。

サブコレクション users/jeff/tasks にあり、文字列ドキュメント ID が my_task_id であるドキュメントについて考えてみます。

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

done フィールドと priority フィールド(どちらも昇順)をインデックス登録するコレクションのスコープが使用されている複合インデックスの場合、このインデックスのエントリの合計サイズは 85 バイトになります。

  • ドキュメント名 users/jeff/tasks/my_task_id に 44 バイト
  • ブール値フィールドの値に 1 バイト
  • 整数フィールド値に 8 バイト
  • 追加の 32 バイト

次のステップ

Firestore の料金を確認する。