ストレージ サイズの計算

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

このストレージの費用については、Firestore Enterprise エディションの料金をご覧ください。

文字列のサイズ

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

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

  • コレクション名
  • フィールド名
  • 文字列フィールドの値(_id を含む)

次に例を示します。

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

フィールド値のサイズ

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

タイプ サイズ
配列 各値のサイズの合計
ブール値 1 バイト
バイナリデータ バイト長 + 1(ジェネリック以外の(0 以外の)サブタイプの場合)
日付 8 バイト
Double 8 バイト
Double128 16 バイト
32 ビットの整数 4 バイト
64 ビット整数(long) 8 バイト
オブジェクト 各フィールド名の文字列サイズと、埋め込みオブジェクト内の各フィールド値のサイズの合計
最小キー 1 バイト
Max Key 1 バイト
Null 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"
}

done フィールドと priority フィールド(どちらも昇順)のインデックスの場合、このインデックスのインデックス エントリの合計サイズは 70 バイトです。

  • コレクション名 tasks に 6 バイト
  • _id フィールド値に 11 バイト
  • ブール値フィールドの値に 1 バイト
  • 32 ビット整数フィールド値に 4 バイト
  • 追加の 48 バイト

スパース インデックスの場合、ドキュメントにフィールドが含まれていない場合、インデックス エントリは作成されません。ドキュメントにインデックス登録されたフィールドが 1 つ以上含まれている場合、インデックス エントリが作成され、インデックス登録されていないフィールドは NULL に設定されます。

次のステップ

Firestore Enterprise エディションの料金を確認する。