Você está na página 1de 11

O Banco de Dados NoSQL Realtime

Database Firebase
Henrique Soares Rodrigues,
Eduardo Mattos Barboza,
Jonatan de Souza Freidmon

 
 
 
 
 
 
 
Parte 1 
 
Justificativa para a escolha do sistema
 
O sistema Realtime Database Firebase foi escolhido devido a familiaridade de 
integrantes do grupo com o mesmo, além de ser um banco de dados simples pertencente a 
Google, e ser utilizado por diversas linguagens de programação em diversos tipos de projetos 
diferentes. 

Histórico do modelo de dados 


 
O Realtime Database Firebase é uma empresa fundada em 2011 por James Tamplin e 
Andrew Lee. Em 2014 a Firebase foi comprada pelo Google. O primeiro produto dessa empresa 
foi justamente o seu banco de dados: o Firebase Realtime database, depois outros produtos 
foram lançados, como o Auth, para autenticação de usuários em aplicações com Facebook e 
Gmail, o Firestore, um banco de dados para guardar imagens e o Hosting, um serviço de 
hospedagem de sites na internet. 

Indicação do modelo de dados do sistema  


 
O modelo de dados do sistema é baseado em uma árvore de JSON, diferentemente do 
modelo de tabelas dos dados SQL. Abaixo um exemplo de árvore JSON no banco de dados: 
 

 
Figura 1: Exemplo de árvore JSON, no Realtime Database Firebase, criado pelos 
integrantes do grupo, representando universidades e seus cursos 
 
 
Principais referências URL do projeto escolhido: 
 
Site​: ​https://firebase.google.com/ 
Blog: ​https://firebase.googleblog.com/ 
Canal no Youtube: ​https://www.youtube.com/channel/UCP4bf6IHJJQehibu6ai__cg 
 

Características e diferenças do modelo relacional 


 
Tal banco de dados pode-se conectar diretamente ao front-end do cliente, sem 
necessidade da existência de um servidor back-end intermediário entre o banco e a aplicação, 
como também é totalmente mantido em operação pelo google . Atualmente esse banco de 
dados pode se conectar com aplicações web, android, IOS e feitas com UNITY, Flutter e C++. 
Outra grande diferença para banco de dados relacionais é que o Realtime Database é 
estruturado em árvores JSON, em vez de tabelas, onde as queries são feitas com códigos de 
programação de algumas linguagens disponibilizados por uma biblioteca do Firebase.  
 
Licenças de uso: 
 
No que tange às licenças de uso, o realtime database firebase é divido em plano spark e 
blaze. Contudo os planos funcionam da seguinte forma : o plano spark funciona de graça mas 
com limite no uso de dados, e uma vez que é ultrapassado o limite de 1GB gratuitos do Realtime 
Database Firebase, o usuário deve pagar 5 USD por GB, enquanto o plano Blaze, o usuário define 
uma quantia de GB que decide usar e pagar mensalmente. 
 
Versões: 
Atualmente o Firebase Realtime Database está em sua versão 19.5.1. Nas últimas 
versões foram corrigidos bugs que podem comprometer as transações, foi alterado o SDK para 
que este possa inferir a URL do banco, mesmo essa omitida. 
 
 
Parte 2  
 
O Firebase Realtime Database foi feito utilizando a linguagem de programação Java. O banco 
funciona em nuvem, portanto, não é necessário instalar localmente. Ele tem suporte para web, 
android, IOS, Unity, IOS. 
 

Parte 3 
 
3 - Suporte a características de bancos de dados relacionais, tais como interface SQL, 
transações, controle de concorrência, tuning, controle de acesso, backup e recovery, etc. 
 
 
 
 
Transações 
As transações são feitas por uma classe chamada Transaction, que encapsula o 
comando para o banco de dados utilizando a implementação handler, que retornará sucesso 
caso a transação seja bem sucedida, ou abortará a transação, caso esta seja mal sucedida. 
 
Controle de Acesso 
O controle de acesso é definido pelo dono do banco para leitura e gravação 
separadamente. Se o dono colocar “true”, qualquer um na internet pode ler ou gravar no banco, 
se colocar “false”, só quem se autenticou usando o Auth, outro serviço do Firebase, pode ler ou 
gravar no banco. 
 
Controle de Concorrência 
O banco de dados escolhido utiliza controle de concorrência, mas não disponibiliza 
informações acerca dele. 
 
Backup e Recovery 
O backup só pode ser feito por usuários que são assinantes pagos do plano Blaze e é 
feito por exportação de um arquivo JSON, que pode ser posteriormente importado para restaurar 
o banco. 
 
Tuning 
Como tuning, pode-se citar as seguintes recomendações: 
● Utilizar os SDKs nativos do Firebase em vez de usar APIs, com requisições GET e 
PUT,  
 
