Cálculos de tamaño de almacenamiento

En esta página, se describe el tamaño de almacenamiento de las entidades, las claves, las propiedades y las entradas de índice de Firestore en modo Datastore. Puedes obtener información sobre los costos de este almacenamiento en Precios del modo Datastore.

Tamaño de una string

Los tamaños de las strings se calculan como la cantidad de bytes con codificación UTF-8 más 1.

Los siguientes se almacenan como strings:

  • Claves
  • Nombres de categorías
  • Nombres de espacios de nombres (el espacio de nombres predeterminado tiene un tamaño de 0)
  • Nombres de las propiedades
  • Valores de propiedad de las strings

Por ejemplo:

  • El nombre de la categoría Task usa 4 bytes + 1 byte, lo que da un total de 5 bytes.
  • El nombre de la propiedad description usa 11 bytes + 1 byte, para un total de 12 bytes.
  • El nombre del espacio de nombres my_name_space usa 13 bytes + 1 byte, lo que da un total de 14 bytes.

Tamaño de la clave

El tamaño de una clave es la suma de lo siguiente:

  • El tamaño de la string del espacio de nombres (si no está en el espacio de nombres predeterminados)
  • El tamaño de la string de la ruta de la clave completa (los ID de números enteros utilizan 8 bytes cada uno)
  • 16 bytes

Para una clave de categoría Task en el espacio de nombres predeterminado con un ID numérico y sin principal:

Task id:5730082031140864

El tamaño de la clave es de 5 + 8 + 16 = 29 bytes:

  • 5 bytes para el nombre de categoría Task
  • 8 bytes para el ID numérico
  • 16 bytes para una clave

Para una clave de categoría Task en el espacio de nombres predeterminado con un ID de string y sin principal:

Task name:my_task_id

El tamaño de la clave es de 5 + 11 + 16 = 32 bytes:

  • 5 bytes para el nombre de categoría Task
  • 11 bytes para el ID de string my_task_id
  • 16 bytes para una clave

Para una entidad Task con un principal TaskList en el espacio de nombres predeterminado:

TaskList id:5654313976201216 > Task id:5629499534213120

El principal usa 9 + 8 = 17 bytes:

  • 9 bytes para el nombre de categoría TaskList
  • 8 bytes para el ID numérico

Por lo tanto, el tamaño de la clave de una entidad Task con un principal TaskList usa 17 + 5 + 8 + 16 = 46 bytes:

  • 17 bytes para el principal
  • 5 bytes para el nombre de categoría Task
  • 8 bytes para el ID numérico
  • 16 bytes para una clave

Si esta entidad está en el espacio de nombres my_name_space, el tamaño de la clave es 14 + 46 = 60 bytes, porque el nombre my_name_space usa 14 bytes.

Tamaño de la propiedad

El tamaño de una propiedad es la suma de lo siguiente:

  • El tamaño de la string del nombre de la propiedad
  • El tamaño del valor de la propiedad

La siguiente tabla muestra el tamaño del valor de la propiedad por tipo.

Tipo Tamaño
Arreglo La suma de los tamaños de sus valores
Blob Longitud de bytes
Booleano 1 byte
Doble 8 bytes
Entidad incorporada el tamaño de la entidad
Punto geográfico 16 bytes
Entero 8 bytes
Clave el tamaño de la clave
Nulo 1 byte
String la cantidad de bytes con codificación UTF-8 + 1
Marca de tiempo 8 bytes

Por ejemplo, una propiedad llamada done con un tipo booleano usaría 6 bytes:

  • 5 bytes para el nombre de la propiedad done
  • 1 byte para el valor booleano

Tamaño de la entidad

El tamaño de una entidad es la suma de lo siguiente:

Este ejemplo es para una entidad de categoría Task en el espacio de nombres predeterminado con un ID numérico y sin principal:

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

El tamaño total de las propiedades es de 78 bytes:

Nombre y valor de la propiedad Tamaño de la propiedad en bytes
"type": "Personal" 14
5 para el nombre de la propiedad + 9 por el valor de string de la propiedad
"done": false 6
5 para el nombre de la propiedad + 1 por el valor booleano de la propiedad
"priority": 1 17
9 para el nombre de la propiedad + 8 por el valor de número entero de la propiedad
"description": "Learn Google Cloud Datastore" 41
12 para el nombre de la propiedad + 29 por el valor de string de la propiedad

Por lo que el tamaño de la entidad es de 29 + 78 + 32 = 139 bytes:

  • 29 bytes para la clave
  • 78 bytes para las propiedades
  • 32 bytes para una entidad

Tamaño de una entrada del índice

El tamaño de la entrada de un índice se calcula de la siguiente manera para los índices integrados y compuestos.

Índices integrados

El tamaño de la entrada de un índice integrado es la suma de lo siguiente:

  • El tamaño de la clave de la entidad indexada
  • La suma de los nombres de la propiedad indexada
  • La suma de los valores de la propiedad indexados
  • El tamaño del nombre de la categoría de la entidad indexada
  • 32 bytes

Por ejemplo, toma una entidad de categoría Task en el espacio de nombres predeterminado con un ID numérico y sin principal:

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

Si done es una propiedad indexada, la entrada de índice incorporado para el índice done de la propiedad individual consta de la clave, el nombre y el valor de la propiedad done, el nombre de la categoría Task y 32 bytes para una entrada de índice. El tamaño total de esta entrada de índice es de 72 bytes:

  • 29 para la clave
  • 6 para el nombre y el valor booleano de la propiedad done
  • 5 para el nombre de categoría Task
  • 32 para una entrada de índice

Según la configuración predeterminada, las bases de datos en modo Datastore predefinen de forma automática dos índices de una sola propiedad para las propiedades de cada categoría de entidad, uno en orden ascendente y uno en orden descendente. Por lo tanto, esta entidad tendría una entrada de índice de 72 bytes en el índice done de la propiedad individual en orden ascendente y una entrada de índice de 72 bytes en el índice done de la propiedad individual en orden descendente.

Índices compuestos

El tamaño de la entrada del índice compuesto es la suma de lo siguiente:

Por ejemplo, toma una entidad de categoría Task en el espacio de nombres predeterminado con un ID numérico y sin principal:

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

Considera un índice compuesto que usa las propiedades done y priority (ambas ascendentes):

El tamaño total de la entrada del índice en este índice es de 70 bytes:

  • 29 para la clave
  • 1 para el valor booleano de la propiedad done
  • 8 para el valor de número entero de la propiedad priority
  • 32 para una entrada de índice

Si no quieres que Firestore en modo Datastore mantenga un índice para una propiedad, excluye la propiedad de los índices. Ten en cuenta que, si excluyes una propiedad, la quitarás de cualquier índice compuesto.

¿Qué sigue?