ストレージ サイズの計算
このページでは、MongoDB 互換の Firestore のドキュメント、フィールド、インデックス エントリのストレージ サイズについて説明します。
このストレージの費用については、料金ページをご覧ください。
文字列のサイズ
文字列のサイズは、UTF-8 でエンコードされたバイト数 + 1 の値として計算されます。
以下は、文字列として保存されます。
- コレクション名
- フィールド名
- 文字列フィールドの値(
_idを含む)
次に例を示します。
- コレクション名
tasksには、5 バイト + 1 バイト、合計 6 バイトが使用されます。 - フィールド名
descriptionには 11 バイト + 1 バイト、合計 12 バイトが使用されます。
フィールド値のサイズ
次の表に、フィールド値のサイズを型別に示します。
| タイプ | サイズ |
|---|---|
| 配列 | 各値のサイズの合計 |
| ブール値 | 1 バイト |
| バイナリデータ | 非ジェネリック(0 以外)のサブタイプの場合はバイト長 + 1 |
| 日付 | 8 バイト |
| Double | 8 バイト |
| Double128 | 16 バイト |
| 32 ビット整数 | 4 バイト |
| 64 ビット整数(long) | 8 バイト |
| オブジェクト | 各フィールド名の文字列サイズと、埋め込みオブジェクト内の各フィールド値のサイズの合計 |
| Min Key | 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
- フィールドに 71 バイト
- 追加の 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 に設定されたインデックス エントリが作成されます。
次のステップ
料金の詳細について学ぶ。