Escolar Documentos
Profissional Documentos
Cultura Documentos
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.
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
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
Firebase
● Modelos tradicionais de dados não são aplicáveis ao NoSQL, então SQL não
média 100.000/segundo
1000
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