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 sem custos + 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 gravações sem custos + 80 mil gravações 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 sem custos + 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 de 3 GB sem custos = sem custos1 | |||||||
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 | = | Uso mensal de armazenamento de 6,75 GB | |
1 GB de armazenamento sem custos + 5,75 * US$ 0,18 = US$ 1,04/mês |
1 10 GB de saída de rede mensal não são cobrados no
Firestore.
2Como supomos que os DAUs são 10% do total de instalações do app,
esse número representa o 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 sem custos + 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 sem custos + 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 sem custos + 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 sem custos + 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 sem custos + (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 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 sem custos + 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 sem custos + 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 sem custos + 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 sem custos + 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 sem custos + 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:
- 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 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.
Uso faturado nas tarefas de administrador
Como proprietário ou administrador do aplicativo, você provavelmente quer gerar relatórios com base nos dados dele. Por exemplo, é possível manter uma contagem diária do número de mensagens enviadas pelos usuários. Você pode fazer isso com uma agregação count()
do grupo de coleções messages
.
Para consultas de agregação, como count()
, cobramos 1 leitura de documento para cada lote de até 1.000 entradas de índice que aparecem na consulta. A execução dessa agregação diariamente adiciona as seguintes cobranças mensais:
Pequeno
(50 mil instalações)
Para 50 mil instalações de aplicativo (5 mil usuários ativos por dia): US$ 0,0009/mês
5.000 usuários ativos * 10 novas mensagens por usuário = 50.000 novos documentos de mensagem por dia
50.000 documentos contados / 1.000 correspondências de índice por cobrança de leitura = 50 leituras
50 leituras por dia * 30 dias = 1.500 leituras por mês
1.500 leituras por mês * 0,06/100.000 leituras = US$ 0,0009 por mês
Médio
(1 milhão de instalações)
Para 1 milhão de instalações de aplicativo (100 mil usuários ativos por dia): US$ 0,018/mês
100.000 usuários ativos * 10 novas mensagens por usuário = 1.000.000 novos documentos de mensagem por dia
1.000.000 documentos contados / 1.000 correspondências de índice por cobrança de leitura = 1.000 leituras
1.000 leituras por dia * 30 dias = 30.000 leituras por mês
30.000 leituras por mês * 0,06/100.000 preço de leitura = US$ 0,018 por mês
Grande
(10 milhões de instalações)
Para 10 milhões de instalações de aplicativo (1 milhão de usuários ativos por dia): US$ 0,18
1.000.000 de usuários ativos * 10 novas mensagens por usuário = 10.000.000 de novos documentos de mensagem por dia
10.000.000 documentos contados / 1.000 correspondências de índice por cobrança de leitura = 10.000 leituras
10.000 leituras por dia * 30 dias = 300.000 leituras por mês
300.000 leituras por mês * 0,06/100.000 leituras = US$ 0,18 por mês