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 utilizadoresgroups/{groupId}
— Chats entre 2 ou mais utilizadoresmessages/{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:
- Ver a lista de chats: os utilizadores abrem o ecrã principal da app e veem uma lista de chats (em grupo e diretos) ordenados pela mensagem publicada mais recente.
- Ler mensagens num chat: os utilizadores selecionam chats no ecrã principal e leem mensagens recentes dos chats.
- Enviar uma mensagem para um chat: os utilizadores enviam mensagens para chats (de grupo ou diretos).
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