Preços do Firestore

Este documento traz detalhes sobre os preços do Firestore.

Se você não paga em dólar americano, valem os preços na sua moeda local listados na página SKUs do Cloud Platform.

Visão geral de preços

Quando você usa o Firestore, os seguintes itens são cobrados:

  • O número de documentos lidos, gravados e excluídos.
  • O número de entradas de índice lidas para satisfazer uma consulta. Confira mais detalhes sobre leituras de índice.
  • A quantidade de armazenamento utilizada pelo seu banco de dados, incluindo a sobrecarga de metadados e índices.
  • A quantidade de largura de banda de rede que você usa.

O uso de armazenamento e largura de banda é calculado em gibibytes (GiB), sendo que 1 GiB = 230 bytes. Todas as cobranças se acumulam diariamente.

Nas seções a seguir, você vê detalhes sobre a cobrança pelo uso do Firestore.

Cota gratuita

O Firestore oferece uma cota gratuita para você começar a usar seu banco de dados (default) sem pagar nada. O valor das cotas gratuitas está listado abaixo. Se você precisar de mais cota, ative o faturamento do projeto do Google Cloud.

As cotas são aplicadas diariamente e redefinidas aproximadamente à meia-noite do Horário do Pacífico.

Somente o banco de dados (default) se qualifica para a cota gratuita.

Nível gratuito Cota
Dados armazenados 1 GiB
Leituras de documento 50.000 por dia
Gravações de documento 20.000 por dia
Exclusões de documento 20.000 por dia
Transferência de dados de saída 10 GiB por mês

As operações e os recursos a seguir não incluem o uso sem custo financeiro. Ative o faturamento para usar estes recursos:

  • Uso de bancos de dados nomeados (não padrão)
  • Exclusões TTL
  • Dados da PITR
  • Dados em backup
  • Operações de restauração

Para mais informações sobre como esses recursos são cobrados, consulte Preços de armazenamento.

Preços por local

Na tabela a seguir, estão listados os preços de leituras, gravações, exclusões e armazenamento para cada local do Cloud Firestore:

Se você não paga em dólar americano, valem os preços na sua moeda local listados na página SKUs do Cloud Platform.

Nenhuma cota gratuita para bancos de dados nomeados

Para criar um banco de dados nomeado (não padrão), ative o faturamento.

Não há custo extra para criar ou excluir os bancos de dados nomeados, mas eles não se qualificam para a cota gratuita. Em vez disso, você será cobrado pelo uso desses bancos de dados nomeados.

Leituras, gravações e exclusões

Você é cobrado por documentos e entradas de índice lidas para satisfazer uma consulta. Cada gravação e exclusão de documentos realizada é cobrada.

As cobranças por gravações e exclusões são diretas. Com relação a gravações, cada operação set ou update conta como uma única gravação.

As cobranças por operações de leitura têm algumas nuances que você precisa ter em mente. As seções a seguir explicam essas nuances em detalhes.

Leituras de entrada de índice

