Exemplo de faturação

Use este exemplo do mundo real de uma app de chat básica para avaliar a utilização e os custos do Firestore no modo nativo. Esta não é uma estimativa exata, mas pode ajudar a compreender melhor como a sua utilização do Firestore no modo nativo é faturada.

Vista geral: custos por nível de utilização

Para ilustrar os custos típicos, considere uma app de chat de exemplo, onde os utilizadores podem iniciar chats com dois ou mais participantes. Os utilizadores podem ver os respetivos chats ativos numa lista, ler mensagens e enviar mensagens. Para este exemplo, vamos usar os preços da multirregião da América do Norte (especificamente nam5).

Pressupostos

Considere as seguintes suposições sobre a utilização e o armazenamento de dados:

  • Os utilizadores ativos diariamente (UADs) representam 10% do total de instalações da app. Pode estimar os seus custos diários com uma estimativa aproximada dos utilizadores ativos diariamente (UAD). Estes são os utilizadores que abrem e usam ativamente a sua app num determinado dia, o que é normalmente um pequeno subconjunto do total de instalações da app. Para os cálculos abaixo, estimámos os UADs como 10% do número total de instalações da app.
  • Os tamanhos dos documentos são relativamente pequenos. Consulte a tabela abaixo para ver uma discriminação do tamanho dos documentos por tipo.
  • Os dados só são armazenados durante três meses. As mensagens na app de chat de exemplo só são armazenadas durante um período de três meses. Para ter em conta as operações de eliminação, os cálculos abaixo mostram uma eliminação diária para cada gravação diária.
  • Estas estimativas de custos refletem a maioria dos custos da app de exemplo, mas não todos. Calculámos a maior parte dos custos de uma app calculando as operações, o armazenamento de utilizadores e mensagens, e a saída para as tarefas de utilizador mais frequentes descritas neste guia. No entanto, pode ter de ter em conta custos adicionais, consoante a estrutura da sua app e as necessidades de dados. Use este exemplo para orientar os seus cálculos, mas consulte a página de preços para explicações mais detalhadas dos custos do Firestore no modo nativo.

Para ver uma discriminação das operações por tarefa do utilizador, consulte a secção Discriminação: utilização faturada por tarefa do utilizador.

Pequeno
(50 mil instalações)

Para 50 000 instalações da app (5000 utilizadores ativos diariamente): 12,14 $/mês

Custos de leitura/escrita
Custo mensal total = 11,10 €/mês
400 mil leituras diárias totais =   50 mil leituras sem custo financeiro + (350 mil leituras a 0,06 $/100 mil) =   3,5 * 0,06 €
0,21 € / dia * 30 = 6,30 €
 
100 mil gravações diárias totais =   20 mil escritas sem custos + (80 mil escritas a 0,18 USD/100 mil) =   0,8 * 0,18 €
0,14 € / dia * 30 = 4,20 €
 
100 mil eliminações diárias totais =   20 mil eliminações sem custo financeiro + (80 mil eliminações a 0,02 USD/100 mil) =   0,8 * 0,02 €
0,02 $ / dia * 30 = 0,60 $
Custos de armazenamento/rede
Custo mensal total = 1,04 $/mês
20 KB / UAD de saída diária * 5000 UAD =   100 MB de saída diária * 30 =   3 GB de saída de rede mensal
3 GB de saída sem custo financeiro = Sem custo financeiro1
 
15 KB de armazenamento de mensagens diário / UAD + 3 KB de armazenamento / instalação2 =   45 KB de armazenamento / UAD * 5000 UADs =   225 MB de armazenamento diário / UAD * 30 =   Utilização mensal de armazenamento de 6,75 GB
1 GB de armazenamento sem custo financeiro + (5,75 * 0,18 €) = 1,04 € / mês

1 10 GB de saída de rede mensal não têm custo para o Firestore no modo nativo.
2 Uma vez que partimos do princípio de que os UADs representam 10% do total de instalações da app, este número representa o número total de utilizadores que instalaram a sua app.

Médio
(1 milhão de instalações)

Para 1 000 000 de instalações da app (100 000 utilizadores ativos diariamente): 292,02 $/mês

Custos de leitura/escrita
Custo mensal total = 261,90 €/mês
8 milhões de leituras diárias totais =   50 mil leituras sem custo financeiro + (7,95 milhões de leituras a 0,06 $/100 mil) =   79,5 * 0,06 $
4,77 € / dia * 30 = 143,10 €
 
2 milhões de gravações diárias totais =   20 mil escritas sem custos + (1,98 milhões de escritas a 0,18 USD/100 mil) =   19,8 * 0,18 $
3,56 $ / dia * 30 = 106,80 $
 
