Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

ストレージ サイズの計算

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

Cloud 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

たとえば、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 バイト

次のステップ

Cloud Firestore の料金について理解する。