É cobrada uma operação de leitura para cada lote de até 1.000 entradas de índice lidas por uma consulta, exceto nos casos a seguir:

  • Para consultas de pesquisa de vetor vizinho mais próximos, cobramos uma operação de leitura para cada lote de até 100 entradas de índice de vetor kNN lidas pela consulta.

    Por exemplo, se a seguinte consulta de pesquisa de vetor com limit: 5 retornar cinco documentos e ler 1.550 entradas de índice de vetor de kNN, serão cobradas 5 operações de leitura para os documentos retornados e 16 operações de leitura para as entradas de índice:

    // Requires single-field vector index
    const vectorQuery: VectorQuery = db.collection('cities').findNearest('embedding_field', FieldValue.vector([3.0, 1.0, 2.0]), {
      limit: 5,
      distanceMeasure: 'EUCLIDEAN'
    });
    
  • As consultas que têm até um campo de intervalo não são cobradas por entradas de índice lidas.

    Por exemplo, a consulta a seguir contém um campo de igualdade (age) e um campo de intervalo (start_date) e não é cobrada pelas entradas de índice lidas:

    db.collection("employees").whereEqualTo("age", 35)
                              .whereGreaterThanOrEqualTo("start_date", new Date(2020, 1, 1))
    

    A consulta a seguir contém dois campos de intervalo (age e start_date) e é cobrada por entradas de índice:

    db.collection("employees").whereGreaterThanOrEqualTo("age", 35)
                              .whereGreaterThanOrEqualTo("start_date", new Date(2020, 1, 1))
    

    Um campo que aparece na ordem por cláusula é considerado um campo de intervalo quando há pelo menos um outro campo de intervalo na consulta. Portanto, a consulta a seguir contém dois campos de intervalo (age e start_date) e é cobrada por leituras de entradas de índice:

    db.collection("employees").whereGreaterThanOrEqualTo("age", 35)
                              .orderBy("start_date")
    

    O campo __name__ é sempre considerado um campo de intervalo, mesmo que seja usado apenas em um filtro de igualdade. Portanto, a consulta a seguir contém dois campos de intervalo (age e __name__) e é cobrada por leituras de entradas de índice:

    db.collection("employees").whereIn("__name__", Arrays.asList("/employees/Alice", "/employees/Bob"))
                              .orderBy("age")
    

Consultas de agregação

Para consultas de agregação, como count(), sum() e avg(), você é cobrado pelas entradas de índice lidas pela consulta, conforme descrito acima. Para consultas de agregação que leem zero entradas de índice, há uma cobrança mínima de uma leitura de documento.

Por exemplo, as operações count() com leitura entre 0 e 1.000 entradas de índice são faturadas por 1 leitura de documento. Para uma operação count() que lê 1.500 entradas de índice, serão cobradas 2 leituras de documentos.

Para saber mais sobre os índices usados e as entradas de índice lidas, use Query Explain.

Como detectar os resultados da consulta

O Firestore permite que você detecte os resultados de uma consulta e receba atualizações em tempo real quando os resultados dela forem alterados.

Quando você detecta os resultados de uma consulta, é cobrado por uma leitura sempre que um documento no conjunto de resultados é adicionado ou atualizado. Você também é cobrado por uma leitura quando um documento é removido do conjunto de resultados por ter sido alterado. Por outro lado, quando um documento for excluído, você não vai receber cobranças por uma leitura.

O faturamento de listeners nos SDKs para dispositivos móveis e Web também depende da ativação da permanência off-line:

  • Se a permanência off-line estiver ativada e o listener ficar desconectado por mais de 30 minutos (por exemplo, se o usuário estiver off-line), você vai receber cobranças por documentos e entradas de índice lidas como se tivessem emitido uma nova consulta.

  • Se a permanência off-line estiver desativada, você será cobrado por documentos e entradas de índice lidas como se tivesse emitido uma nova consulta sempre que o listener for desconectado e reconectado.

Como gerenciar grandes conjuntos de resultados

O Firestore tem vários recursos para ajudar você a gerenciar consultas que retornam uma grande quantidade de resultados:

  • Cursores, que permitem retomar uma consulta de longa duração.
  • Tokens de página, que ajudam a paginar os resultados da consulta.
  • Limites, que especificam quantos resultados serão recuperados.
  • Deslocamentos, que permitem ignorar uma quantidade fixa de documentos.

Não há custos adicionais para usar cursores, tokens de página e limites. Na verdade, esses recursos ajudam você a economizar por meio da leitura apenas dos documentos realmente necessários.

No entanto, ao enviar uma consulta que inclui um deslocamento, será cobrada uma leitura para cada documento ignorado. Por exemplo, se a consulta usa um deslocamento de 10 e a consulta retorna um documento, você será cobrado por 11 leituras. Devido a esse custo adicional, recomendamos o uso de cursores em vez de deslocamentos sempre que possível.

Consultas que não sejam leituras de documentos

