Qual é a diferença entre o Cloud Firestore e o Firebase Realtime Database?

252

O Google acaba de lançar o Cloud Firestore, seu novo banco de dados de documentos para aplicativos.

Eu tenho lido a documentação, mas não vejo muitas diferenças entre o Firestore e o Firebase DB.

O ponto principal é que o Firestore usa documentos e coleções que permitem o uso fácil de consultas em comparação com o Firebase, que é um banco de dados noSQL tradicional com base em JSON.

Gostaria de saber um pouco mais sobre suas diferenças, usos ou se o Firestore acabou de substituir o Firebase DB?

Francisco Durdin Garcia
fonte
1
As leituras são mais rápidas no Firestore, as gravações são mais rápidas no Firebase Real Time Database
DragonFire

Respostas:

380

Por isso, escrevi um post inteiro sobre essa questão e recomendo que você verifique (ou a documentação oficial ) para obter uma resposta mais completa.

Mas se você quiser o resumo rápido (-ish), aqui está:

Melhor consulta e dados mais estruturados - Embora o Banco de Dados em Tempo Real seja apenas uma árvore JSON gigante, o Cloud Firestore é um pouco mais estruturado. Todos os seus dados consistem em documentos (que são basicamente armazenamentos de valores-chave) e coleções (que são coleções de documentos). Os documentos também apontam frequentemente para subcoleções, que contêm outros documentos, que podem conter outros documentos, etc.

Esses dados estruturados ajudam você de duas maneiras. Primeiro, todas as consultas são superficiais , o que significa que você pode solicitar um documento sem pegar todos os dados abaixo. Isso significa que você pode manter seus dados armazenados hierarquicamente de uma maneira que faça mais sentido para você, sem ter que se preocupar em manter seu banco de dados superficial. Segundo, você tem consultas mais poderosas. Por exemplo, agora você pode consultar vários campos sem precisar criar esses campos "combinados" que combinam (e desnormalizam) dados de outras partes do seu banco de dados. Em alguns casos, o Cloud Firestore apenas executa essas consultas diretamente e, em outros casos, cria e mantém automaticamente índices para você.

Projetado para escalar - o Cloud Firestore poderá escalar melhor que o banco de dados em tempo real. É importante observar que suas consultas são dimensionadas para o tamanho do seu conjunto de resultados, não para o seu conjunto de dados. Portanto, a pesquisa permanecerá rápida, independentemente do tamanho do seu conjunto de dados.

Busca manual mais fácil de dados - como o banco de dados em tempo real, você pode configurar ouvintes no Cloud Firestore para transmitir as alterações em tempo real. Mas se você não deseja esse tipo de comportamento e apenas deseja uma chamada simples "buscar meus dados", o Cloud Firestore também o possui, e é incorporado como um caso de uso principal. (Eles são muito melhores do que as oncechamadas na terra do banco de dados em tempo real)

Suporte para várias regiões - Isso basicamente significa mais confiabilidade, pois seus dados são compartilhados em vários data centers ao mesmo tempo. Mas você ainda tem uma consistência forte, o que significa que você sempre pode fazer uma consulta e ter certeza de que está obtendo a versão mais recente dos seus dados.

Modelo de preços diferente - enquanto o Banco de Dados em Tempo Real cobra principalmente com base no armazenamento ou na largura de banda da rede, o Cloud Firestore cobra principalmente com base no número de operações que você executa. Isso será melhor ou pior? Depende do seu aplicativo.

Para ativar um aplicativo de notícias, um jogo multiplayer baseado em turnos ou algo como sua própria versão do Stack Overflow, o Cloud Firestore provavelmente parecerá bastante favorável do ponto de vista de preços. Para algo como um aplicativo de desenho em grupo em tempo real para o qual você envia várias atualizações por segundo para várias pessoas, provavelmente será mais caro que o Banco de Dados em Tempo Real.

Por que você ainda pode querer usar o banco de dados em tempo real - tudo se resume a alguns motivos. 1) Essa coisa toda "provavelmente será mais barata para aplicativos que fazem muitas atualizações frequentes" que eu mencionei anteriormente, 2) já existe há muito tempo e foi testada em batalha por milhares de aplicativos, 3) tem melhor latência e quando você precisar de algo com latência confiável e baixa para ter uma sensação em tempo real, o banco de dados em tempo real poderá funcionar melhor.

Para a maioria dos aplicativos novos, recomendamos que você confira o Cloud Firestore. Mas se você tiver um aplicativo que já esteja no banco de dados em tempo real, não recomendo a troca apenas por uma questão de troca, a menos que você tenha um motivo convincente para fazê-lo.

Espero que ajude!

Todd Kerpelman
fonte
2
Muito obrigado Todd! Eu vi o anúncio, mas não este! Estou totalmente apaixonada pelo Firestore, infelizmente agora vou precisar reescrever todo o meu RxJava embrulhado para este xD.
Francisco Durdin Garcia
1
Como o Google Cloud Datastore se encaixa? Ingenuamente, parece haver muita sobreposição com o Cloud Firestore. @ToddKerpelman
Jon G
2
Ele tem muito em comum com o Cloud Datastore. A maior diferença é a integração com o Firebase, para que você tenha acesso aos SDKs móveis e da Web, além de um modo offline nativo, além dos recursos de sincronização em tempo real. O Cloud Datastore é ótimo para o desenvolvimento em larga escala do lado do servidor, onde você gerencia sua própria conexão com o aplicativo, como a execução de seu próprio site no App Engine ou via Compute / Container Engine.
Todd Kerpelman
2
O que significa "consistência forte" realmente significa? O teorema do CAP afirma que você não pode "ter certeza de que está obtendo a versão mais recente dos seus dados" em um ambiente distribuído e disponível. Consistência, disponibilidade, tolerância a partição => pegar 2.
AjahnCharles
1
@ToddKerpelman Qualquer chance de fazer uma comparação do Cloud Firestore / Cloud Datastore. Os dois parecem muito parecidos.
TheAddonDepot
63

