Speichergrößenberechnungen
Auf dieser Seite wird die Speichergröße von Dokumenten, Feldern und Indexeinträgen in Firestore mit MongoDB-Kompatibilität beschrieben.
Informationen zu den Kosten für diesen Speicher finden Sie auf der Seite Preise.
Stringgröße
Die Größe der Strings berechnet sich aus der Anzahl der UTF-8-codierten Byte + 1.
Die nachfolgenden Elemente werden als String gespeichert:
- Name der Sammlung
 - Feldnamen
 - Stringfeldwerte (einschließlich 
_id) 
Beispiel:
- Der Sammlungsname 
tasksverwendet 5 Byte + 1 Byte, also insgesamt 6 Byte. - Der Feldname 
descriptionverwendet 11 Byte + 1 Byte, also insgesamt 12 Byte. 
Feldwertgröße
Die folgende Tabelle zeigt die Größe der Feldwerte nach Typ an.
| Typ | Größe | 
|---|---|
| Array | Die Summe der Wertgrößen | 
| Boolean | 1 Byte | 
| Binärdaten | Byte-Länge + 1 für einen nicht generischen (nicht 0) Untertyp | 
| Datum | 8 Byte | 
| Doppelt | 8 Byte | 
| Double128 | 16 Byte | 
| 32-Bit-Ganzzahl | Byte | 
| 64-Bit-Ganzzahl (lang) | 8 Byte | 
| Objekt | Die Summe der Stringgrößen der einzelnen Feldnamen und der Größen der einzelnen Feldwerte im eingebetteten Objekt | 
| Min-Schlüssel | 1 Byte | 
| Max-Schlüssel | 1 Byte | 
| Null | 1 Byte | 
| Regulärer Ausdruck | (Länge des Musters + 1) + (Länge der Optionen + 1) | 
| Zeitstempel | 8 Byte | 
| String | Anzahl der UTF-8-kodierten Byte + 1 | 
Ein boolesches Feld mit dem Namen done würde beispielsweise 6 Byte verwenden:
- 5 Byte für den Feldnamen 
done - 1 Byte für den booleschen Wert
 
Dokumentgröße
Die Größe eines Dokuments ist die Summe aus folgenden Komponenten:
- Die Stringgröße des Sammlungsnamens
 - Die Summe der Stringgröße jedes Feldnamens (außer 
_id) - Die Summe der Größe jedes Feldwerts (einschließlich 
_id) - 48 zusätzliche Byte
 
Dieses Beispiel bezieht sich auf ein Dokument in der Sammlung tasks:
{
  "_id": "my_task_id",
  "type": "Personal",
  "done": false,
  "priority": 1,
  "description": "Learn Cloud Firestore"
}
Die Gesamtgröße der Felder beträgt 78 Byte:
| Feldname und -wert | Feldgröße in Byte | 
|---|---|
"_id": "my_task_id" | 
11 für den Stringwert des Felds | 
"type": "Personal" | 
14 5 für den Feldnamen + 9 für den Stringwert des Felds  | 
"done": false | 
6 5 für den Feldnamen + 1 für den booleschen Wert des Felds  | 
"priority": 1 | 
17 9 für den Feldnamen + 4 für den 32-Bit-Ganzzahlwert des Felds  | 
"description": "Learn Cloud Firestore" | 
34 12 für den Feldnamen + 22 für den Stringwert des Felds  | 
Die Dokumentgröße beträgt also 6 + 78 + 48 = 132 Byte:
- 6 für den Sammlungsnamen
 - 78 Byte für die Felder
 - 48 zusätzliche Byte
 
Größe des Indexeintrags
Die Größe eines Indexeintrags in einem Index ist die Summe aus folgenden Komponenten:
- Die Stringgröße des Sammlungsnamens
 - Die Größe des Feldwerts 
_id - Summe der indexierten Feldwerte
 - 48 zusätzliche Byte
 
Betrachten Sie ein Dokument in der Sammlung tasks:
{
  "_id": "my_task_id",
  "type": "Personal",
  "done": false,
  "priority": 1,
  "description": "Learn Cloud Firestore"
}
Bei einem Index für die Felder done und priority (beide aufsteigend) beträgt die Gesamtgröße des Indexeintrags in diesem Index 70 Byte:
- 6 Byte für den Sammlungsnamen 
tasks - 11 Byte für den Feldwert 
_id - 1 Byte für den booleschen Feldwert
 - 4 Byte für den Wert des 32‑Bit-Ganzzahlfelds
 - 48 zusätzliche Byte
 
Bei dünnbesetzten Indizes wird kein Indexeintrag erstellt, wenn ein Dokument keines der Felder enthält. Wenn ein Dokument mindestens eines der indexierten Felder enthält, wird ein Indexeintrag erstellt, in dem die fehlenden indexierten Felder auf NULL gesetzt sind.