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 en Firestore en el modo de Datastore. Puedes consultar los costes de este almacenamiento en la página Precios del modo Datastore.

Tamaño de cadena

El tamaño de las cadenas se calcula como el número de bytes codificados en UTF-8 más 1.

Los siguientes elementos se almacenan como cadenas:

  • Claves
  • Nombres de tipo
  • Nombres de espacios de nombres (el espacio de nombres predeterminado tiene un tamaño de 0)
  • Nombres de propiedad
  • Valores de propiedad de cadena

Por ejemplo:

  • El nombre del Task kind usa 4 bytes + 1 byte, lo que da un total de 5 bytes.
  • El nombre de la propiedad description usa 11 bytes + 1 byte, lo que da 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

  • Tamaño de la cadena del espacio de nombres (si no está en el espacio de nombres predeterminado)
  • Tamaño de la cadena de ruta de clave completa (los IDs de números enteros son de 8 bytes cada uno)
  • 16 bytes

Para una clave de tipo Task en el espacio de nombres predeterminado con un ID numérico y sin antecesor:

Task id:5730082031140864

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

  • 5 bytes para el nombre del tipo Task
  • 8 bytes para el ID numérico
  • 16 bytes para una clave

Para una clave de tipo Task en el espacio de nombres predeterminado con un ID de cadena y sin ancestro:

Task name:my_task_id

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

  • 5 bytes para el nombre del tipo Task
  • 11 bytes correspondientes al ID de cadena my_task_id
  • 16 bytes para una clave

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

TaskList id:5654313976201216 > Task id:5629499534213120

El ancestro usa 9 + 8 = 17 bytes:

  • 9 bytes para el nombre del tipo TaskList
  • 8 bytes para el ID numérico

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

  • 17 bytes para el elemento antecesor
  • 5 bytes para el nombre del tipo 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, ya que el nombre my_name_space usa 14 bytes.

Tamaño de la propiedad

El tamaño de una propiedad es la suma de

  • Tamaño de la cadena del nombre de la propiedad
  • Tamaño del valor de la propiedad

A continuación, se muestra el tamaño de los valores de propiedad por tipo.

Tipo Tamaño
Matriz la suma de los tamaños de sus valores
Blob longitud en bytes
Booleano 1 byte
Doble 8 bytes
Entidad insertada el tamaño de la entidad
Punto geográfico 16 bytes
Entero 8 bytes
Clave el tamaño de la clave
Nulo 1 byte
Cadena Número de bytes codificados en UTF-8 + 1
Marca de tiempo 8 bytes

Por ejemplo, una propiedad llamada done de 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

Este ejemplo es para una entidad de tipo Task en el espacio de nombres predeterminado con un ID numérico y sin ancestro:

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 para el valor de cadena de la propiedad
"done": false 6
5 para el nombre de la propiedad + 1 para el valor booleano de la propiedad
"priority": 1 17
9 para el nombre de la propiedad + 8 para el valor entero de la propiedad
"description": "Learn Google Cloud Datastore" 41
12 para el nombre de la propiedad + 29 para el valor de cadena de la propiedad

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

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

Tamaño de la entrada de índice

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

Índices integrados

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

  • El tamaño de la clave de la entidad indexada
  • La suma de los nombres de las propiedades indexadas
  • Suma de los valores de propiedad indexados.
  • Tamaño del nombre del tipo de entidad indexada
  • 32 bytes

Por ejemplo, tomemos una entidad de tipo Task en el espacio de nombres predeterminado con un ID numérico y sin ancestro:

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

Si done es una propiedad indexada, la entrada del índice integrado de la propiedad done consta de la clave, el nombre y el valor de la propiedad done, el nombre del tipo 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 de la propiedad done y el valor booleano
  • 5 para el nombre de tipo Task
  • 32 para una entrada de índice

De forma predeterminada, las bases de datos en el modo Datastore predefinen automáticamente dos índices de una sola propiedad para cada propiedad de cada tipo de entidad: uno en orden ascendente y otro en orden descendente. Por lo tanto, esta entidad tendría una entrada de índice de tamaño 72 bytes en el índice de una sola propiedad done en orden ascendente y otra entrada de índice de tamaño 72 bytes en el índice de una sola propiedad done en orden descendente.

Índices compuestos

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

Por ejemplo, tomemos una entidad de tipo Task en el espacio de nombres predeterminado con un ID numérico y sin ancestro:

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

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

El tamaño total de la entrada de í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 entero de la propiedad priority
  • 32 para una entrada de índice

Si no quieres que Firestore en el modo de Datastore mantenga un índice de una propiedad, excluye la propiedad de tus índices. Ten en cuenta que, si excluyes una propiedad, se eliminará de todos los índices compuestos.

Siguientes pasos