Auf dieser Seite wird die Speichergröße von Entitäten, Schlüsseln, Attributen und Indexeinträgen in Firestore im Datastore-Modus beschrieben. Im Abschnitt Datastore-Modus – Preise finden Sie weitere Informationen zu den Kosten dieser Speichermethode.
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:
- Schlüssel
- Typnamen
- Namespace-Namen (der Standard-Namespace verfügt über eine Größe von 0)
- Attributnamen
- Attributwerte eines Strings
Beispiel:
- Der Name des Typs
Task
verwendet 4 Byte + 1 Byte, also insgesamt 5 Byte. - Der Name des Attributs
description
verwendet 11 Byte + 1 Byte, also insgesamt 12 Byte. - Der Name des Namespace
my_name_space
verwendet 13 Byte + 1 Byte, also insgesamt 14 Byte.
Schlüsselgröße
Die Größe eines Schlüssels ist
- die Summe der Namespace-Stringgröße (sofern nicht der Standard-Namespace verwendet wird).
- die Summe der Stringgröße des vollständigen Schlüsselpfads (ganzzahlige IDs haben eine Größe von 8 Byte).
- 16 Byte
Für einen Schlüssel des Typs Task
im standardmäßigen Namespace mit einer numerischen ID, jedoch ohne Ancestor:
Task id:5730082031140864
Die Größe des Schlüssels ist 5 + 8 + 16 = 29 Byte:
- 5 Byte für den Typnamen
Task
- 8 Byte für die numerische ID
- 16 Byte für einen Schlüssel
Für einen Schlüssel des Typs Task
im Standard-Namespace mit einer String-ID, jedoch ohne Ancestor:
Task name:my_task_id
Die Schlüsselgröße beträgt 5 + 11 + 16 = 32 Byte:
- 5 Byte für den Typnamen
Task
- 11 Byte für die String-ID
my_task_id
- 16 Byte für einen Schlüssel
Für eine Task
-Entität mit einem TaskList
-Ancestor im Standard-Namespace:
TaskList id:5654313976201216 > Task id:5629499534213120
Der Ancestor verwendet 9 + 8 = 17 Byte:
- 9 Byte für den Typnamen
TaskList
- 8 Byte für die numerische ID
Damit beträgt die Schlüsselgröße einer Task
-Entität mit einem TaskList
-Ancestor 17 + 5 + 8 + 16 = 46 Byte:
- 17 Byte für den Ancestor
- 5 Byte für den Typnamen
Task
- 8 Byte für die numerische ID
- 16 Byte für einen Schlüssel
Wenn sich diese Entität im Namespace my_name_space
befindet, beträgt die Schlüsselgröße 14 + 46 = 60 Byte, da für den Namen my_name_space
14 Byte verwendet werden.
Attributsgröße
Die Größe eines Attributs ist die Summe
- der Stringgröße des Attributnamens.
- der Größe des Attributwerts.
Im Folgenden wird die Größe der Attributwerte nach Typ beschrieben:
Typ | Größe |
---|---|
Array | Summe der Wertgrößen |
Blob | Byte-Länge |
Boolescher Wert | 1 Byte |
Doppelt | 8 Byte |
Eingebettete Entität | Die Größe der Entität |
Geografischer Punkt | 16 Byte |
Ganzzahl | 8 Byte |
Schlüssel | Die Schlüsselgröße |
Null | 1 Byte |
String | Anzahl der UTF-8-kodierten Byte + 1 |
Zeitstempel | 8 Byte |
Ein Attribut namens done
mit einem booleschen Typ würde beispielsweise 6 Byte verwenden:
- 5 Byte für den Attributnamen
done
- 1 Byte für den booleschen Wert
Entitätsgröße
Die Größe einer Entität ist
- die Schlüsselgröße.
- die Summe der Attributgrößen.
- 32 Byte
Dieses Beispiel bezieht sich auf eine Entität des Typs Task
im Standard-Namespace mit einer numerischen ID, jedoch ohne Ancestor:
Task id:5730082031140864 - "type": "Personal" - "done": false - "priority": 1 - "description": "Learn Google Cloud Datastore"
Die Gesamtgröße der Eigenschaften beträgt 78 Byte:
Eigenschaftsname und -wert | Eigenschaftsgröße in Byte |
---|---|
"type": "Personal" |
14 5 für den Attributnamen + 9 für den Stringwert des Attributs |
"done": false |
6 5 für den Attributnamen + 1 für den booleschen Wert des Attributs |
"priority": 1 |
17 9 für den Attributnamen + 8 für den ganzzahligen Wert des Attributs |
"description": "Learn Google Cloud Datastore" |
41 12 für den Attributnamen + 29 für den Stringwert des Attributs |
Die Größe der Entität beträgt somit 29 + 78 + 32 = 139 Byte:
- 29 Byte für den Schlüssel
- 78 Byte für die Eigenschaft
- 32 Byte für die Entität
Größe des Indexeintrags
Die Größe eines Indexeintrags wird für integrierte und zusammengesetzte Indexe wie nachfolgend beschrieben berechnet.
Integrierte Indexe
Die Größe eines integrierten Indexeintrags ist
- die Summe der Schlüsselgröße der indexierten Entität.
- die Summe der indexierten Attributnamen.
- die Summe der indexierten Attributwerte.
- die Größe des Typnamens der indexierten Entität.
- 32 Byte
Nehmen wir als Beispiel eine Entität vom Typ Task
im Standard-Namespace mit einer numerischen ID, jedoch ohne Ancestor:
Task id:5730082031140864 - "type": "Personal" - "done": false - "priority": 1 - "description": "Learn Google Cloud Datastore"
Wenn done
ein indexiertes Attribut ist, besteht der integrierte Indexeintrag für den Index des einzelnen Attributs done
aus dem Schlüssel, dem Namen und dem Wert des Attributs done
, dem Typnamen Task
sowie einem Indexeintrag mit einer Größe von 32 Byte. Die Gesamtgröße dieses Indexeintrags beträgt 72 Byte:
- 29 Byte für den Schlüssel
- 6 Byte für den Attributnamen
done
und den booleschen Wert - 5 Byte für den Typnamen
Task
- 32 Byte für den Indexeintrag
Bei Datenbanken im Datastore-Modus werden für jedes Attribut jeder Entitätsart automatisch zwei einzelne Attributindexe definiert, jeweils einer in aufsteigender und einer in absteigender Reihenfolge. Diese Entität hätte somit einen Indexeintrag mit einer Größe von 72 Byte im einzelnen done
-Attributindex in aufsteigender Reihenfolge sowie einen Indexeintrag mit einer Größe von 72 Byte im einzelnen done
-Attributindex in absteigender Reihenfolge.
Zusammengesetzte Indexe
Die Größe eines zusammengesetzten Indexeintrags ist
- die Summe der Schlüsselgröße der indexierten Entität.
- die Summe der indexierten Attributwerte.
- 32 Byte
Nehmen wir als Beispiel eine Entität vom Typ Task
im Standard-Namespace mit einer numerischen ID, jedoch ohne Ancestor:
indexes: - kind: Task properties: - name: done direction: asc - name: priority direction: asc
Für einen zusammengesetzten Index mit den Attributen done
und priority
(beide aufsteigend) gilt Folgendes:
Die Gesamtgröße des Indexeintrags in diesem Index beträgt 70 Byte:
- 29 Byte für den Schlüssel
- 1 Byte für den booleschen Wert des
done
-Attributs - 8 Byte für den ganzzahligen Wert des
priority
-Attributs - 32 Byte für den Indexeintrag
Wenn Firestore im Datastore-Modus keinen Index für ein bestimmtes Attribut verwalten soll, schließen Sie das Attribut aus Ihren Indexen aus. Hinweis: Wenn Sie ein Attribut ausschließen, entfernen Sie es auch aus allen zusammengesetzten Indexen.
Weitere Informationen
- Informationen über Preise im Datastore-Modus.
- Informationen über Indexe im Datastore-Modus.