Cálculos de tamanho de armazenamento
Nesta página, você verá a descrição do tamanho do armazenamento de documentos, campos e entradas de índice no Firestore com compatibilidade com o MongoDB.
Saiba mais sobre os custos desse armazenamento na página Preços.
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:
- Nome da coleção
- Nomes de campos
- Valores de campos de string (incluindo
_id)
Exemplo:
tasksdo ID da coleção usam 5 bytes + 1 byte, totalizando 6 bytes.- A
descriptiondo nome do campo usa 11 bytes + 1 byte, totalizando 12 bytes.
Tamanho do valor de campo
Na tabela a seguir, você vê o tamanho dos valores de campo por tipo.
| Tipo | Tamanho |
|---|---|
| Matriz | A soma dos tamanhos dos valores da matriz |
| Booleano | 1 byte |
| Dados binários | Comprimento do byte + 1 para um subtipo não genérico (diferente de 0) |
| Data | 8 bytes |
| Duplo | 8 bytes |
| Double128 | 16 bytes |
| Inteiro de 32-bit. | 4 bytes |
| Inteiro de 64 bits (longo) | 8 bytes |
| Objeto | A soma dos tamanhos de string de cada nome de campo e dos tamanhos de cada valor de campo no objeto incorporado |
| Chave mín. | 1 byte |
| Chave máx. | 1 byte |
| Nulo | 1 byte |
| Expressão regular | (Comprimento do padrão + 1) + (Comprimento das opções + 1) |
| Carimbo de data/hora | 8 bytes |
| String | Número de bytes codificados em UTF-8 + 1 |
Por exemplo, um campo booleano denominado done usaria 6 bytes:
- 5 bytes do nome do campo
done - 1 byte do valor booleano
Tamanho do documento
O tamanho de um documento é a soma dos seguintes valores:
- O tamanho da string do nome do campo
- A soma do tamanho da string de cada nome de campo (exceto
_id) - A soma do tamanho de cada valor de campo (incluindo
_id) - 48 bytes extras
Este exemplo é para um documento na coleção tasks:
{
"_id": "my_task_id",
"type": "Personal",
"done": false,
"priority": 1,
"description": "Learn Cloud Firestore"
}
O tamanho total dos campos é de 78 bytes:
| Nome e valor do campo | Tamanho do campo em byte |
|---|---|
"_id": "my_task_id" |
11 do valor da string do campo |
"type": "Personal" |
14: 5 do nome do campo + 9 do valor da string do campo |
"done": false |
6: 5 do nome do campo + 1 do valor booleano do campo |
"priority": 1 |
17 9 do nome do campo + 4 do valor inteiro de 32 bits do campo |
"description": "Learn Cloud Firestore" |
34: 12 do nome do campo + 22 do valor da string do campo |
Assim, o tamanho do documento é 6 + 78 + 48 = 132 bytes:
- 6 para o nome da coleção
- 78 bytes dos campos
- 48 bytes extras
Tamanho de entradas de índice
O tamanho de uma entrada de índice é a soma dos seguintes itens:
- O tamanho da string do nome do campo
- O tamanho do valor do campo
_id - A soma dos valores de campo indexados
- 48 bytes extras
Considere um documento na coleção tasks:
{
"_id": "my_task_id",
"type": "Personal",
"done": false,
"priority": 1,
"description": "Learn Cloud Firestore"
}
O tamanho total da entrada em um índice nos campos done e priority (ambos crescentes) é de 70 bytes:
- 6 bytes do nome da coleção
tasks - 11 bytes do valor do campo
_id - 1 byte do valor de campo booleano
- 4 bytes do valor de campo de número inteiro de 32 bits
- 48 bytes extras
Para índices esparsos, se um documento não incluir nenhum dos campos,
nenhuma entrada de índice será criada. Se um documento contiver pelo menos um dos
campos indexados, uma entrada de índice será criada com os campos indexados ausentes
definidos como NULL.
Mudar o tamanho da entrada de evento de mudança de stream
O tamanho de um evento de fluxo de alterações é o total de:
- A soma do tamanho da string do nome da coleção (x2).
- Para eventos de inserção e atualização de um documento:
- A soma do tamanho da string de cada nome de campo no
fullDocumentou noupdateDescription(exceto_id). - A soma do tamanho de cada valor de campo em
fullDocumentouupdateDescription. (incluindo_id).
- A soma do tamanho da string de cada nome de campo no
- Se aplicável a transações com vários documentos, mais 24 bytes para
lsidetxnNumber. - 92 bytes extras
Considere um exemplo de um evento de inserção para um documento na coleção de tarefas:
{
"_id": { <Resume Token> },
"operationType": "insert",
"clusterTime": <Timestamp>,
"wallTime": <ISODate>,
"ns": {
"db": "db",
"coll": "tasks"
},
"documentKey": {
"_id": "my_task_id"
},
"fullDocument": {
"_id": "my_task_id",
"description": "Learn Cloud Firestore"
},
}
O tamanho total do evento de fluxo de alterações é de 149 bytes:
- 92 bytes para metadados gerais
- 12 bytes com base no nome da coleção
tasks(6 bytes) * 2 - 11 bytes do valor do campo
_id - 12 bytes do nome do campo
description - 22 bytes do valor do campo
description
Tamanho da entrada de índice da pesquisa de texto
O tamanho de uma entrada de índice de pesquisa de texto é a soma dos seguintes itens:
- O tamanho da string do nome da coleção
- O tamanho do valor
_id - A soma de bytes dos valores de campo indexados (x2)
- 48 bytes extras para metadados gerais
Considere um exemplo de evento de inserção para um documento com _id my_task_id
na coleção tasks:
{ "_id": "my_place", "type": "Restaurant", "visited": false, "priority": 1, "location": GeoPoint(longitude, latitude) }
O tamanho total de uma entrada de índice de pesquisa de texto em description é de 105 bytes com base em:
- 6 bytes do nome da coleção
tasks - 11 bytes do valor
_id - 44 bytes, com base em 22 bytes para o campo
descriptionx2 - 48 bytes extras para metadados gerais
Tamanho da entrada de índice geoespacial
O tamanho de uma entrada de índice geoespacial é a soma dos seguintes itens:
- O tamanho da string do nome da coleção
- O tamanho do valor
_id - 128 bytes para cada ponto geográfico indexado
- 48 bytes extras para metadados gerais
Considere um exemplo de evento de inserção para um documento com _id my_place
na coleção places:
{ "_id": "my_place", "type": "Restaurant", "visited": false, "priority": 1, "location": GeoPoint(longitude, latitude) }
O tamanho total de uma entrada de índice geoespacial em location é de 192 bytes com base em:
- 7 bytes do nome da coleção
places - 9 bytes do ID do documento
- 128 bytes do campo
location - 48 bytes extras para metadados gerais
A seguir
Saiba mais sobre Preços.