Auf dieser Seite wird die Speichergröße von Dokumenten, Feldern und Indexeinträgen in Cloud Firestore beschrieben.
Informationen zu den Kosten dieser Speichermethode 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 (long) | 8 Byte |
| Objekt | Die Summe der Stringgrößen jedes Feldnamens und der Größen jedes Feldwerts im eingebetteten Objekt |
| Min Key | 1 Byte |
| Max Key | 1 Byte |
| Null | 1 Byte |
| Regulärer Ausdruck | (Musterlänge + 1) + (Optionslänge + 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"
}
Für einen 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 32-Bit-Ganzzahlfeldwert
- 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, wobei die fehlenden indexierten Felder auf NULL gesetzt werden.
Größe des Eintrags für Änderungsstreamereignisse
Die Größe eines Änderungsstreamereignisses ist die Summe aus folgenden Komponenten:
- Die Summe der Stringgröße des Sammlungsnamens (x2).
- Für Einfüge- und Aktualisierungsereignisse für ein Dokument:
- Die Summe der Stringgröße jedes Feldnamens in der
fullDocumentoder derupdateDescription(außer_id). - Die Summe der Größe jedes Feldwerts in der
fullDocumentoder derupdateDescription. (einschließlich_id).
- Die Summe der Stringgröße jedes Feldnamens in der
- Bei Transaktionen mit mehreren Dokumenten zusätzlich 24 Byte für
lsidundtxnNumber. - 92 zusätzliche Byte
Betrachten Sie ein Beispiel für ein Einfügeereignis für ein Dokument in der Sammlung „tasks“:
{
"_id": { <Resume Token> },
"operationType": "insert",
"clusterTime": <Timestamp>,
"wallTime": <ISODate>,
"ns": {
"db": "db",
"coll": "tasks"
},
"documentKey": {
"_id": "my_task_id"
},
"fullDocument": {
"_id": "my_task_id",
"description": "Learn Cloud Firestore"
},
}
Die Gesamtgröße des Änderungsstreamereignisses beträgt 149 Byte:
- 92 Byte für allgemeine Metadaten
- 12 Byte basierend auf dem Sammlungsnamen
tasks(6 Byte) * 2 - 11 Byte für den Feldwert
_id - 12 Byte für den Feldnamen
description - 22 Byte für den Feldwert
description
Größe des Indexeintrags für die Textsuche
Die Größe eines Indexeintrags für die Textsuche in einem Index ist die Summe aus folgenden Komponenten:
- Die Stringgröße des Sammlungsnamens
- Die Größe des Werts
_id - Die Summe der Byte aus indexierten Feldwerten (x2)
- 48 zusätzliche Byte für allgemeine Metadaten
Betrachten Sie ein Beispiel für ein Einfügeereignis für ein Dokument mit _id my_task_id
in der tasks Sammlung:
{ "_id": "my_place", "type": "Restaurant", "visited": false, "priority": 1, "location": GeoPoint(longitude, latitude) }
Die Gesamtgröße eines Indexeintrags für die Textsuche für description beträgt 105 Byte und basiert auf:
- 6 Byte für den Sammlungsnamen
tasks - 11 Byte für den Wert
_id - 44 Byte, basierend auf 22 Byte für das Feld
descriptionx2 - 48 zusätzliche Byte für allgemeine Metadaten
Größe des Indexeintrags für geografische Daten
Die Größe eines Indexeintrags für geografische Daten in einem Index ist die Summe aus folgenden Komponenten:
- Die Stringgröße des Sammlungsnamens
- Die Größe des Werts
_id - 128 Byte für jeden indexierten geografischen Punkt
- 48 zusätzliche Byte für allgemeine Metadaten
Betrachten Sie ein Beispiel für ein Einfügeereignis für ein Dokument mit _id my_place in der Sammlung places:
{ "_id": "my_place", "type": "Restaurant", "visited": false, "priority": 1, "location": GeoPoint(longitude, latitude) }
Die Gesamtgröße eines Indexeintrags für geografische Daten für location beträgt 192 Byte und basiert auf:
- 7 Byte für den Sammlungsnamen
places - 9 Byte für die Dokument-ID
- 128 Byte für das Feld
location - 48 zusätzliche Byte für allgemeine Metadaten
Nächste Schritte
Informationen zu Preisen.