2 milhões de eliminações diárias totais =   20 mil eliminações sem custos + (1,98 milhões de eliminações a 0,02 USD/100 mil) =   19,8 * 0,02 $
0,40 € / dia * 30 = 12,00 €
Custos de armazenamento/rede
Custo mensal total = 30,12 €/mês
20 KB / UAD de saída diária * 100 mil UADs =   2 GB de saída diária * 30 =   60 GB de saída de rede mensal
10 GB de saída sem custo financeiro + (50 GB de saída * 0,12 $/GB) = 6,00 $ / mês
 
15 KB de armazenamento de mensagens diário / UAD + 3 KB de armazenamento / instalação1 =   45 KB de armazenamento / DAU * 100 mil DAUs =   4,5 GB de armazenamento diário / DAU * 30 =   135 GB de utilização de armazenamento mensal
1 GB de armazenamento sem custo financeiro + (134 GB * 0,18 €/GB) = 24,12 € / mês

1 Uma vez que a nossa suposição é que os DAUs representam 10% do total de instalações da app, este número representa o número total de utilizadores que instalaram a sua app.

Grande
(10 M de instalações)

Para 10 000 000 de instalações da app (1 000 000 de utilizadores ativos diariamente): 2951,52 €

Custos de leitura/escrita
Custo mensal total = Total: 2637,90 €/mês
80 milhões de leituras diárias totais =   50 mil leituras sem custo financeiro + (79,95 milhões de leituras a 0,06 $/100 mil) =   799,5 * 0,06 $
47,97 USD / dia * 30 = 1439,10 USD
 
20 milhões de gravações diárias totais =   20 mil escritas sem custos + (19,98 milhões de escritas a 0,18 USD/100 mil) =   199,8 * 0,18 $
35,96 € / dia * 30 = 1078,80 €
 
20 milhões de eliminações diárias totais =   20 mil eliminações sem custo financeiro + (19,98 milhões de eliminações a 0,02 USD/100 mil) =   199,8 * 0,02 $
4,00 € / dia * 30 = 120,00 €
Custos de armazenamento/rede
Custo mensal total = 313,62 €/mês
20 KB / UAD de saída diária * 1 milhão de UAD =   20 GB de saída diária * 30 =   600 GB de saída de rede mensal
10 GB de saída sem custo financeiro + (590 GB de saída * 0,12 $/GB) = 70,80 $ / mês
 
15 KB de armazenamento de mensagens diário / UAD + 3 KB de armazenamento / instalação1 =   45 KB de armazenamento / DAU * 1 milhão de DAUs =   45 GB de armazenamento diário / DAU * 30 =   1350 GB de utilização de armazenamento mensal
(1 GB de armazenamento sem custo financeiro) + (1349 GB * 0,18 €/GB) = 242,82 € / mês

1 Uma vez que a nossa suposição é que os DAUs representam 10% do total de instalações da app, este número representa o número total de utilizadores que instalaram a sua app.

Uma vantagem do modelo de faturação do Firestore no modo nativo a ter em conta é que só paga o que usa. Como resultado, a sua fatura pode aumentar e diminuir com a contagem de DAUs.

Discriminação: utilização faturada por tarefa do utilizador

Para a nossa app de chat de exemplo, a estrutura de dados é a seguinte:

  • users/{userId} — Registos de utilizadores
  • groups/{groupId} — Chats entre 2 ou mais utilizadores
    • messages/{messageId}: cada mensagem num chat.

Armazenamento de dados

Para calcular os custos de armazenamento dos dados da app, aplique as seguintes pressuposições sobre os tamanhos dos documentos:

Coleção Tamanho do documento (em trânsito) Tamanho do documento (no disco)*
utilizadores 1KB 3KB
groups 0,5 KB 1,5 KB
mensagens 0,25 KB 0,75 KB

*Este cálculo do tamanho inclui os índices dos campos das mensagens, mas assume que a indexação está desativada para o conteúdo das mensagens.

A app também só armazena mensagens com até três meses, para reduzir os custos de armazenamento.

Para mais informações sobre o cálculo dos custos de armazenamento, consulte o artigo Compreender os cálculos do tamanho do armazenamento.

Operações

Normalmente, os utilizadores concluem as seguintes tarefas comuns na app:

O total de operações estimadas da app de exemplo no Firestore no modo nativo para as três tarefas típicas do utilizador é o seguinte:

  • Leituras: (5 * 10) + (30) = 80 leituras / utilizador / dia
  • Gravações: (10 * 2) = 20 gravações / utilizador / dia
  • Saída da rede: (50 * 0,25 KB) + (30 * 0,25 KB) = 20 KB / utilizador / dia
  • Armazenamento: (20 * 0,75 KB) = 15 KB / utilizador / dia

