Cálculos de tamaño de almacenamiento
En esta página, se describe el tamaño de almacenamiento de documentos, campos y entradas de índices en Firestore con compatibilidad con MongoDB.
Puedes obtener más información sobre los costos de este almacenamiento en la página Precios.
Tamaño de una string
Los tamaños de strings se calculan como la cantidad de bytes con codificación UTF-8 más 1.
Los siguientes se almacenan como strings:
- Nombre de la colección
- Nombres de campos
- Valores de campo de cadena (incluido
_id)
Por ejemplo:
- El nombre de colección
tasksusa 5 bytes + 1 byte, lo que da un total de 6 bytes. - El nombre de campo
descriptionusa 11 bytes + 1 byte, para un total de 12 bytes.
Tamaño del valor de campo
La siguiente tabla muestra el tamaño de los valores de campo por tipo.
| Tipo | Tamaño |
|---|---|
| Array | La suma de los tamaños de sus valores |
| Booleano | 1 byte |
| Datos binarios | Longitud de bytes + 1 para un subtipo no genérico (no 0) |
| Fecha | 8 bytes |
| Doble | 8 bytes |
| Double128 | 16 bytes |
| Número entero de 32 bits. | 4 bytes |
| Número entero de 64 bits (largo) | 8 bytes |
| Objeto | La suma de los tamaños de cadena de cada nombre de campo y los tamaños de cada valor de campo en el objeto incorporado |
| Clave mín. | 1 byte |
| Clave máx. | 1 byte |
| Nulo | 1 byte |
| Expresión regular | (Longitud del patrón + 1) + (Longitud de las opciones + 1) |
| Marca de tiempo | 8 bytes |
| String | Cantidad de bytes con codificación UTF-8 + 1 |
Por ejemplo, un campo booleano llamado done usaría 6 bytes:
- 5 bytes para el nombre del campo
done - 1 byte para el valor booleano
Tamaño de un documento
El tamaño de un documento es la suma de lo siguiente:
- El tamaño de cadena del nombre de la colección
- La suma del tamaño de string de cada nombre de campo (excepto
_id) - La suma del tamaño de cada valor de campo (incluido
_id) - 48 bytes adicionales
Este ejemplo corresponde a un documento en la colección tasks:
{
"_id": "my_task_id",
"type": "Personal",
"done": false,
"priority": 1,
"description": "Learn Cloud Firestore"
}
El tamaño total de los campos es de 71 bytes:
| Valor y nombre del campo | Tamaño del campo en bytes |
|---|---|
"_id": "my_task_id" |
11 para el valor de cadena del campo |
"type": "Personal" |
14 5 para el nombre del campo + 9 para el valor de string del campo |
"done": false |
6 5 para el nombre del campo + 1 para el valor booleano del campo |
"priority": 1 |
17 9 para el nombre del campo + 4 para el valor de número entero de 32 bits del campo |
"description": "Learn Cloud Firestore" |
34 12 para el nombre del campo + 22 para el valor de string del campo |
Por lo tanto, el tamaño del documento es de 6 + 78 + 48 = 132 bytes:
- 6 para el nombre de la colección
- 78 bytes para los campos
- 48 bytes adicionales
Tamaño de una entrada del índice
El tamaño de una entrada de índice en un índice es la suma de lo siguiente:
- El tamaño de string del nombre de la colección
- El tamaño del valor del campo
_id - La suma de los valores de campo indexados
- 48 bytes adicionales
Considera un documento en la colección tasks:
{
"_id": "my_task_id",
"type": "Personal",
"done": false,
"priority": 1,
"description": "Learn Cloud Firestore"
}
En un índice en los campos done y priority (ambos ascendentes), el tamaño total de la entrada en este índice es de 70 bytes:
- 6 bytes para el nombre de la colección
tasks - 11 bytes para el valor del campo
_id - 1 byte para el valor de campo booleano
- 4 bytes para el valor de campo de número entero de 32 bits
- 48 bytes adicionales
En el caso de los índices dispersos, si un documento no incluye ninguno de los campos, no se crea ninguna entrada de índice. Si un documento contiene al menos uno de los campos indexados, se crea una entrada de índice con los campos indexados ausentes establecidos en NULL.
Tamaño de entrada del evento de transmisión de cambios
El tamaño de un evento de transmisión de cambios es el total de lo siguiente:
- La suma del tamaño de string del nombre de la colección (x2).
- Para los eventos de inserción y actualización de un documento, haz lo siguiente:
- La suma del tamaño de string de cada nombre de campo en el
fullDocumento elupdateDescription(excepto_id). - La suma del tamaño de cada valor de campo en el
fullDocumento elupdateDescription. (incluido_id).
- La suma del tamaño de string de cada nombre de campo en el
- Si corresponde a las transacciones de varios documentos, 24 bytes adicionales para
lsidytxnNumber. - 92 bytes adicionales
Considera un ejemplo de un evento de inserción para un documento en la colección de tareas:
{
"_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"
},
}
El tamaño total del evento de transmisión de cambios es de 149 bytes:
- 92 bytes para metadatos generales
- 12 bytes según el nombre de la colección
tasks(6 bytes) * 2 - 11 bytes para el valor del campo
_id - 12 bytes para el nombre del campo
description - 22 bytes para el valor del campo
description
Tamaño de entrada del índice de búsqueda de texto
El tamaño de una entrada de índice de búsqueda de texto en un índice es la suma de lo siguiente:
- El tamaño de cadena del nombre de la colección
- El tamaño del valor
_id - La suma de bytes de los valores de campo indexados (x2)
- 48 bytes adicionales para metadatos generales
Considera un ejemplo de un evento de inserción para un documento con _id my_task_id
en la tasks colección:
{ "_id": "my_place", "type": "Restaurant", "visited": false, "priority": 1, "location": GeoPoint(longitude, latitude) }
El tamaño total de una entrada de índice de búsqueda de texto en description es de 105 bytes según lo siguiente:
- 6 bytes para el nombre de la colección
tasks - 11 bytes para el valor
_id - 44 bytes, según 22 bytes para el campo
descriptionx2 - 48 bytes adicionales para metadatos generales
Tamaño de entrada del índice geoespacial
El tamaño de una entrada de índice geoespacial en un índice es la suma de lo siguiente:
- El tamaño de cadena del nombre de la colección
- El tamaño del valor
_id - 128 bytes para cada punto geográfico indexado
- 48 bytes adicionales para metadatos generales
Considera un ejemplo de un evento de inserción para un documento con _id my_place en la colección places:
{ "_id": "my_place", "type": "Restaurant", "visited": false, "priority": 1, "location": GeoPoint(longitude, latitude) }
El tamaño total de una entrada de índice geoespacial en location es de 192 bytes según lo siguiente:
- 7 bytes para el nombre de la colección
places - 9 bytes para el ID de documento
- 128 bytes para el campo
location - 48 bytes adicionales para metadatos generales
¿Qué sigue?
Más información sobre los precios.