Escolher um banco de dados: Cloud Firestore ou Realtime Database

O Firebase oferece dois bancos de dados de documentos baseados na nuvem e acessíveis ao cliente. Recomendamos que os novos clientes comecem com Cloud Firestore:

  • O Cloud Firestore é o banco de dados de documentos de nível empresarial compatível com JSON recomendado, que tem a confiança de mais de 250.000 desenvolvedores. Ele é adequado para aplicativos com modelos de dados avançados que exigem consulta, escalonabilidade e alta disponibilidade. Ele também oferece sincronização de cliente de baixa latência e acesso a dados off-line.

  • O Realtime Database é o banco de dados JSON clássico do Firebase. Ele é adequado para aplicativos com modelos de dados simples que exigem pesquisas simples e sincronização de baixa latência com escalonabilidade limitada.

Quais são os outros pontos importantes a considerar?

Depois de pensar nas principais considerações anteriores, talvez seja o momento de escolher um banco de dados. Se você ainda estiver avaliando as vantagens e desvantagens, esta seção aborda outras diferenças entre Cloud Firestore e Realtime Database.

Modelo de dados

O Realtime Database e o Cloud Firestore são bancos de dados NoSQL.

Cloud Firestore [ RECOMENDÁVEL ] 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.

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.

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.

Cloud Firestore [ RECOMENDÁVEL ] Realtime Database
Suporte off-line para clientes da Apple, Android e Web. Suporte off-line para clientes da Apple e do Android.

Presença

Pode ser útil saber quando um cliente está on-line ou off-line. O Firebase Realtime Database pode registrar o status da conexão do cliente e fornecer atualizações sempre que esse estado for alterado.

Cloud Firestore [ RECOMENDÁVEL ] Realtime Database
Sem suporte nativo. É possível aproveitar o suporte do Realtime Database à presença sincronizando o Cloud Firestore e o Realtime Database usando o Cloud Functions. Consulte Criar presença no Cloud Firestore. Presença compatível.

Consulta

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

Cloud Firestore [ RECOMENDÁVEL ] Realtime Database
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: retornam apenas documentos em uma coleção ou grupo de coleções específicos e não retornam dados da 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.
Consultas avançadas com recursos limitados 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 determinadas consultas diminui à medida que o conjunto de dados aumenta.

Gravações e transações

Cloud Firestore [ RECOMENDÁVEL ] Realtime Database
Operações avançadas de gravação e transação.
  • Grave operações de dados usando 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.
Operações básicas de gravação e transação.

Confiabilidade e desempenho

Cloud Firestore [ RECOMENDÁVEL ] Realtime Database
O Cloud Firestore é uma solução regional e multirregional que é escalonada automaticamente.
  • Uma solução de baixa latência, com tempos de resposta típicos não superiores a 30 ms.
  • Armazena seus dados em vários data centers em regiões distintas, garantindo escalonabilidade 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.
O Realtime Database é uma solução regional.
  • Disponível em configurações regionais. Os bancos de dados estão limitados à disponibilidade zonal em uma região.
  • Latência extremamente baixa, com tempos de resposta típicos não superiores a 10 ms. Uma opção ideal para sincronização frequente de estado.
Leia mais sobre as características de desempenho e confiabilidade do Realtime Database no contrato de nível de serviço.

Tempo de atividade

Cloud Firestore [ RECOMENDÁVEL ] Realtime Database
Desempenho de tempo de atividade extremamente alto.
  • Desempenho de tempo de atividade típico de 99,999%.
  • Se a disponibilidade for de extrema importância, por exemplo, em apps de e-commerce, use o Cloud Firestore.
Alto desempenho do tempo de atividade.
  • Desempenho de tempo de atividade típico de 99,95%.

Escalonabilidade

Cloud Firestore [ RECOMENDÁVEL ] Realtime Database
O escalonamento é automático.
  • O escalonamento é feito de maneira automática. 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.
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.

Segurança

Cloud Firestore [ RECOMENDÁVEL ] Realtime Database
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 Cloud Firestore Security Rules.
  • As leituras e gravações nos SDKs de servidor são protegidas pelo Identity and Access Management (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á.
Linguagem de regras aplicadas 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 Realtime Database Security Rules.
  • As regras de leitura e gravação são aplicadas em cascata.
  • É possível validar dados separadamente usando a regra validate.

Preços

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

Cloud Firestore [ RECOMENDÁVEL ] Realtime Database
A cobrança é realizada 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 tem suporte diário a limites de gastos para projetos do App Engine, para garantir que você não ultrapasse os gastos que programou.

Leia mais sobre os planos de preços do 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.

Como usar Cloud Firestore e 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 anteriormente 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.

Tudo pronto para escolher um banco de dados?

Esperamos que essa comparação tenha ajudado na escolha de uma solução de banco de dados do Firebase. Agora você pode aprender a adicionar um banco de dados aos seus projetos do Firebase.