Ir para o console

Escolher um banco de dados: Cloud Firestore ou Realtime Database

O Firebase fornece duas soluções de banco de dados baseadas em nuvem e acessíveis ao cliente que oferecem suporte à sincronização de dados em tempo real:

  • O Cloud Firestore é o mais novo banco de dados do Firebase para o desenvolvimento de apps para dispositivos móveis. Ele se baseia nos resultados do Realtime Database com um novo modelo de dados mais intuitivo. O Cloud Firestore também tem consultas mais avançadas e rápidas, além de melhor escalabilidade que o Realtime Database.

  • O Realtime Database é o banco de dados original do Firebase. Ele é uma solução eficiente e de baixa latência para aplicativos móveis que exigem estados sincronizados entre clientes em tempo real.

Qual banco de dados é ideal para seu projeto?

Recomendamos o Cloud Firestore para a maioria dos desenvolvedores que iniciam um novo projeto. O Cloud Firestore oferece recursos adicionais e melhor desempenho e escalonabilidade em uma infraestrutura projetada para oferecer suporte a recursos mais avançados em lançamentos futuros. Em breve, lançaremos novos tipos de consulta, regras de segurança mais robustas e melhorias de desempenho nos recursos avançados para o Cloud Firestore.

Como você está escolhendo entre soluções de banco de dados, veja a seguir as diferenças entre o Cloud Firestore e o Realtime Database.

Modelo de dados

Tanto o Realtime Database como o Cloud Firestore são bancos de dados NoSQL.

Realtime Database Cloud Firestore
Armazena dados como uma grande árvore JSON.
  • Dados simples são muito fáceis de armazenar.
  • Dados complexos e hierárquicos são mais difíceis de organizar em escala.

Saiba mais sobre o modelo de dados do Realtime Database.

Armazena dados como coleções de documentos.
  • Dados simples são fáceis de armazenar em documentos, que são muito semelhantes aos da árvore JSON.
  • Dados complexos e hierárquicos são mais fáceis de organizar em escala, utilizando subcoleções dentro dos documentos.
  • Requer menos desnormalização e desdobramento de dados.

Saiba mais sobre o modelo de dados do Cloud Firestore.

Suporte em tempo real e off-line

Ambos possuem SDKs em tempo real com prioridade para dispositivos móveis e oferecem suporte ao armazenamento de dados locais para aplicativos off-line.

Realtime Database Cloud Firestore
Suporte off-line para clientes iOS e Android. Suporte off-line para clientes iOS, Android e da Web.

Consulta

Recupere, classifique e filtre dados de qualquer um dos bancos de dados por meio de consultas.

Realtime Database Cloud Firestore
Consultas avançadas com funcionalidade limitada de classificação e filtragem.
  • As consultas podem classificar ou filtrar uma propriedade. Não é possível realizar os dois processos.
  • As consultas são profundas por padrão: elas sempre retornam toda a subárvore.
  • As consultas podem acessar dados em qualquer granularidade, incluindo valores de nó de folha individuais na árvore JSON.
  • As consultas não exigem um índice. No entanto, o desempenho de alguma delas é reduzido à medida que seu conjunto de dados aumenta.
Consultas indexadas com classificação e filtragem compostas.
  • Você pode encadear filtros e combinar filtragem e classificação em uma propriedade em uma única consulta.
  • As consultas são superficiais: só retornam documentos em um grupo de coleta ou coleção específico e não retornam dados de subcoleção.
  • As consultas precisam retornar documentos inteiros sempre.
  • As consultas são indexadas por padrão: o desempenho da consulta é proporcional ao tamanho do seu conjunto de resultados, e não ao seu conjunto de dados.

Gravações e transações

Realtime Database Cloud Firestore
Operações básicas de gravação e transação. Operações avançadas de gravação e transação.
  • Grave operações de dados por meio de operações set e update, além de transformações avançadas, como operadores matriciais e numéricos.
  • As transações leem e gravam dados de qualquer parte do banco de dados de maneira atômica.

Confiabilidade e desempenho

Realtime Database Cloud Firestore
O Realtime Database é uma solução de região única.
  • Os bancos de dados estão limitados à disponibilidade geográfica em uma única região.
  • Como a latência é extremamente baixa, é a opção ideal para sincronizações de estado frequentes.
Saiba mais sobre o desempenho do Realtime Database e as características de confiabilidade no Contrato de nível de serviço.
O Cloud Firestore é uma solução de várias regiões com escalonamento automático.
  • Armazena seus dados em vários centros em regiões distintas, garantindo escalabilidade global e forte confiabilidade.
  • Compatível com configurações regionais ou multirregionais no mundo todo.
Saiba mais sobre as características de desempenho e confiabilidade do Cloud Firestore no Contrato de nível de serviço.

Escalonabilidade

Realtime Database Cloud Firestore
O escalonamento requer fragmentação.
  • Escalonamento para cerca de 200.000 conexões simultâneas e 1.000 gravações/segundo em um único banco de dados. Realizar um escalonamento acima desse número requer a fragmentação de dados em vários bancos de dados.
  • Não há limites locais de taxas de gravação para dados individuais.
O escalonamento é automático.
  • Escala completamente de maneira automática. Atualmente, os limites de escalonamento estão em torno de 1 milhão de conexões simultâneas e 10.000 gravações/segundo. Planejamos aumentar esses limites no futuro.
  • As taxas de gravação são limitadas para documentos ou índices individuais.

Segurança

Realtime Database Cloud Firestore
Linguagem de regras aplicada em cascata que separa autorização e validação.
  • As leituras e gravações a partir de SDKs para dispositivos móveis são protegidas pelas regras do Realtime Database.
  • As regras de leitura e gravação são aplicadas em cascata.
  • É possível validar dados separadamente usando a regra validate.
Regras que não são aplicadas em cascata e que combinam autorização e validação.
  • As leituras e gravações a partir de SDKs para dispositivos móveis são protegidas pelas regras de segurança do Cloud Firestore.
  • As leituras e gravações e partir de SDKs de servidor são protegidas pelo Gerenciamento de identidade e acesso (IAM).
  • As regras não são aplicadas em cascata, a menos que você use um caractere curinga.
  • As regras podem restringir consultas: se os resultados de uma consulta tiverem dados aos quais o usuário não tenha acesso, toda a consulta falhará.

Preço

Ambas as soluções estão disponíveis nos planos de preços Spark, Flame e Blaze.

Realtime Database Cloud Firestore
Apenas largura de banda e armazenamento são cobrados, porém a uma taxa maior.

Leia mais sobre os planos de preços do Realtime Database.

Cobra principalmente por operações realizadas no seu banco de dados (leitura, gravação, exclusão) e, a uma taxa menor, por largura de banda e armazenamento.

O Cloud Firestore oferece suporte para limites de gastos diários para os projetos do Google App Engine. Assim, você não ultrapassa os gastos que programou.

Leia mais sobre os planos de preços do Cloud Firestore.

Como usar o Cloud Firestore e o Realtime Database

Você pode usar ambos os bancos de dados no mesmo app ou projeto do Firebase. Ambos os bancos de dados NoSQL podem armazenar os mesmos tipos de dados, e as bibliotecas de cliente funcionam de maneira semelhante. Considere as diferenças descritas acima se você decidir usar ambos os bancos de dados no seu app.

Saiba mais sobre os recursos disponíveis no Realtime Database e no Cloud Firestore.