Para consultas que não sejam leituras de documentos, como uma solicitação de uma lista de IDs da coleção, você será cobrado por uma leitura de documento. Se a busca do conjunto completo de resultados exigir mais que uma solicitação, por exemplo, se você estiver usando paginação, você será cobrado uma vez por solicitação.

Cobrança mínima por consultas

Há uma cobrança mínima de uma leitura de documento para cada consulta realizada, mesmo que não retorne resultados.

Regras de Segurança do Firestore

Em bibliotecas de cliente para dispositivos móveis e Web, se as Regras de segurança do Firestore usarem exists(), get() ou getAfter() para ler um ou mais documentos do seu banco de dados, você será cobrado por leituras extras da seguinte maneira:

  • Você receberá cobrança por leituras necessárias para avaliar suas Regras de segurança do Firestore.

    Por exemplo, se as regras se referirem a três documentos, mas o Firestore só precisar ler dois deles para avaliar suas regras, você será cobrado por duas leituras adicionais para os documentos dependentes.

    Você só é cobrado por uma leitura por documento dependente, mesmo que suas regras façam referência a esse documento mais de uma vez.

  • Você será cobrado pela avaliação de regras apenas uma vez por solicitação.

    Como resultado, pode custar menos ler vários documentos do que ler documentos individualmente, porque a leitura de vários documentos requer menos solicitações.

  • Ao detectar os resultados de uma consulta, você será cobrado pela avaliação de regras em todos os casos a seguir:

    • Ao emitir a consulta.
    • Sempre que os resultados da consulta forem atualizados.
    • Sempre que o dispositivo do usuário ficar off-line e voltar a ficar on-line.
    • Sempre que você atualizar suas regras.
    • Sempre que atualizar os documentos dependentes em suas regras.

Tamanho do armazenamento do banco de dados

Você receberá cobrança pelo montante de dados armazenados no Firestore, incluindo a sobrecarga do armazenamento. O montante da sobrecarga inclui metadados, índices automáticos e índices compostos.

Os metadados a seguir são necessários para cada documento armazenado no Firestore:

  • O ID do documento, incluindo o ID da coleção e o nome do documento.
  • O nome e o valor de cada campo. Como o Firestore não depende de um esquema, o nome de cada campo em um documento precisa ser armazenado com o valor do campo.
  • Todos os índices de campo único e compostos que se referem ao documento. Cada entrada de índice contém o ID da coleção, o número de valores de campo, dependendo da definição do índice, e o nome do documento.

Os custos de armazenamento são calculados em GB/mês e calculados diariamente. O Firestore mede o tamanho do banco de dados diariamente. Durante o período de um mês, a média desses pontos de amostra é feita para calcular o tamanho do armazenamento do banco de dados. Esse valor médio é multiplicado pelo preço unitário de armazenamento (GB/mês).

Saiba como o armazenamento no Firestore é calculado em Cálculos de tamanho de armazenamento.

Dados da PITR

Se você ativar a PITR, vai ser cobrado pelo armazenamento de dados PITR. A maioria dos clientes vai perceber que o custo total do armazenamento de dados PiTR é semelhante ao custo de armazenamento do banco de dados.

Os custos de armazenamento da PITR são calculados em GB/mês diariamente. O Firestore mede o tamanho do banco de dados diariamente. Durante o período de um mês, a média desses pontos de amostra é feita para calcular o tamanho do armazenamento do banco de dados. Esse valor médio é multiplicado pelo preço unitário de PITR (GB/mês).

Por exemplo, se o tamanho médio do seu banco de dados durante um mês for de 1 GiB e a PITR estiver ativada para o mês inteiro, o tamanho dos dados da PITR faturável também será de 1 GiB.

Faturamento mínimo: você pode receber uma cobrança de até 1 dia no custo de armazenamento da PITR mesmo se desativá-la dentro de um dia após a ativação.

Dados de backup e operações de restauração

Se você ativar os backups, será cobrado pelo armazenamento dos backups do banco de dados. O tamanho do armazenamento de um backup é igual ao tamanho do armazenamento do banco de dados no momento em que o backup foi feito.

