Taille de l'espace de stockage

Cette page décrit la taille de stockage des documents, des champs et des entrées d'index dans Cloud Firestore.

Vous pouvez en savoir plus sur les coûts de cet espace de stockage sur la page Tarifs.

Taille de chaîne

Les tailles de chaîne correspondent au nombre d'octets encodés en UTF-8 + 1.

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

  • Nom de la collection
  • Noms des champs
  • Valeurs des champs de chaîne (y compris _id)

Exemple :

  • Le nom de la collection tasks utilise 5 octets + 1 octet, soit un total de 6 octets.
  • Le nom de champ description utilise 11 octets + 1 octet, soit un total de 12 octets.

Taille d'une valeur de champ

Le tableau suivant indique la taille des valeurs de champ par type.

Type Taille
Tableau La somme des tailles de ses valeurs
Booléen 1 octet
Données binaires Longueur en octets + 1 pour un sous-type non générique (non nul)
Date 8 octets
Double 8 octets
Double128 16 octets
Entier de 32 bits 4 octets
Entier de 64 bits (long) 8 octets
Objet La somme des tailles de chaîne de chaque nom de champ et des tailles de chaque valeur de champ dans l'objet intégré
Clé min. 1 octet
Clé Max 1 octet
Vide 1 octet
Expression régulière (Longueur du modèle + 1) + (Longueur des options + 1)
Horodatage 8 octets
Chaîne Nombre d'octets encodés UTF-8 + 1

Par exemple, un champ booléen nommé done utiliserait 6 octets :

  • 5 octets pour le nom du champ done
  • 1 octet pour la valeur booléenne

Taille d'un document

La taille d'un document est la somme de :

Cet exemple concerne un document de la collection tasks :

{
  "_id": "my_task_id",
  "type": "Personal",
  "done": false,
  "priority": 1,
  "description": "Learn Cloud Firestore"
}

La taille totale des champs est de 78 octets :

Nom et valeur du champ Taille du champ en octets
"_id": "my_task_id" 11 pour la valeur de type chaîne du champ
"type": "Personal" 14
5 pour le nom du champ + 9 pour la valeur de la chaîne du champ
"done": false 6
5 pour le nom du champ + 1 pour la valeur booléenne du champ
"priority": 1 17
9 pour le nom du champ + 4 pour la valeur entière 32 bits du champ
"description": "Learn Cloud Firestore" 34
12 pour le nom du champ + 22 pour la valeur de type chaîne du champ

La taille du document est donc de 6 + 78 + 48 = 132 octets :

  • 6 pour le nom de la collection
  • 78 octets pour les champs
  • 48 octets supplémentaires

Taille des entrées d'index

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

Prenons l'exemple d'un document de la collection tasks :

{
  "_id": "my_task_id",
  "type": "Personal",
  "done": false,
  "priority": 1,
  "description": "Learn Cloud Firestore"
}

Pour un index sur les champs done et priority (tous deux ascendants), la taille totale de l'entrée d'index dans cet index est de 70 octets :

  • 6 octets pour le nom de la collection tasks
  • 11 octets pour la valeur du champ _id
  • 1 octet pour la valeur du champ booléen
  • 4 octets pour la valeur du champ de type entier 32 bits
  • 48 octets supplémentaires

Pour les index à faible densité, si un document n'inclut aucun des champs, aucune entrée d'index n'est créée. Si un document contient au moins l'un des champs indexés, une entrée d'index est créée avec les champs indexés absents définis sur NULL.

Modifier la taille de l'entrée d'événement du flux de modifications

La taille d'un événement de flux de modifications correspond au total des éléments suivants :

  • La somme des tailles de chaîne du nom de la collection (x2).
  • Pour les événements d'insertion et de mise à jour d'un document :
    • La somme des tailles de chaîne de chaque nom de champ dans fullDocument ou updateDescription (sauf _id).
    • La somme de la taille de chaque valeur de champ dans fullDocument ou updateDescription. (y compris _id).
  • Si cela s'applique aux transactions multidocuments, 24 octets supplémentaires pour lsid et txnNumber.
  • 92 octets supplémentaires

Prenons l'exemple d'un événement d'insertion pour un document de la collection "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"
  },
}

La taille totale de l'événement de flux de modifications est de 149 octets :

  • 92 octets pour les métadonnées générales
  • 12 octets en fonction du nom de la collection tasks (6 octets) * 2
  • 11 octets pour la valeur du champ _id
  • 12 octets pour le nom du champ description
  • 22 octets pour la valeur du champ description

Taille des entrées d'index de la recherche de texte

La taille d'une entrée d'index de recherche de texte dans un index correspond à la somme de :

  • Taille de la chaîne du nom de la collection
  • Taille de la valeur _id
  • Somme des octets des valeurs de champ indexées (x2)
  • 48 octets supplémentaires pour les métadonnées générales

Prenons l'exemple d'un événement d'insertion pour un document avec _id my_task_id dans la collection tasks :

{
    "_id": "my_place",
     "type": "Restaurant",
     "visited": false,
     "priority": 1,
     "location": GeoPoint(longitude, latitude)
}

La taille totale d'une entrée d'index de recherche de texte sur description est de 105 octets, selon les éléments suivants :

  • 6 octets pour le nom de la collection tasks
  • 11 octets pour la valeur _id
  • 44 octets, soit 22 octets pour le champ description multiplié par deux
  • 48 octets supplémentaires pour les métadonnées générales

Taille des entrées d'index géospatial

La taille d'une entrée d'index géospatial dans un index correspond à la somme des éléments suivants :

  • Taille de la chaîne du nom de la collection
  • Taille de la valeur _id
  • 128 octets pour chaque point géographique indexé
  • 48 octets supplémentaires pour les métadonnées générales

Prenons l'exemple d'un événement d'insertion pour un document avec _id my_place dans la collection places :

{
    "_id": "my_place",
     "type": "Restaurant",
     "visited": false,
     "priority": 1,
     "location": GeoPoint(longitude, latitude)
}

La taille totale d'une entrée d'index géospatial sur location est de 192 octets, en fonction des éléments suivants :

  • 7 octets pour le nom de la collection places
  • 9 octets pour l'ID du document
  • 128 octets pour le champ location
  • 48 octets supplémentaires pour les métadonnées générales

Étape suivante

En savoir plus sur les tarifs.