Cálculos de tamanho de armazenamento

Nesta página, descrevemos o tamanho do armazenamento de entidades, chaves, propriedades e entradas de índice no Cloud Firestore no modo Datastore. Saiba mais sobre os custos desse armazenamento em Preços do modo Datastore.

Tamanho de strings

O tamanho das strings é calculado pelo número de bytes codificados em UTF-8 + 1.

Estes elementos são armazenados como strings:

  • chaves
  • nomes de tipos
  • nomes de namespaces (o namespace padrão tem o tamanho 0)
  • nomes de propriedade
  • valores das propriedades de strings

Por exemplo:

  • O nome do tipo Task usa 4 bytes + 1, sendo 5 no total.
  • O nome da propriedade description usa 11 bytes + 1, sendo 12 no total.
  • O nome do namespace my_name_space usa 13 bytes + 1, sendo 14 no total.

Tamanho de chaves

O tamanho de uma chave é a soma:

  • do tamanho da string do namespace (se não for o namespace padrão);
  • do tamanho total da string do caminho da chave. Cada código de um número inteiro tem 8 bytes;
  • mais 16 bytes.

Para uma chave do tipo Task no namespace padrão com um código numérico e nenhum ancestral:

Task id:5730082031140864

O tamanho da chave é 5 + 8 + 16 = 29 bytes:

  • 5 bytes do nome do tipo Task
  • 8 bytes do código numérico
  • 16 bytes de uma chave

Para uma chave do tipo Task no namespace padrão com um código de string e nenhum ancestral:

Task name:my_task_id

O tamanho da chave é 5 + 11 + 16 = 32 bytes:

  • 5 bytes do nome do tipo Task
  • 11 bytes do código da string my_task_id
  • 16 bytes de uma chave

Para uma entidade Task com um ancestral TaskList no namespace padrão:

TaskList id:5654313976201216 > Task id:5629499534213120

O ancestral usa 9 + 8 = 17 bytes:

  • 9 bytes do nome do tipo TaskList
  • 8 bytes do código numérico

Portanto, o tamanho da chave de uma entidade Task com um ancestral TaskList usa 17 + 5 + 8 + 16 = 46 bytes:

  • 17 bytes do ancestral
  • 5 bytes do nome do tipo Task
  • 8 bytes do código numérico
  • 16 bytes de uma chave

Se essa entidade estiver no namespace my_name_space, o tamanho da chave será 14 + 46 = 60 bytes porque o nome my_name_space usa 14 bytes.

Tamanho de propriedades

O tamanho de uma propriedade é a soma:

  • do tamanho da string do nome da propriedade;
  • do tamanho do valor da propriedade.

Veja a seguir o tamanho dos valores da propriedade por tipo.

Tipo Tamanho
Matriz a soma dos tamanhos dos valores
Blob comprimento em bytes
Booleano 1 byte
Dupla 8 bytes
Entidade incorporada o tamanho da entidade
Ponto geográfico 16 bytes
Número inteiro 8 bytes
Chave tamanho da chave
Nulo 1 byte
String número de bytes codificados em UTF-8 + 1
Carimbo de data/hora 8 bytes

Por exemplo, uma propriedade chamada done com um tipo de booleano usaria 6 bytes:

  • 5 bytes do nome da propriedade done
  • 1 byte do valor booleano

Tamanho da entidade

O tamanho de uma entidade é a soma:

Este exemplo é de uma entidade do tipo Task no namespace padrão com um código numérico e nenhum ancestral:

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 das propriedades Tamanho das propriedades em bytes
"type": "Personal" 14
5 do nome da propriedade + 9 do valor da string da propriedade
"done": false 6
5 do nome da propriedade + 1 do valor booleano da propriedade
"priority": 1 17
9 do nome + 8 do valor do inteiro da propriedade
"description": "Learn Google Cloud Datastore" 41
12 do nome da propriedade + 29 do valor da string da propriedade

Portanto, o tamanho da entidade é de 29 + 78 + 32 = 139 bytes:

  • 29 bytes da chave
  • 78 bytes das propriedades
  • 32 bytes de uma entidade

Tamanho de entradas de índice

Veja a seguir como é calculado o tamanho da entrada de um índice para índices integrados e compostos.

Índices integrados

O tamanho de uma entrada de índice integrada é a soma:

Por exemplo, pegue uma entidade do tipo Task no namespace padrão com um código numérico e nenhum ancestral:

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

Se done for uma propriedade indexada, a entrada do índice integrado do único índice da propriedade done consistirá em: chave, nome e valor da propriedade done, nome do tipo Task e 32 bytes da entrada de um índice. O tamanho total dessa entrada do índice é de 72 bytes:

  • 29 da chave;
  • 6 do valor booleano e do nome da propriedade done;
  • 5 do nome do tipo Task;
  • 32 de uma entrada do índice.

Por padrão, os bancos de dados do modo Datastore predefinem automaticamente dois índices de uma propriedade para cada propriedade de cada tipo de entidade, um em ordem crescente e o outro em ordem decrescente. Portanto, essa entidade teria um tamanho de entrada de índice de 72 bytes no índice done da propriedade única em ordem crescente e um tamanho de entrada de índice de 72 bytes no índice done da propriedade única em ordem decrescente.

Índices compostos

O tamanho de uma entrada de índice composto é a soma:

Por exemplo, pegue uma entidade do tipo Task no namespace padrão com um código numérico e nenhum ancestral:

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

Pense em um índice composto que use as propriedades done e priority, ambas crescentes:

O tamanho total da entrada desse índice é de 70 bytes:

  • 29 da chave;
  • 1 para o valor booleano da propriedade done;
  • 8 para o valor do número inteiro na propriedade priority;
  • 32 de uma entrada do índice.

Se você não quiser que o Cloud Firestore no modo Datastore mantenha um índice para uma propriedade, exclua a propriedade dos índices. A exclusão de uma propriedade a remove de qualquer índice composto.

A seguir

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentação do Cloud Datastore