Calculs de la taille des espaces de stockage

Cette page décrit la taille de l'espace de stockage des entités, des clés, des propriétés et des entrées d'index dans Firestore en mode Datastore. Vous pouvez en savoir plus sur les coûts de cet espace de stockage sur la page relative aux Tarifs du mode Datastore.

Taille de la chaîne

Les tailles de chaîne sont calculées en tant que nombre d'octets encodés UTF-8 + 1.

Les éléments suivants sont stockés sous forme de chaînes :

  • Clés
  • Noms de genre
  • Noms d'espace de noms (l'espace de noms par défaut a une taille de 0)
  • Noms de propriété
  • Valeurs de propriété de chaîne

Exemple :

  • Le nom du genre Task utilise 4 octets + 1 octet, pour un total de 5 octets.
  • Le nom de la propriété description utilise 11 octets + 1 octet, pour un total de 12 octets.
  • Le nom de l'espace de noms my_name_space utilise 13 octets + 1 octet, pour un total de 14 octets.

Taille de clé

La taille d'une clé correspond à la somme des éléments suivants :

  • La taille de la chaîne de l'espace de noms (si elle n'est pas dans l'espace de noms par défaut)
  • La taille de la chaîne du chemin d'accès de la clé complet (les ID entiers mesurent chacun 8 octets)
  • 16 octets

Pour une clé de genre Task dans l'espace de noms par défaut avec un ID numérique et aucun ancêtre :

Task id:5730082031140864

La taille de la clé correspond à 5 + 8 + 16 = 29 octets :

  • 5 octets pour le nom de genre Task
  • 8 octets pour l'ID numérique
  • 16 octets pour la clé

Pour une clé de genre Task dans l'espace de noms par défaut avec un ID de chaîne et aucun ancêtre :

Task name:my_task_id

La taille de la clé correspond à 5 + 11 + 16 = 32 octets :

  • 5 octets pour le nom de genre Task
  • 11 octets pour l'ID de chaîne my_task_id
  • 16 octets pour la clé

Pour une entité Task avec un ancêtre TaskList dans l'espace de noms par défaut :

TaskList id:5654313976201216 > Task id:5629499534213120

L'ancêtre utilise 9 + 8 = 17 octets :

  • 9 octets pour le nom de genre TaskList
  • 8 octets pour l'ID numérique

Ainsi, la taille de la clé d'une entité Task avec un ancêtre TaskList correspond à 17 + 5 + 8 + 16 = 46 octets :

  • 17 octets pour l'ancêtre
  • 5 octets pour le nom de genre Task
  • 8 octets pour l'ID numérique
  • 16 octets pour la clé

Si cette entité se trouve dans l'espace de noms my_name_space, la taille de la clé correspond à 14 + 46 = 60 octets, car le nom my_name_space utilise 14 octets.

Taille de propriété

La taille d'une propriété correspond à la somme des éléments suivants :

  • La taille de chaîne du nom de la propriété
  • La taille de la valeur de la propriété

Le tableau suivant indique la taille des valeurs de propriété par type.

Type Taille
Tableau la somme des tailles de ses valeurs
Blob longueur en octets
Booléen 1 octet
Double 8 octets
Entité intégrée la taille de l'entité
Point géographique 16 octets
Entier 8 octets
Clé la taille de la clé
Valeur Null 1 octet
Chaîne le nombre d'octets encodés UTF-8 + 1
Horodatage 8 octets

Par exemple, une propriété nommée done avec un type booléen utiliserait 6 octets :

  • 5 octets pour le nom de la propriété done
  • 1 octet pour la valeur booléenne

Taille des entités

La taille d'une entité correspond à la somme des éléments suivants :

Cet exemple concerne une entité de genre Task dans l'espace de noms par défaut avec un ID numérique et aucun ancêtre :

Task id:5730082031140864
 - "type": "Personal"
 - "done": false
 - "priority": 1
 - "description": "Learn Google Cloud Datastore"

La taille totale des propriétés correspond à 78 octets :

Nom et valeur de la propriété Taille de la propriété en octets
"type": "Personal" 14
5 pour le nom de la propriété + 9 pour la valeur de chaîne de la propriété
"done": false 6
5 pour le nom de la propriété + 1 pour la valeur booléenne de la propriété
"priority": 1 17
9 pour le nom de la propriété + 8 pour la valeur entière de la propriété
"description": "Learn Google Cloud Datastore" 41
12 pour le nom de la propriété + 29 pour la valeur de chaîne de la propriété

Ainsi, la taille de l'entité correspond à 29 + 78 + 32 = 139 octets :

  • 29 octets pour la clé
  • 78 octets pour les propriétés
  • 32 octets pour une entité

Taille des entrées d'index

La taille d'une entrée d'index est calculée comme suit pour les index intégrés et composites.

Index intégrés

La taille d'une entrée d'index intégré correspond à la somme des éléments suivants :

Prenons l'exemple d'une entité de genre Task dans l'espace de noms par défaut avec un ID numérique et aucun ancêtre :

Task id:5730082031140864
 - "type": "Personal"
 - "done": false
 - "priority": 1
 - "description": "Learn Google Cloud Datastore"

Si done correspond à une propriété indexée, l'entrée d'index intégré pour l'index de propriété unique done comprend la clé, le nom et la valeur de la propriété done, le nom du genre Task et 32 octets pour une entrée d'index. La taille totale de cette entrée d'index correspond à 72 octets :

  • 29 octets pour la clé
  • 6 octets pour le nom de la propriété done et la valeur booléenne
  • 5 octets pour le nom de genre Task
  • 32 octets pour une entrée d'index

Les bases de données en mode Datastore prédéfinissent automatiquement par défaut deux index de propriété uniques pour chaque propriété de chaque genre d'entité, l'un dans l'ordre croissant et l'autre dans l'ordre décroissant. Ainsi, cette entité aurait une entrée d'index de 72 octets dans l'index de propriété unique done par ordre croissant, et une entrée d'index de 72 octets dans l'index de propriété unique done par ordre décroissant.

Index composites

La taille d'une entrée d'index composite correspond à la somme des éléments suivants :

Prenons l'exemple d'une entité de genre Task dans l'espace de noms par défaut avec un ID numérique et aucun ancêtre :

indexes:
- kind: Task
  properties:
  - name: done
    direction: asc
  - name: priority
    direction: asc

Prenons l'exemple d'un index composite qui utilise les propriétés done et priority (dans l'ordre croissant) :

La taille totale de l'entrée d'index dans cet index correspond à 70 octets :

  • 29 octets pour la clé
  • 1 octet pour la valeur booléenne de la propriété done
  • 8 octets pour la valeur entière de la propriété priority
  • 32 octets pour une entrée d'index

Si vous ne souhaitez pas que Firestore en mode Datastore gère un index pour une propriété, excluez la propriété de vos index. Notez que le fait d'exclure une propriété entraîne sa suppression de tous les index composites.

Étapes suivantes