Use este exemplo real de um app de chat básico para avaliar o uso e os custos do Firestore. Esta não é uma estimativa exata, mas pode ajudar você a entender melhor como o uso do Firestore é faturado.
Visão geral: custos por nível de uso
Para ilustrar os custos típicos, considere um exemplo de app de bate-papo, no qual os usuários podem iniciar bate-papos com dois ou mais participantes. Os usuários podem ver seus bate-papos ativos em uma lista e ler e enviar mensagens. Neste exemplo, usamos os preços para a multirregião da América do Norte, precisamente nam5
.
Suposições
Considere as seguintes suposições sobre uso e armazenamento de dados:
- Usuários ativos diários (DAUs, na sigla em inglês) são 10% do total de instalações do app. Você pode estimar seus custos diários usando uma estimativa aproximada de seus Usuários ativos diários (DAUs). Esses são os usuários que ativamente abrem e usam seu app em um determinado dia, o que geralmente é um pequeno subconjunto das instalações totais do app. Para os cálculos abaixo, estimamos DAUs como 10% do número total de instalações do app.
- Tamanhos de documentos são relativamente pequenos. Confira a tabela abaixo para uma análise detalhada do tamanho de documentos por tipo.
- Os dados são armazenados apenas por três meses. As mensagens no app de bate-papo de exemplo são armazenadas apenas por um período de três meses. Para contabilizar as operações de exclusão, os cálculos abaixo mostram uma exclusão diária para cada gravação diária.
- Essas estimativas de custo refletem a maior parte dos custos do app de exemplo, mas não todos eles. Estimamos a maior parte dos custos de um app calculando operações, armazenamento de usuários e de mensagens e saída para as tarefas de usuários mais frequentes descritas neste guia. No entanto, talvez você precise considerar os custos de adicionalidade, dependendo da estrutura e das necessidades de dados de seu app. Use este exemplo para orientar seus cálculos, mas consulte a página de preços para ver explicações mais detalhadas sobre os custos do Firestore.
Para uma análise detalhada das operações por tarefa do usuário, consulte a seção Detalhamento: uso faturado por tarefa do usuário.
Pequeno
(50 mil instalações)
Para 50 mil instalações de apps (5 mil usuários ativos diários): US$ 12,14/mês
Custos de leitura/gravação | |||||
---|---|---|---|---|---|
Custo mensal total = US$ 11,10/mês | |||||
400 mil leituras diárias totais | = | 50 mil leituras GRATUITAS + (350 mil leituras a US$ 0,06/100 mil) | = | 3,5 * US$ 0,06 | |
US$ 0,21/dia * 30 = US$ 6,30 | |||||
Total de 100 mil gravações diárias | = | 20 mil leituras GRATUITAS + (80 mil leituras a US$ 0,18/100 mil) | = | 0,8 * US$ 0,18 | |
US$ 0,14/dia * 30 = US$ 4,20 | |||||
Total de 100 mil exclusões diárias | = | 20 mil exclusões GRATUITAS + (80 mil exclusões a US$ 0,02/100 mil) | = | 0,8 * US$ 0,02 | |
US$ 0,02/dia * 30 = US$ 0,60 |
Custos de armazenamento/rede | |||||||
---|---|---|---|---|---|---|---|
Custo mensal total = US$ 1,04/mês | |||||||
20 KB/DAU de saída diária * 5 mil DAUs | = | 100 MB de saída diária * 30 | = | Saída de rede mensal de 3 GB | |||
Saída GRATUITA de 3 GB = GRÁTIS1 | |||||||
15 KB de armazenamento diário de mensagens/DAU + 3 KB de armazenamento/instalação2 | = | 45 KB de armazenamento/DAU * 5 mil DAUs | = | 225 MB de armazenamento diário/DAU * 30 | = | 6,75 GB de uso mensal de armazenamento | |
1 GB de armazenamento GRATUITO + (5,75 * US$ 0,18) = US$ 1,04/mês |
1 10 GB de saída de rede mensal são gratuitos para o Firestore.
2 Como supomos que os DAUs são 10% do total de instalações do app, esse número representa o número total de usuários que instalaram seu aplicativo.
Médio
(1 milhão de instalações)
Para 1 milhão de instalações de aplicativo (100 mil usuários ativos diariamente): US$ 292,02/mês
Custos de leitura/gravação | |||||
---|---|---|---|---|---|
Custo mensal total = US$ 261,90/mês | |||||
8 milhões de leituras diárias totais | = | 50 mil leituras GRATUITAS + (7,95 milhões de leituras a US$ 0,06 / 100 mil) | = | 79,5 * US$ 0,06 | |
US$ 4,77/dia * 30 = US$ 143,10 | |||||
2 milhões de gravações diárias | = | 20 mil gravações GRATUITAS + (1,98 milhões de gravações a US$ 0,18/100 mil) | = | 19,8 * US$ 0,18 | |
US$ 3,56/dia * 30 = US$ 106,80 | |||||
2 milhões de exclusões diárias totais | = | 20 mil exclusões GRATUITAS + (1,98 milhões de exclusões a US$ 0,02/100 mil) | = | 19,8 * US$ 0,02 | |
US$ 0,40/dia * 30 = US$ 12,00 |
Custos de armazenamento/rede | |||||||
---|---|---|---|---|---|---|---|
Custo mensal total = US$ 30,12/mês | |||||||
20 KB/DAU de saída diária * 100 mil DAUs | = | 2 GB de saída diária * 30 | = | Saída de rede mensal de 60 GB | |||
10 GB de saída GRATUITA + (50 GB de saída * US$ 0,12/GB) = US$ 6,00/mês | |||||||
15 KB de armazenamento diário de mensagens/DAU + 3 KB de armazenamento/instalação1 | = | 45 KB de armazenamento/DAU * 100 mil DAUs | = | 4,5 GB de armazenamento diário/DAU * 30 | = | Uso de armazenamento mensal de 135 GB | |
1 GB de armazenamento GRATUITO + (134 GB * US$ 0,18/GB) = US$ 24,12/mês |
1 Como supomos que os DAUs são 10% do total de instalações do app, esse número representa o número total de usuários que instalaram seu aplicativo.
Grande
(10 milhões de instalações)
Para 10 milhões de instalações do app (1 milhão de usuários ativos diários): US$ 2.951,52
Custos de leitura/gravação | |||||
---|---|---|---|---|---|
Custo mensal total = Total: US$ 2.637,90/mês | |||||
80 milhões de leituras diárias | = | 50 mil leituras GRATUITAS + (79,95 milhões de leituras a US$ 0,06/100 mil) | = | 799,5 * US$ 0,06 | |
US$ 47,97/dia * 30 = US$ 1.439,10 | |||||
20 milhões de gravações diárias totais | = | 20 mil gravações GRATUITAS + (19,98 milhões de leituras a US$ 0,18/100 mil) | = | 199,8 * US$ 0,18 | |
US$ 35,96/dia * 30 = US$ 1.078,80 | |||||
20 milhões de exclusões diárias totais | = | 20 mil exclusões GRATUITAS + (19,98 milhões de exclusões a US$ 0,02/100 mil) | = | 199,8 * US$ 0,02 | |
US$ 4,00/dia * 30 = US$ 120,00 |
Custos de armazenamento/rede | |||||||
---|---|---|---|---|---|---|---|
Custo mensal total = US$ 313,62/mês | |||||||
20 KB/DAU de saída diária * 1 milhão de DAUs | = | 20 GB de saída diária * 30 | = | Saída de rede mensal de 600 GB | |||
10 GB de saída GRATUITA + (590 GB de saída * US$ 0,12/GB) = US$ 70,80/mês | |||||||
15 KB de armazenamento diário de mensagens/DAU + 3 KB de armazenamento/instalação1 | = | 45 KB de armazenamento/DAU * 1 milhão de DAUs | = | 45 GB de armazenamento diário/DAU * 30 | = | 1.350 GB de uso mensal de armazenamento | |
(1 GB de armazenamento GRATUITO) + (1.349 GB * US$ 0,18/GB) = US$ 242,82/mês |
1 Como supomos que os DAUs são 10% do total de instalações do app, esse número representa o número total de usuários que instalaram seu aplicativo.
Um benefício do modelo de faturamento do Firestore a ser considerado é que você paga apenas o que usar. Como resultado, sua fatura pode aumentar e diminuir com a contagem de DAUs.
Detalhamento: uso faturado pela tarefa do usuário
Nosso aplicativo de chat de exemplo usa a seguinte estrutura de dados:
users/{userId}
: registros de usuário;groups/{groupId}
: conversas entre dois ou mais usuários;messages/{messageId}
: cada mensagem de um chat.
Armazenamento de dados
Para calcular os custos de armazenamento dos dados do app, aplique as seguintes suposições sobre tamanhos de documentos:
Coleção | Tamanho do documento (em trânsito) | Tamanho do Documento (no disco)* |
---|---|---|
usuários | 1 KB | 3 KB |
grupos | 0,5 KB | 1,5 KB |
mensagens | 0,25 KB | 0,75 KB |
*Este cálculo de tamanho inclui índices para os campos de mensagem, mas assume que a indexação está desativada para o conteúdo da mensagem.
O app armazena apenas mensagens com até três meses, para reduzir os custos de armazenamento.
Para saber mais informações sobre o cálculo de custos de armazenamento, consulte Noções básicas sobre cálculos de tamanho de armazenamento.
Operações
Os usuários geralmente concluem as seguintes tarefas comuns no app:
- Ver a lista de chats: os usuários abrem a tela inicial do aplicativo e veem uma lista de chats (mensagens em grupo e diretas) ordenados pela mensagem mais recente.
- Ler mensagens em um chat: os usuários selecionam os chats na tela inicial e leem as mensagens recentes.
- Enviar uma mensagem para um chat: os usuários enviam mensagens para os chats (em grupo ou diretas).
O total de operações estimadas do app de exemplo no Firestore para as três tarefas típicas de usuário é o seguinte:
- Ler: (5 * 10) + (30) = 80 leituras/usuário/dia
- Escrever: (10 * 2) = 20 escritas/usuário/dia
- Saída de rede: (50 * 0,25 KB) + (30 * 0,25 KB) = 20 KB/usuário/dia
- Armazenamento: (20 * 0,75 KB) = 15 KB/usuário/dia
Uso total por tarefa do usuário
Selecione cada tarefa do usuário para ver uma descrição completa e o detalhamento dos custos de operação, armazenamento e rede no app.
Ver a lista de bate-papos
A tela inicial do app carrega os 25 bate-papos mais recentes, com cobrança de 25 leituras de documentos. Suponha que um usuário ativo abra o app cinco vezes por dia, totalizando 125 leituras por usuário por dia. No entanto, consultas mais eficientes, como a do exemplo a seguir, podem reduzir essa carga.
No exemplo abaixo, limitamos a consulta a novos bate-papos usando um carimbo de data/hora de cada busca bem-sucedida, armazenada pelo app:
db.collection('groups') .where('participants', 'array-contains', 'user123') .where('lastUpdated', '>', lastFetchTimestamp) .orderBy('lastUpdated', 'desc') .limit(25)
Suponha que há uma média de 10 chats atualizados sempre que o usuário verifica o aplicativo. Essa consulta envolve apenas 10 leituras de documentos.
Ler mensagens em um bate-papo
Os usuários clicam nos tópicos de bate-papo na tela inicial para ver as mensagens recentes, carregando as 50 mensagens mais recentes no carregamento inicial.
Suponha que o usuário típico execute essa ação cinco vezes por dia (uma para cada vez que abrir a tela inicial), levando a um total de 250 leituras por usuário a cada dia. Também podemos limitar nossa consulta a novas mensagens desde o último horário de obtenção:
db.collection('groups') .doc('group234') .collection('messages') .where('sentTime', '>', lastFetchTimestamp) .orderBy('sentTime', 'desc') .limit(50)
Suponha que um usuário receba cerca de 30 mensagens por dia em todos os bate-papos. Como você limitou a consulta para buscar novas mensagens, isso se traduz em apenas 30 mensagens recuperadas/dia.
Enviar uma mensagem para um chat
Os usuários podem enviar mensagens para outros participantes assim que estiverem em um bate-papo. Suponha que um usuário ativo envie cerca de 10 mensagens por dia.
Cada mensagem enviada resultará em duas gravações de documentos: uma na subcoleção de messages
do chat e outra no documento pai do chat para atualizar o carimbo de data/hora lastUpdated
e outros metadados.
Observe que o custo de ler essas mensagens foi contabilizado nas outras viagens, portanto, os totais abaixo consideram apenas esse custo de gravação.