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
Task
usa 4 bytes + 1 byte, para um total de 5 bytes. - O nome da propriedade
description
usa 11 bytes + 1 byte, para um total de 12 bytes. - O nome do espaço de nomes
my_name_space
usa 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
done
e 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: asc
Considere 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.