ストレージ サイズの計算

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

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

文字列のサイズ

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

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

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

例:

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

ドキュメント名のサイズ

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

  • ドキュメント名の全文字列サイズ(各整数 ID は 8 バイト)
  • 追加の 16 バイト

コレクション Task の中の数値 ID を持つドキュメントの場合は、次のようになります。

Task id:5730082031140864

サイズは 5 + 8 + 16 = 29 バイトとなります。

  • Task コレクション ID に 5 バイト
  • 数値 ID に 8 バイト
  • 追加の 16 バイト

コレクション Task の中の文字列 ID を持つドキュメントの場合は、次のようになります。

Task name:my_task_id

サイズは 5 + 11 + 16 = 32 バイトとなります。

  • Task コレクション ID に 5 バイト
  • my_task_id 文字列 ID に 11 バイト
  • 追加の 16 バイト

フィールド サイズ

フィールドのサイズは以下の合計値となります。

  • フィールド名の文字列サイズ
  • フィールド値のサイズ

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

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

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

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

ドキュメントのサイズ

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

次に、Task コレクションの中の数値 ID を持つドキュメントの例を示します。

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

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

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

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

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

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

インデックス エントリのサイズは、以下の合計値となります。

  • インデックス付きドキュメントのドキュメント名のサイズ
  • インデックス付きフィールド サイズの合計
  • インデックス付きドキュメントのコレクション ID のサイズ(インデックスが自動インデックスの場合。複合インデックスには適用されません)
  • 追加の 32 バイト

これはドキュメントのサイズに使用されたパターンと同じものですが、ドキュメントのすべてのフィールドを含める代わりに、インデックスに必要なフィールドだけが保存されています。また、インデックス エントリのサイズが 1,500 バイトを超えることはありません。

たとえば、上記の例と同じドキュメントを使用すると次のようになります。

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

done がインデックス付きフィールドの場合、単一フィールド done のインデックスの自動インデックス エントリは、ドキュメント名、done フィールド名と値、Task コレクション ID、およびインデックス エントリの 32 バイトで構成されます。つまり、このインデックス エントリの合計サイズは 72 バイトです。

  • ドキュメント名に 29 バイト
  • done フィールド名とブール値に 6 バイト
  • Task コレクション ID に 5 バイト
  • 追加の 32 バイト

デフォルトでは、Cloud Firestore は各ドキュメントの各フィールドに、2 つの単一フィールド インデックスを自動的に事前定義します。これらのインデックスの 1 つは昇順、もう 1 つは降順です。したがってこのドキュメントの場合、単一フィールド done の昇順用インデックスに 72 バイトのインデックス エントリ、単一フィールド done の降順用インデックスに 72 バイトのインデックス エントリが含まれています。

同じドキュメントで、done フィールドと priority フィールド(どちらも昇順)を使用する複合インデックスについて考えてみます。このインデックスのインデックス エントリの合計サイズは 84 バイトです。

  • ドキュメント名に 29 バイト
  • done フィールド名とブール値に 6 バイト
  • priority フィールド名と整数値に 17 バイト
  • 追加の 32 バイト

次のステップ

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

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。