Utilização total por tarefa do utilizador

Selecione cada tarefa do utilizador para ver uma descrição completa e uma discriminação dos custos de operações, armazenamento e rede na app.

Veja a lista de chats

O ecrã principal da app carrega os 25 chats mais recentes, incorrendo em custos de 25 leituras de documentos. Suponha que um utilizador ativo abre a app 5 vezes por dia, o que totaliza 125 leituras por utilizador todos os dias. No entanto, as consultas mais eficientes, como a do exemplo seguinte, podem reduzir esta carga.

No exemplo abaixo, limitamos a consulta a novos chats através de uma data/hora de cada obtenção bem-sucedida, armazenada pela app:

db.collection('groups')
  .where('participants', 'array-contains', 'user123')
  .where('lastUpdated', '>', lastFetchTimestamp)
  .orderBy('lastUpdated', 'desc')
  .limit(25)

Suponha que existem uma média de 10 chats atualizados sempre que o utilizador verifica a app. Esta consulta só incorre em 10 leituras de documentos.

Leia mensagens num chat

Os utilizadores clicam em discussões de chat a partir do ecrã principal para ver mensagens recentes, carregando as 50 mensagens mais recentes no carregamento inicial.

Suponha que o utilizador típico realiza esta ação 5 vezes por dia (uma vez por cada vez que abre o ecrã principal), o que resulta num total de 250 leituras por utilizador por dia. Também podemos limitar a nossa consulta a novas mensagens desde a última hora de obtenção:

db.collection('groups')
  .doc('group234')
  .collection('messages')
  .where('sentTime', '>', lastFetchTimestamp)
  .orderBy('sentTime', 'desc')
  .limit(50)

Suponha que um utilizador recebe cerca de 30 mensagens por dia em todos os chats. Uma vez que limitou a consulta para obter novas mensagens, isto traduz-se em apenas 30 mensagens obtidas por dia.

Envie uma mensagem para um chat

Os utilizadores podem enviar mensagens a outros participantes assim que estiverem num chat. Suponha que um utilizador ativo envia cerca de 10 mensagens por dia.

Cada mensagem enviada provoca duas escritas de documentos: uma escrita na subcoleção messages da conversa e uma escrita no documento principal da conversa para atualizar a data/hora lastUpdated e outros metadados.

Tenha em atenção que o custo de leitura destas mensagens foi contabilizado nos outros percursos, pelo que os totais abaixo apenas consideram este custo de escrita.

Utilização faturada para tarefas de administrador

Enquanto proprietário ou administrador de uma app, é provável que queira gerar relatórios a partir dos dados da sua app. Por exemplo, pode querer manter uma contagem diária do número de mensagens enviadas pelos seus utilizadores. Pode fazê-lo com uma agregação count() do grupo de recolha messages.

Para consultas de agregação, como count(),é cobrada uma leitura de documentos para cada lote de até 1000 entradas de índice correspondentes à consulta. A execução desta agregação diária adiciona os seguintes custos mensais:

Pequeno
(50 mil instalações)

Para 50 000 instalações de apps (5000 UADs): 0,0009 $/mês

5000 utilizadores ativos * 10 novas mensagens por utilizador = 50 000 novos documentos de mensagens por dia

50 000 documentos contabilizados / 1000 correspondências de índice por custo de leitura = 50 leituras

50 leituras por dia * 30 dias = 1500 leituras por mês

1500 leituras por mês * 0,06/100 000 preço de leitura = 0,0009 $por mês

Médio
(1 milhão de instalações)

Para 1 000 000 de instalações da app (100 000 utilizadores ativos diariamente): 0,018 $/mês

100 000 utilizadores ativos * 10 novas mensagens por utilizador = 1 000 000 novos documentos de mensagens por dia

1 000 000 de documentos contabilizados / 1000 correspondências de índice por custo de leitura = 1000 leituras

1000 leituras por dia * 30 dias = 30 000 leituras por mês

30 000 leituras por mês * 0,06 $/100 000 leituras = 0,018 $ por mês

Grande
(10 M de instalações)

Para 10 000 000 de instalações de apps (1 000 000 de utilizadores ativos diariamente): 0,18 USD

1 000 000 de utilizadores ativos * 10 novas mensagens por utilizador = 10 000 000 de novos documentos de mensagens por dia

10 000 000 documentos contabilizados / 1000 correspondências de índice por custo 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 = 0,18 $ por mês