获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

Escolha um banco de dados: Cloud Firestore ou Realtime Database

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

  • O Cloud Firestore é o mais novo banco de dados do Firebase para desenvolvimento de aplicativos móveis. Ele se baseia nos sucessos do Realtime Database com um modelo de dados novo e mais intuitivo. O Cloud Firestore também apresenta consultas mais ricas e rápidas e escalas além do Realtime Database.

  • O Realtime Database é o banco de dados original do Firebase. É 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 o Firebase recomenda?

Sua escolha de solução de banco de dados dependerá de muitos fatores, mas quando se trata de determinados recursos, podemos fazer recomendações sobre qual banco de dados é ideal para você.

Ambas as soluções oferecem:

  • SDKs voltados para o cliente, sem servidores para implantar e manter
  • Atualizações em tempo real
  • Nível gratuito e depois pague pelo que usar

Consideracoes chave

Além dos excelentes recursos principais comuns a ambos os bancos de dados, pense em como algumas ou todas as considerações listadas abaixo afetarão o sucesso de seus aplicativos.

Função do banco de dados
Meu aplicativo usa um banco de dados para...
Principalmente sincronizando dados, com consultas básicas.
Se você não precisa de consultas, classificações e transações avançadas, recomendamos o Realtime Database .
Consultas, classificações e transações avançadas.
Se você precisar de interações complexas com seus dados, por exemplo, em aplicativos de comércio eletrônico, recomendamos o Cloud Firestore .
Operações em dados
O uso do banco de dados do meu aplicativo se parece com...
Alguns GBs ou menos de dados que mudam com frequência.
Se seu aplicativo enviará um fluxo de pequenas atualizações, como em um aplicativo de quadro branco digital, recomendamos o Realtime Database .
Centenas de GBs a TBs de dados que são lidos com muito mais frequência do que alterados.
Para conjuntos de dados muito grandes e quando as operações em lote são necessárias com frequência, recomendamos o Cloud Firestore .
Modelo de dados
Prefiro estruturar meus dados como...
Uma árvore JSON simples.
Para dados não estruturados JSON, recomendamos o Realtime Database .
Documentos organizados em coleções.
Para documentos e coleções estruturadas, recomendamos o Cloud Firestore .
Disponibilidade
Minhas necessidades de disponibilidade são...
Garantia de uptime extremamente alta de 99,999%.
Se a disponibilidade for de extrema importância, por exemplo, em aplicativos de comércio eletrônico, recomendamos o Cloud Firestore .
Uma garantia de pelo menos 99,95% de tempo de atividade.
Quando uma disponibilidade muito alta, mas não crítica, é aceitável, recomendamos Cloud Firestore ou Realtime Database .
Consultas offline em dados locais
Meu aplicativo precisará realizar consultas em dispositivos com conectividade limitada ou sem conectividade...
Freqüentemente.
Para recursos sofisticados de consulta de dados locais quando o usuário está off-line, recomendamos o Cloud Firestore .
Raramente ou nunca.
Se você espera que seus usuários estejam consistentemente online, recomendamos Cloud Firestore ou Realtime Database .
Número de instâncias de banco de dados
Em meus projetos individuais, preciso usar...
Muitos bancos de dados, por exemplo, um banco de dados para cada cliente principal.
Como permite adicionar vários bancos de dados a um único projeto do Firebase, recomendamos o Realtime Database .
Apenas um único banco de dados.
Se você precisar de um único banco de dados, recomendamos Cloud Firestore ou Realtime Database .

Quais são algumas outras coisas importantes a considerar?

Depois de pensar nas principais considerações anteriores, você pode estar pronto para escolher um banco de dados . Se você ainda está avaliando os prós e os contras, esta seção aborda outras diferenças entre o Cloud Firestore e o Realtime Database.

Modelo de dados

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

banco de dados em tempo real 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 ao JSON.
  • Dados complexos e hierárquicos são mais fáceis de organizar em escala, usando subcoleções dentro de documentos.
  • Requer menos desnormalização e nivelamento de dados.

Saiba mais sobre o modelo de dados do Cloud Firestore .

Suporte em tempo real e offline

Ambos têm SDKs em tempo real para dispositivos móveis e oferecem suporte ao armazenamento de dados local para aplicativos prontos para uso off-line.

banco de dados em tempo real Cloud Firestore
Suporte offline para clientes Apple e Android. Suporte offline para Apple, Android e clientes da web.

