Cette page décrit la taille de stockage des documents, des champs et des entrées d'index dans Cloud Firestore.
Pour en savoir plus sur les coûts de ce stockage, consultez 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
tasksutilise 5 octets + 1 octet, soit un total de 6 octets. - Le nom de champ
descriptionutilise 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 (différent de 0) |
| Date | 8 octets |
| Double | 8 octets |
| Double128 | 16 octets |
| Entier 32 bits | 4 octets |
| Entier 64 bits (long) | 8 octets |
| Objet | Somme des tailles de chaîne de chaque nom de champ et des tailles de chaque valeur de champ dans l'objet imbriqué |
| Clé pour la valeur minimale | 1 octet |
| Clé maximale | 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 :
- La taille de la chaîne du nom de la collection
- La somme de la taille de la chaîne de chaque nom de champ (sauf
_id) - La somme de la taille de chaque valeur de champ (y compris
_id) - 48 octets supplémentaires
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 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 est la somme des éléments suivants :
- La taille de la chaîne du nom de la collection
- Taille de la valeur du champ
_id - La somme des valeurs de champ indexées
- 48 octets supplémentaires
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 croissants), 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 d'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.
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 :
- Somme de la taille de la chaîne du nom de la collection (x2).
- Pour les événements d'insertion et de mise à jour d'un document :
- Somme de la taille de chaîne de chaque nom de champ dans
fullDocumentouupdateDescription(sauf_id). - La somme de la taille de chaque valeur de champ dans
fullDocumentouupdateDescription. (y compris_id).
- Somme de la taille de chaîne de chaque nom de champ dans
- Si applicable aux transactions multidocuments, 24 octets supplémentaires pour
lsidettxnNumber. - 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 de l'entrée d'index de recherche de texte
La taille d'une entrée d'index de recherche textuelle dans un index est la somme des éléments suivants :
- Taille de la chaîne du nom de la collection
- Taille de la valeur
_id - Somme des octets des valeurs de champs indexés (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 textuelle sur description est de 105 octets, sur la base des éléments suivants :
- 6 octets pour le nom de la collection
tasks - 11 octets pour la valeur
_id - 44 octets, sur la base de 22 octets pour le champ
descriptionx2 - 48 octets supplémentaires pour les métadonnées générales
Taille de l'entrée d'index géospatial
La taille d'une entrée d'index géospatial dans un index est 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, sur la base 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.