● pois estas demoram mais a serem executadas. 
● Modelar as árvores para que tenham altura mínima, pois com muitos nós 
intermediários, é mais custoso selecionar as folhas. 
● Indexar as consultas, ou seja, pesquisas por chaves são mais eficientes do que 
pesquisas por valor. 
● Reutilizar sessões SSL. 

 
Parte 4 
 
 
Características de distribuição de dados:  
 
os dados são distribuídos em árvores JSON  
 
Figura 2: Exemplo de árvore JSON, no Realtime Database Firebase 
 
Big data: 
 
As funções em tempo real no Firebase foram projetadas para grandes conjuntos de 
dados, como a transmissão de registros em tempo real. Os bancos do Firebase também 
possuem suporte a machine learning. 
 
Replicação​:  
 
O Firebase Realtime Database não tem suporte para replicação. 
 
Tolerância a falhas:  
 
Os dados podem estar desatualizados, por exemplo, ou dois usuários em lados opostos 
de uma rede que foi particionada podem fazer atualizações conflitantes e que precisem ser 
resolvidas. A tolerância a falhas é feita utilizando os transactions, pois quando um usuário 
seleciona um dado que está sendo atualizado, como a transaction não foi terminada, o dado que 
será retornado será o antigo. 
 
Escalabilidade: 
 
Como o Firebase Realtime Database não possui uma estrutura rígida de tabelas mas 
sim árvores JSON, os bancos que o utilizam podem ser alterados (partes novas serem 
adicionadas ou excluídas) de forma mais rápida e simples. Além disso, os bancos possuem um 
limite de 200 mil conexões simultâneas, e também é possível dividir seus dados entre várias 
instâncias de banco de dados no mesmo projeto do Firebase. 
 
Parte 5 
 
Linguagens de definição 
 
O Firebase Realtime Database não possui uma linguagem específica para manipulação de 
dados, como é o SQL para bancos como MySQL e PostgreSQL, mas os dados podem ser 
manipulados por códigos na aplicação, que podem ser em Java, JavaScript, Python, C++, e Swift. 
 
Manipulação e consulta de dados, com exemplos ilustrativos 
de utilitários e ferramentas de interface com os dados armazenados 
 
Abaixo um exemplo de como conectar o banco de dados a uma aplicação web: 
 

 
Figura 3: Exemplo de conexão do banco com aplicação web 
 
Exemplos de salvar dados no banco: 
 

 
Figura 4: Exemplo de salvamento de dados no Realtime Database Firebase  
 
Figura 5: Exemplo de salvamento de dados no Realtime Database Firebase 
 

 
Figura 6: Exemplo de salvamento de dados no Realtime Database Firebase 
 
Exemplos de selecionar dados no banco: 
 

 
 
Figura 7: Exemplo de seleção de dados no Realtime Database Firebase
 
Figura 8: Exemplo de salvamento de dados no Realtime Database Firebase 

 
Figura 9: Exemplo de salvamento de dados no Realtime Database Firebase 
 
Abaixo estão telas de um exemplo de uma pequena aplicação web que utiliza o Firebase 
Realtime Database para administrar dados de universidades, seus cursos e seus alunos: 
 

 
Figura 10: Interface feita com HTML e Javascript representando os dados armazenados 

 
 
 
Figura 11: Interface feita com HTML e Javascript representando os dados armazenados
 
O banco deste exemplo: 

 
Figura 12: Representação dos dados armazenados no Realtime Firebase Database 
 

   
Parte 6
 
Limitações conhecidas do sistema, inclusive limites físicos 
 

● Habilidades limitadas de query, devido ao modelo de stream de dados do 

Firebase 

● Modelos tradicionais de dados não são aplicáveis ao NoSQL, então SQL não 

pode ser usado. 

● Sem instalação na máquina que for utilizar o realtime database firebase 

● Permite somente 200 conexões simultâneas 

● Respostas simultâneas enviadas a partir de um único banco de dados são em 

média 100.000/segundo 

● Quantidade de operações da cloud acionadas por uma única gravação é igual a 

1000 

● Tamanho do evento acionado por uma única gravação é 1MB 

● Transferência de dados para o Cloud Functions funciona a 10MB/segundo 

sustentado

Parte 7 
 
Principais usuários e exemplos de aplicações com ilustrações 
 
Algumas das principais empresas que utilizam o Firebase Realtime Database em suas 
aplicações são: The New York Times, MPR One, Halfbrick, Duolingo, Alibaba, Lyft, Venmo, The 
Economist, Trivago, Ctrip. Wattpad e Gameloft.  

 
Figura 13: Exemplos de empresas que se utilizam do Realtime Database Firebase 
Como exemplo de aplicação, desenvolvemos uma pequena aplicação web que insere e 
recupera dados sobre universidades(seus nomes e estados onde ficam), cursos de 
graduação(seus nomes, suas áreas e as universidades que os albergam) e alunos(seus nomes, 
idades e os cursos que frequentam). Além disso, esses dados são armazenados no Realtime 
Database Firebase. 
 
 

 
Figura 14: Front-End da aplicação desenvolvida pelos integrantes do grupo, que utiliza o 
Realtime Database Firebase 

Você também pode gostar