Presença

Pode ser útil saber quando um cliente está online ou offline. O Firebase Realtime Database pode registrar o status da conexão do cliente e fornecer atualizações sempre que o estado da conexão do cliente mudar.

banco de dados em tempo real Cloud Firestore
Presença suportada. Não suportado nativamente. Você pode aproveitar o suporte do Realtime Database para presença sincronizando o Cloud Firestore e o Realtime Database usando o Cloud Functions. Consulte Criar presença no Cloud Firestore .

Consultando

Recupere, classifique e filtre dados de qualquer banco de dados por meio de consultas.

banco de dados em tempo real Cloud Firestore
Consultas profundas com classificação limitada e funcionalidade de filtragem .
  • As consultas podem classificar ou filtrar uma propriedade, mas não ambas.
  • As consultas são profundas por padrão: elas sempre retornam a subárvore inteira.
  • As consultas podem acessar dados em qualquer granularidade, até valores individuais de nós de folha na árvore JSON.
  • As consultas não requerem um índice; no entanto, o desempenho de determinadas consultas diminui à 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: elas retornam apenas documentos em uma determinada coleção ou grupo de coleções e não retornam dados de subcoleção.
  • As consultas devem sempre retornar documentos inteiros.
  • As consultas são indexadas por padrão: o desempenho da consulta é proporcional ao tamanho do seu conjunto de resultados, não ao seu conjunto de dados.

Gravações e transações

banco de dados em tempo real Cloud Firestore
Operações básicas de gravação e transação.
  • Grave dados por meio de operações de configuração e atualização.
  • As transações são atômicas em uma subárvore de dados específica.
Operações avançadas de gravação e transação.

Confiabilidade e desempenho

banco de dados em tempo real Cloud Firestore
O Realtime Database é uma solução regional.
  • Disponível em configurações regionais. Os bancos de dados são limitados à disponibilidade zonal dentro de uma região.
  • Latência extremamente baixa, opção ideal para sincronização de estado frequente.
Leia mais sobre as características de desempenho e confiabilidade do Realtime Database no Acordo de Nível de Serviço .
Cloud Firestore é uma solução regional e multirregional que escala automaticamente.
  • Abriga seus dados em vários datacenters em regiões distintas, garantindo escalabilidade global e forte confiabilidade.
  • Disponível em configurações regionais ou multirregionais em todo o mundo.
Leia mais sobre as características de desempenho e confiabilidade do Cloud Firestore no Contrato de nível de serviço .

Escalabilidade

banco de dados em tempo real Cloud Firestore
O escalonamento requer sharding.
  • Escale para cerca de 200.000 conexões simultâneas e 1.000 gravações/segundo em um único banco de dados. Escalar além disso requer a fragmentação de seus dados em vários bancos de dados.
  • Sem limites locais nas taxas de gravação para dados individuais.
O escalonamento é automático.
  • Escalas de forma totalmente automática. Atualmente, os limites de dimensionamento 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.
  • Tem limites nas taxas de gravação para documentos ou índices individuais.

Segurança

banco de dados em tempo real Cloud Firestore
Linguagem de regras em cascata que separa autorização e validação. Regras sem cascata que combinam autorização e validação.
  • Lê e grava de SDKs móveis protegidos pelas regras de segurança do Cloud Firestore .
  • Lê e grava de SDKs de servidor protegidos por gerenciamento de identidade e acesso (IAM) .
  • As regras não são colocadas em cascata, a menos que você use um curinga.
  • As regras podem restringir as consultas: se os resultados de uma consulta puderem conter dados aos quais o usuário não tem acesso, toda a consulta falhará.

Preços

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

banco de dados em tempo real Cloud Firestore
Cobra apenas pela largura de banda e armazenamento , mas a uma taxa mais alta.

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

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

O Cloud Firestore oferece suporte a limites de gastos diários para projetos do App Engine, para garantir que você não exceda os custos com os quais se sente confortável.

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

Usando o Cloud Firestore e o Realtime Database

Você pode usar os dois bancos de dados no mesmo aplicativo ou projeto do Firebase. Ambos os bancos de dados NoSQL podem armazenar os mesmos tipos de dados e as bibliotecas cliente funcionam de maneira semelhante. Lembre-se das diferenças descritas acima se decidir usar os dois bancos de dados em seu aplicativo .

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

Pronto para escolher um banco de dados?

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