Esta página descreve o tamanho do armazenamento de entidades, chaves, propriedades e entradas de índice no Firestore no modo Datastore. Pode saber mais acerca dos custos deste armazenamento em Preços do modo Datastore.
Tamanho da string
Os tamanhos das strings são calculados como o número de bytes com codificação UTF-8 + 1.
Os seguintes elementos são armazenados como strings:
- Chaves
 - Nomes de tipos
 - Nomes de espaços de nomes (o espaço de nomes predefinido tem o tamanho 0)
 - Nomes das propriedades
 - Valores de propriedades de string
 
Por exemplo:
- O nome do tipo 
Taskusa 4 bytes + 1 byte, para um total de 5 bytes. - O nome da propriedade 
descriptionusa 11 bytes + 1 byte, para um total de 12 bytes. - O nome do espaço de nomes 
my_name_spaceusa 13 bytes + 1 byte, para um total de 14 bytes. 
Tamanho da chave
O tamanho de uma chave é a soma de
- O tamanho da string do espaço de nomes (se não estiver no espaço de nomes predefinido)
 - O tamanho da string do caminho da chave completo (os IDs de números inteiros têm 8 bytes cada)
 - 16 bytes
 
Para uma chave do tipo Task no espaço de nomes predefinido com um ID numérico e sem
ancestral:
Task id:5730082031140864
O tamanho da chave é de 5 + 8 + 16 = 29 bytes:
- 5 bytes para o nome do tipo 
Task - 8 bytes para o ID numérico
 - 16 bytes para uma chave
 
Para uma chave do tipo Task no espaço de nomes predefinido com um ID de string e sem
ancestral:
Task name:my_task_id
O tamanho da chave é de 5 + 11 + 16 = 32 bytes:
- 5 bytes para o nome do tipo 
Task - 11 bytes para o ID da string 
my_task_id - 16 bytes para uma chave
 
Para uma entidade Task com um antepassado TaskList no espaço de nomes predefinido:
TaskList id:5654313976201216 > Task id:5629499534213120
O antecessor usa 9 + 8 = 17 bytes:
- 9 bytes para o nome do tipo 
TaskList - 8 bytes para o ID numérico
 
Assim, o tamanho da chave de uma entidade Task com um antepassado TaskList usa 17 + 5 + 8 + 16 = 46 bytes:
- 17 bytes para o antepassado
 - 5 bytes para o nome do tipo 
Task - 8 bytes para o ID numérico
 - 16 bytes para uma chave
 
Se esta entidade estiver no espaço de nomes my_name_space, o tamanho da chave é de 14 + 46 = 60 bytes, porque o nome my_name_space usa 14 bytes.
Tamanho da propriedade
O tamanho de uma propriedade é a soma de
- O tamanho da string do nome da propriedade
 - O tamanho do valor da propriedade
 
A imagem seguinte mostra o tamanho dos valores das propriedades por tipo.
| Tipo | Tamanho | 
|---|---|
| Matriz | a soma dos tamanhos dos respetivos valores | 
| Blob | comprimento em bytes | 
| Booleano | 1 byte | 
| Duplo | 8 bytes | 
| Entidade incorporada | o tamanho da entidade | 
| Ponto geográfico | 16 bytes | 
| Número inteiro | 8 bytes | 
| Chave | o tamanho da chave | 
| Nulo | 1 byte | 
| String | Número de bytes codificados em UTF-8 + 1 | 
| Indicação de tempo | 8 bytes | 
Por exemplo, uma propriedade denominada done com um tipo Booleano usaria 6 bytes:
- 5 bytes para o nome da propriedade 
done - 1 byte para o valor Booleano
 
Tamanho da entidade
O tamanho de uma entidade é a soma de
- O tamanho da chave
 - A soma dos tamanhos das propriedades
 - 32 bytes
 
Este exemplo destina-se a uma entidade do tipo Task no espaço de nomes predefinido com um ID numérico e sem antepassado:
Task id:5730082031140864 - "type": "Personal" - "done": false - "priority": 1 - "description": "Learn Google Cloud Datastore"
O tamanho total das propriedades é de 78 bytes:
| Nome e valor da propriedade | Tamanho da propriedade em bytes | 
|---|---|
"type": "Personal" | 
14 5 para o nome da propriedade + 9 para o valor da string da propriedade  | 
"done": false | 
6 5 para o nome da propriedade + 1 para o valor booleano da propriedade  | 
"priority": 1 | 
17 9 para o nome da propriedade + 8 para o valor inteiro da propriedade  | 
"description": "Learn Google Cloud Datastore" | 
41 12 para o nome da propriedade + 29 para o valor da string da propriedade  | 
Assim, o tamanho da entidade é 29 + 78 + 32 = 139 bytes:
- 29 bytes para a chave
 - 78 bytes para as propriedades
 - 32 bytes para uma entidade
 
Tamanho da entrada de índice
O tamanho de uma entrada de índice é calculado da seguinte forma para índices incorporados e compostos.
Índices incorporados
O tamanho de uma entrada de índice incorporada é a soma do seguinte:
- O tamanho da chave da entidade indexada
 - A soma dos nomes das propriedades indexadas
 - A soma dos valores das propriedades indexados
 - O tamanho do nome do tipo de entidade indexada
 - 32 bytes
 
Por exemplo, considere uma entidade do tipo Task no espaço de nomes predefinido com um ID numérico e sem antepassado:
Task id:5730082031140864 - "type": "Personal" - "done": false - "priority": 1 - "description": "Learn Google Cloud Datastore"
Se done for uma propriedade indexada, a entrada do índice incorporado para o índice de propriedade único done consiste na chave, no nome e no valor da propriedade done, no nome do tipo Task e em 32 bytes para uma entrada de índice. O tamanho total desta entrada de índice é de 72 bytes:
- 29 para a chave
 - 6 para o nome da propriedade 
donee o valor booleano - 5 para o nome do tipo 
Task - 32 para uma entrada de índice
 
Por predefinição, as bases de dados do modo Datastore predefinem automaticamente dois índices de propriedade única para cada propriedade de cada tipo de entidade, um por ordem ascendente e outro por ordem descendente. Assim, esta entidade teria uma entrada de índice de 72 bytes no índice done de propriedade única por ordem ascendente e teria uma entrada de índice de 72 bytes no índice done de propriedade única por ordem descendente.
Índices compostos
O tamanho de uma entrada de índice composto é a soma do seguinte:
- O tamanho da chave da entidade indexada
 - A soma dos valores das propriedades indexados
 - 32 bytes
 
Por exemplo, considere uma entidade do tipo Task no espaço de nomes predefinido com um ID numérico e sem antepassado:
indexes:
- kind: Task
  properties:
  - name: done
    direction: asc
  - name: priority
    direction: ascConsidere um índice composto que usa as propriedades done e priority (ambas ascendentes):
O tamanho total da entrada de índice neste índice é de 70 bytes:
- 29 para a chave
 - 1 para o valor Booleano da propriedade 
done - 8 para o valor inteiro da propriedade 
priority - 32 para uma entrada de índice
 
Se não quiser que o Firestore no modo Datastore mantenha um índice para uma propriedade, exclua a propriedade dos seus índices. Tenha em atenção que a exclusão de uma propriedade remove-a de quaisquer índices compostos.
O que se segue?
- Saiba mais sobre os preços do modo Datastore.
 - Saiba mais sobre os índices do modo Datastore.