Speichergrößenberechnungen

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

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

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