Você pode ler o artigo completo aqui: https://medium.com/@beingrahul/firebase-cloud-firestore-vs-firebase-realtime-database-931d4265d4b0

Firebase Realtime databaseque é estruturado como uma árvore JSON, mas que Cloud Firestoreé armazenado em documentos (que é um conjunto de pares de valores-chave) e formatos de coleção (que é uma coleção de documentos).

Mais dados de estrutura

O banco de dados em tempo real armazenou dados na árvore JSON, mas o Cloud armazenou dados armazenados em documentos muito semelhantes ao JSON. insira a descrição da imagem aqui

No Cloud FireStore, os Documentos podem conter sub-coleções e objetos aninhados (como 'telefone' na figura acima), os quais podem incluir campos primitivos, como cadeias de caracteres (como 'nome', 'email' etc. na figura acima) ou objetos complexos como listas.

Melhor consulta

  • No banco de dados em tempo real, podemos classificar ou filtrar apenas uma propriedade em uma única consulta, não classificar e filtrar uma propriedade enquanto No Cloud FireStore, você pode encadear filtros e combinar filtragem e classificação em uma propriedade em uma única consulta.
  • Se você deseja buscar dados em ordem decrescente, o Cloud fireStore é muito útil para você, mas para o banco de dados em tempo real, não há recurso de consulta disponível. insira a descrição da imagem aqui
  • Você também pode encadear vários métodos "where" para criar consultas mais específicas (AND lógico) no Cloud FireStore. insira a descrição da imagem aqui

Escalabilidade

O Cloud Firestore poderá escalar melhor que o banco de dados em tempo real. É importante observar que o desempenho da sua consulta é proporcional ao tamanho do seu conjunto de resultados, não ao seu conjunto de dados. Portanto, a pesquisa permanecerá rápida, independentemente do tamanho do seu conjunto de dados.

Busca manual de dados

Podemos ouvir dados em tempo real no banco de dados do Cloud FireStore, como em tempo real, mas no Cloud FireStore, também podemos buscar dados manualmente (se você quiser ver os dados apenas uma vez).

Segurança

No banco de dados em tempo real, precisamos validar dados separadamente usando a regra de validação, mas no Cloud FireStore, a validação de dados ocorre automaticamente.

Escrevendo os dados

Podemos executar várias operações como um único lote e concluí-las atomicamente, com qualquer combinação dos métodos set(), update()ou delete(). insira a descrição da imagem aqui

Preços

No banco de dados em tempo real, cobra apenas pela largura de banda e armazenamento, mas a uma taxa mais alta. Enquanto estiver no Cloud FireStore, cobra principalmente pelas operações realizadas no seu banco de dados (leitura, gravação, exclusão) e, em uma taxa mais baixa, largura de banda e armazenamento.

0xAliHn
fonte
12
Seria bom para ligar o artigo original: medium.com/@beingrahul/...
Salem Ouerdani
1
Você pode explicar com mais detalhes o que significa 'validação de dados automaticamente'?
SoEzPz 27/05
12

Razões para escolher o Cloud Firestore em vez do banco de dados em tempo real

É uma versão melhorada

O banco de dados do Firebase foi suficiente para aplicativos básicos. Mas não era poderoso o suficiente para lidar com requisitos complexos. É por isso que o Cloud Firestore é apresentado. Aqui estão algumas mudanças importantes.

  • A estrutura básica do arquivo foi aprimorada.
  • Suporte offline para o cliente web.
  • Oferece suporte a consultas mais avançadas.
  • As operações de gravação e transação são atômicas.
  • Melhorias de confiabilidade e desempenho
  • A escala será automática.
  • Será mais seguro.

Preços

No Cloud Firestore, as taxas diminuíram, mesmo cobrando principalmente as operações executadas no banco de dados, juntamente com a largura de banda e o armazenamento. Você também pode definir um limite de gastos diários. Aqui estão os detalhes completos sobre o faturamento.

Planos futuros do Google

Quando descobriram as falhas do banco de dados em tempo real, eles criaram outro produto, em vez de melhorar o antigo. Embora não haja detalhes confiáveis ​​que revelem suas classificações atuais no banco de dados em tempo real, é hora de começar a pensar que é provável que seja abandonado.



Bertram Gilfoyle
fonte
2

Sugerir link do google também: Firebase Real-time Database vs FireStore

Extraído do google docs, uma pequena sumamry aqui:

O FireBase Real Time DB é um banco de dados NO SQL DB baseado em JSON, destinado a aplicativos móveis, regionais e usado normalmente para armazenar e sincronizar dados entre usuários / dispositivos em tempo real / latência extremamente baixa.

O FireStore é um banco de dados NOSQL semelhante ao JSON, criado para alta simultaneidade, persistência global e de fácil escalabilidade automática, projetado para qualquer cliente (não apenas aplicativos móveis) com casos de uso típicos, como rastreamento de ativos, análise em tempo real, criação de catálogos de produtos de varejo, usuário social perfil, classificações de jogos, aplicativos baseados em bate-papo etc.

TechFree
fonte