Texto de: Letícia Garcez
Introdução
O Cloud Firestore e o Realtime Database são dois serviços de banco de dados oferecidos pelo Firebase que podem ser usados para armazenar dados em aplicativos móveis e da web. Estas duas soluções são similares, mas possuem algumas diferenças bem significativas que vamos abordar neste artigo.
Contexto
Antes de começarmos a falar sobre as diferenças entre esses dois produtos, é importante termos um pouco de contexto acerca de quando e porque eles surgiram. Vamos começar pelo Realtime Database, que é um banco em tempo real baseado em JSON. Esse tipo de banco de dados surgiu em 2012 a partir de um serviço de mensagens para websites, chamado Envolve. Quando os donos dessa empresa perceberam que os desenvolvedores queriam mais operações realtime além de apenas o envio de mensagens, criaram a empresa Firebase que teve como seu primeiro produto essa infraestrutura, ou seja, o Realtime Database.
Em 2014, a empresa Firebase foi comprada pela Google e em 2017 foi lançado o segundo personagem central do nosso artigo: o Cloud Firestore, um banco NoSQL baseado em documentos. Esses não são os únicos produtos disponíveis dentro do Firebase, mas como este artigo foca apenas neles vou deixar outras ferramentas como autenticação, hosting, etc. de fora.
O que é um banco em tempo real?
Antes de entendermos o conceito de banco em tempo real, acho importante entendermos o que é um Aplicativo em Tempo Real, o qual é a tecnologia que mais utiliza esse tipo de banco. Um aplicativo em tempo real, é um aplicativo onde informações são atualizadas imediatamente, ao menos na percepção do usuário.
Pense em um aplicativo de mensagens como o WhatsApp, por exemplo. Se você envia uma mensagem para alguém, essa pessoa costuma receber essa mensagem no que parece ser o mesmo momento que você a enviou, não é? Então, essa é a ideia de um aplicativo em tempo real.
Um banco em tempo real é aquele que mantém informações sempre atualizada em tempo real, ou seja, “imediatamente”. Como muitos bancos de dados, esses bancos também precisam executar alguns scripts de atualização de tempos em tempos, a diferença é que enquanto em bancos tradicionais uma pessoa precisaria agendar a execução desses scripts, em um banco de tempo real, esses scripts são executados assim que houver a necessidade.
Além disso, dados nesse tipo de banco costumam ser armazenados de uma forma mais “simples”, como no Firebase Realtime Database que armazena todos os dados em uma árvore JSON.
O que um banco NoSQL?
O termo NoSQL é um termo bem amplo que costuma abrigar vários tipos de bancos de dados que não são relacionais. Um exemplo muito famoso de banco NoSQL é o banco MongoDB, baseado em documentos, embora também possamos citar bancos de chave-valor como o Redis e bancos de Grafos como o Neo4j como representantes de bancos NoSQL.
Um banco NoSQL baseado em documentos é um banco que organiza seus dados em documentos, conjuntos de dados estruturados de uma forma similar a um JSON, mas sem uma estrutura fixa, como acontece nas tabelas SQL. Fazendo um paralelo com os bancos relacionais, uma entrada em uma tabela, que corresponde a uma linha, seria o equivalente a um documento em um banco NoSQL baseado em documentos.
Diferenças entre Cloud Firestore e Realtime Database
Agora que já entendemos um pouco do conceito por trás desses bancos, podemos focar as diferenças específicas entre eles.
A primeira diferença que quero trazer aqui, é que por ser baseado em documentos, o Cloud Firestore permite consultas muito mais elaboradas do que o Realtime Database, permitindo consultas mais elaboradas. Além disso, o Cloud Firestore foi pensando para ter mais flexibilidade e ser mais escalável do que o Realmtime Database, o que é uma característica desejável em múltiplos contextos.
O Cloud Firestore também possui alguns recursos de seguranças a mais quando comparado ao Realtime Databse, como o controle de acesso baseado em função, que permite restringir o acesso a recursos com base em funções definidas pelo usuário, enquanto o Realtime Databse tem um modelo de segurança mais simples, que permite a restrição de dados com base em chaves de autenticação.
De forma geral, podemos entender o Cloud Firestore como uma “versão melhorada” do Realtime Databse, com uma série de recursos adicionais que o tornam mais flexível e poderoso com relação ao Realtime Database.
Qual banco devo escolher?
Talvez quando você leu o parágrafo anterior, isso automaticamente tenha feito você decidir usar o Cloud Firestore ao invés do Realtime Database, mas a escolha pela solução de banco de dados vai depender de necessidades específicas do projeto que você está desenvolvendo. O próprio Firebase tem uma página que pode te ajudar a escolher a melhor opção para o seu projeto, e você pode acessar essa página clicando aqui.
Essa página traz além de aspectos básicos como funcionalidades, outros pontos que devem ser analisados como preços e como diferentes aspectos dos bancos, como leitura e escrita, funcionam, o que permite que você faça uma escolha bem informada.
Considerações finais
Neste artigo falamos sobre qual é a diferença entre o Cloud Firestore e o Realtime Dabatase, ambos recursos disponibilizados no Firebase. Se você está considerando utilizar uma dessas ferramentas na sua aplicação, recomendo que você dê uma olhada mais a fundo na documentação dessas tecnologias e avalie qual delas fornece as melhores funcionalidades para a sua aplicação.