Exemplo de faturamento

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 chat, no qual os usuários podem iniciar chats com dois ou mais participantes. Os usuários podem ver seus chats 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) 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 chat 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}: chats 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:

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 chats

A tela inicial do app carrega os 25 chats 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 chats 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 chat

Os usuários clicam nos tópicos de chat 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 tempo de busca:

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 chats. 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 chat. 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.