Os custos de armazenamento para backups são em GiB por mês. Durante o período de um mês, o número de dias em que cada backup é retido, a média ao longo do mês, também é calculado. O custo de cada backup é calculado com base no tamanho do armazenamento do backup multiplicado pela proporção do mês em que o backup é retido e multiplicado pelo preço unitário.

Quando você executa uma operação de restauração, o Firestore mede o tamanho do backup para a operação de restauração. O tamanho do backup é multiplicado pelo preço unitário das operações de restauração (GiB).

Explicação da consulta

O uso da explicação da consulta do Firestore gera custos.

Quando uma consulta é explicada com a opção padrão, nenhuma operação de leitura de índice é realizada. Seja qual for a complexidade da consulta, uma operação de leitura é cobrada.

Quando uma consulta é explicada com a opção de análise, as operações de índice e leitura são executadas, portanto, a consulta é cobrada como de costume. Não há cobrança extra pela atividade de explicação e análise, apenas a cobrança normal pela consulta que está sendo executada.

Largura de banda da rede

Você é cobrado pela largura de banda da rede usada pelas solicitações do Firestore, conforme mostrado nas seções a seguir. O custo de largura de banda da rede referente a uma solicitação do Firestore depende do tamanho e do destino da resposta e também do local do banco de dados do Firestore.

O Firestore calcula o tamanho da resposta com base em um formato de mensagem serializado. A sobrecarga de protocolo, como a de SSL, não conta como uso da largura de banda da rede. Isso também se aplica às solicitações negadas pelas regras de segurança do Firestore.

Para saber a quantidade de largura de banda da rede que você usou, utilize o console do Google Cloud para exportar os dados de faturamento para um arquivo.

Preços gerais de rede

Para solicitações originadas no Google Cloud Platform, por exemplo, de um aplicativo em execução no Google Compute Engine, você será cobrado da seguinte maneira:

Tipo de tráfego Preço
Transferência de dados de entrada Sem custo financeiro
Transferência de dados em uma região Sem custo financeiro
Transferência de dados entre regiões na mesma multirregião Sem custo financeiro
Transferência de dados entre regiões nos EUA (por GiB) US$ 0,01 (primeiros 10 GiB sem custos por mês.)
Transferência de dados entre regiões, não incluindo o tráfego entre as regiões dos EUA Taxas de transferência de dados de saída da Internet do Google Cloud Platform

Se você não paga em dólar americano, valem os preços na sua moeda local listados na página SKUs do Cloud Platform.

Taxas de transferência de dados da Internet

Você vai receber cobrança pela transferência de dados da Internet pelo seguinte:

  • Solicitações do Google Cloud entre regiões, não incluindo o tráfego entre as regiões dos EUA
  • Solicitações de fora do Google Cloud, por exemplo, do dispositivo móvel de um usuário.

Se você não paga em dólar americano, valem os preços na sua moeda local listados na página SKUs do Cloud Platform.

Como monitorar o uso

Para saber como monitorar o uso do Firestore, consulte Como monitorar o uso.

Como gerenciar os gastos

Para gerenciar seus gastos, use alertas e orçamentos mensais.

Orçamentos e alertas do Google Cloud

O Google Cloud permite definir um orçamento mensal para todos os serviços. O orçamento mensal permite monitorar os custos gerais do Google Cloud, incluindo aqueles associados à largura de banda de rede do Firestore. Depois de definir um orçamento, crie alertas para receber notificações por e-mail à medida que seus custos forem se aproximando do limite.

Siga estas instruções para definir um orçamento mensal e criar alertas no console do Google Cloud.

Exemplo de preço

Para ver como os custos de faturamento do Firestore são acumulados em um app de amostra real, consulte o Exemplo de faturamento do Cloud Firestore.

A seguir

Solicite uma cotação personalizada

Com os preços de pagamento por utilização do Google Cloud, você paga apenas pelos serviços que usa. Fale com nossa equipe de vendas e receba uma cotação personalizada para sua organização.
Entre em contato