Você está na página 1de 76

Banco de Dados NoSQL

Prof. Henrique Batista da Silva


Apresentação da disciplina
Prof. Henrique Batista da Silva
professor.henriquebatista@gmail.com

• Graduado em Sistemas de Informação (PUC


Minas).
• Mestre em Informática (PUC Minas - Microsoft
Innovation Center).
• Doutorando em Ciência da Computação (UFMG).
Prof. Henrique Batista da Silva

• Atuação profissional: visão computacional,


aprendizado de máquina/deep learning, banco
de dados.

• Ensino: graduação e pós (lato sensu).


Objetivo

O objetivo desta disciplina é apresentar os


principais conceitos sobre banco de dados não
relacional, apresentar os principais tipos de bancos
existentes e realizar práticas que visam a utilização
destes bancos NoSQL.
Ementa

• Aula 1 - Introdução a NoSQL: Big Data e NoSQL; Dados não


estruturados; e NoSQL e SGBDR
• Aula 2 - Teorema CAP, BASE e Banco de dados chave-valor
• Aula 3 - Banco de dados de documentos
• Aula 4 - Banco de dados de Família de colunas (colunar)
• Aula 5 - Banco de dados de Grafos
• Aula 6 - Banco de dados de Grafos com Python; extração de
dados não estruturados (twitter); aplicações com NoSQL.
Critério de avaliação

• 4 exercícios (questionários) online. 10 pontos


cada (10 x 4)
• 4 atividades práticas em python: 15 pontos
cada (15 x 4).
• Total: 100 pontos (70 para aprovação)
Critério de avaliação

• Critérios de reavaliação:
• Não atingir 70 pontos na disciplina
• Número igual ou superior a 25% de falta e
menor que 40% (na condição de atingir os 70
pontos). 2 faltas/dias caracterizam 33%.
• 3 faltas/dias reprovação sem direito a
reavaliação.
Apresentação

Prof. Henrique Batista da Silva

• Link para acesso do material:


Dicas de estudos

• Um pouco mais sobre banco de dados


Relacional:

• Acesse o material sobre banco de dados


relacional no link anterior. Leitura
recomendada (mas não obrigatória) até a
próxima aula.
Dicas de estudos

• The Python Tutorial:

• https://docs.python.org/3.7/tutorial/
Linguagem mais usada para Data Science

Fonte: http://www.kdnuggets.com/2017/01/most-popular-
language-machine-learning-data-science.html
Na aula de hoje

• Big Data / volume de dados e dados não


estruturados
• Banco relacional e NoSQL
• Por quê NoSQL
• Tipos de bancos NoSQL
Fonte: http://brainsciences.org/launch-of-the-big-data-analytics-journal/
Introdução

A quantidade de dados produzidos nos últimos


anos teve um gigantesco aumento.
Dados são gerados por diversas fontes (redes
sociais, jornais, revistas e em diversas mídias).
Desafio de Big data
Redes Medicina
sociais Previsão do tempo

e-commerce Hábitos de consumo


Business Inteligence

TVs
Coleta de informação Correlação Predição /
Análise

Armazenamento Manipulação de
Satélites grande quantidade
Insight
de informação

Sensores

Fonte: imagem adaptada de: Ron Kasabian. Intel Big Data & Cloud Summit, 2013
Demonstrações

• Revista Fortune (27/03/2016)


• Netflix: “Informações geográficas, de gênero e idade são inúteis”
• BigData está sendo usado para identificar quais categorias são
inúteis para segmentar os consumidores da Netflix
• Exemplo: 90% do volume de streaming de animes vem de fora do
Japão.
• Descobriram que gostar de anime está menos relacionado com a sua
nacionalidade e mais com o quão “nerd” você é.

Fonte: Revista Fortune: http://fortune.com/2016/03/27/netflix-predicts-taste/


Qual o tamanho do Big data?

Mais de 90% dos dados no mundo foram criados


nos últimos dois anos1.
• 2009 o volume de dados estava em torno de
0.8 ZB
• Estimativa para 2020: 35 ZB

1Fonte: http://elearningclub.blogspot.com.br/2012/11/a-explosao-da-informacao-e-o-deep.html
Qual o tamanho do Big data?

88% dos dados


em 2015 são
dados não
estruturados

Fonte: Fran Navarro. Hardware e Software Engineered to Work Together. Oracle Open World
Dados não estruturados

• Recuperação de dados não estruturados:


• Recuperação de itens de informação possivelmente relevantes
para a necessidade de informação do usuário;
• Recuperação de alguns itens de informação não relevantes é
aceitável (mínimo possível).
• Itens de informação recuperados são ranqueados.
• Dados não estruturados. Exemplos:
• artigos científicos;
• publicações de grande circulação;
• Web, redes sociais.
• Imagens, vídeos.
Ciência dos Dados

Fonte: https://www.oreilly.com/ideas/analyzing-the-analyzers
Alguns desafios para persistências de dados

• Como armazenar mais de 1 bilhão de usuários


do facebook (e informações sobre seus
comportamentos)?
• Como o Google pode armazenar o índice de
toda Web?
Alguns desafios para persistências de dados

Hoje há novos desafios e banco de dados NoSQL


foram criados com o objetivo de manipular
volumes maiores de dados.

NoSQL: “Not Only SQL”


Alguns desafios para persistências de dados

O termo NoSQL é aplicado a alguns banco de


dados não relacionais, como Cassandra, MongoDB,
Neo4j, Riak, Redis, Firebase, entre outros.
Considerações sobre NoSQL
Crescimento do NoSQL

“NoSQL Market is expected to garner $4.2 billion


by 2020, registering a CAGR1 of 35.1% during the
forecast period 2014-2020”
Allied Market Research, abril 2015

1CAGR: Taxa de crescimento para um determinado período.

Fonte: https://www.alliedmarketresearch.com/NoSQL-market?NoSQL-market
Mercado para NoSQL

“NoSQL é a 4ª tecnologia mais preferida pelas


empresas que oferecem 1.002% empregos aos
aspirantes”
Bentley University, 2017

Fonte: https://www.forbes.com/sites/jeffkauflin/2017/01/08/the-10-technical-skills-with-
explosive-growth-in-job-demand/
Introdução à NoSQL
Armazenamento dos dados

A quantidade massiva de dados, principalmente


dados não estruturados, a serem manipulados é
uma realidade e tende a aumentar cada vez.

Soluções de armazenamento de dados massivos


tornam-se necessárias.
Armazenamento dos dados

Por muito tempo banco de dados Relacionais tem


sido o principal meio de armazenamento de dados.

O modelo de dados relacional foi introduzido por


Edgar Codd em 1970 (IBM).
Armazenamento dos dados

A ideia de modelo relacional era representar


entidade e relacionamento de maneira
uniforme.
Os SGBDs Relacionais mais conhecidos hoje são
MySQL (Oracle), Oracle (Oracle) e SQL Server
(Microsoft).
Exemplo de um modelo Relacional

Modelo de Relacional
Tabela: Cliente Tabela: Pedido
(organizado em tuplas, Id Nome Id IdCliente IdEndEntrega
1 1 1
normalizado, e possui
1 Marcos

Tabela: ItemPedido
integridade referencial) Id IdPedido IdProduto Preço
1 2 10 350,00

Tabela: Endereço Tabela: Produto


Id Logradouro Cidade Estado CEP Id Nome
1 Av. Sen. Natal RN 59.056-000 10 Laptop
Salgado Filho
Alguns desafios para persistências de dados

Atomicidade (a transação é executada totalmente ou é


executada), Consistência (sistema sempre consistente após
uma operação), Isolamento (transação não sofre
interferência de outra transação concorrente), e
Durabilidade (o que foi salvo não é mais perdido)

• Força a consistência ao final de cada transação


Alguns desafios para persistências de dados

Difícil implementar escalabilidade para banco de


dados relacionais.

Modelo não favorece replicação dos dados em


cluster. Esquema rígido (mudança são mais
complexas)
Armazenamento NoSQL

Hoje há novos desafios e banco de dados NoSQL foram


criados com o objetivo de manipular volumes maiores de
dados.

NoSQL: “Not Only SQL”: Na prática seria algo como


“NoRelational” (mas podem ter relacionamentos, porém não
são orientados à tabelas)
Vantagens do NoSQL

Modelo de dados mais flexível

NoSQL fornece um modelo de dados que se


adapta melhor às necessidades da aplicação
(modelagem mais rápida e menos código).
Armazenamento NoSQL

Grande quantidade de dados: Necessita de


processamento em cluster (armazenamento dividido
entre vários servidores).

Favorece replicação de dados e escalabilidade.


Surgimento e características do NoSQL

O termo NoSQL: Meetup em 2009


A ideia principal em torno do nome é não utilizar
SQL (mas linguagens semelhantes)
São geralmente projetos de código aberto.
Em sua maioria são orientados para execução em
clusters.
Surgimento e características do NoSQL

Não há uma esquema para definição de banco de


dados NoSQL. É possível adicionar novos campos aos
registros sem haver, previamente, uma definição do
esquema.
Os três V’s
Surgimento e características do NoSQL

Banco de dados NoSQL surgiram particularmente


em resposta aos três desafios (os três V’s):
volume de dados (data volume); velocidade de
dados (data velocity) e variedade de dados (data
variety)
Volume de dados

O aumento do volume de dados tem sido um dos


principais motivos pela adição de NoSQL.
Grandes bases de dados são complicadas de
manipular em um banco relacional.
Tempo de execução de consultas aumenta muito
(joins são lentos)
Velocidade de dados

Ou seja, velocidade em que os dados mudam.

O banco de dados precisa suportar muitas edições


(velocidade de leitura e escrita) e com picos de
atividades (banco relacional podem não suportar
altos picos de leitura/escrita).
Velocidade de dados

Outro problema com velocidade de dados é medida


em que a estrutura dos dados muda.

Além da rápida mudança dos dados, o banco deve


lidar com a rápida mudança no modelo de dados
(banco relacional não suporta tal mudança
facilmente).
Variedade de dados

Os dados podem ser densos (muitos dados sobre


determinada entidade) ou esparsos (poucos dados),
conectados ou desconectados, com regular ou
irregular estrutura.

Limitações: banco relacional terão muitos campos


nulos.
Os 5 V’s

Hoje já são considerados os 5 V’s:

Além de Volume, Velocidade e Variedade:

Veracidade: com grande volume de dados, muitos podem


não estar 100% corretos. A acurácia depende da veracidade
da fonte de dados. Valor: Se os dados processador não
gerarem valor para o negócio, todo o esforço e investimento
tornam-se inúteis.
Problema do mundo real
Álbum de músicas

Considere uma aplicação que contém o perfil


de músicos, bandas, álbuns e músicas.
Iremos resolver um problema do mundo real e
veremos quais as limitações ao usar um
modelo Relacional.
Referências: Paniz, David. NoSQL: Como armazenar os dados de uma aplicação moderna. Casa do Código, 2017.
Especificação

Cadastro dos álbuns:


além da banda e das músicas, um álbum
também possui por padrão ano de
lançamento, ilustrador da capa, produtor
ou qualquer outra informação necessária.
Referências: Paniz, David. NoSQL: Como armazenar os dados de uma aplicação moderna. Casa do Código, 2017.
Especificação

Ex.: Um disco pode conter o número de semanas


que ficou em primeiro lugar na Billboard* e o
número de músicas na primeira posição (nem
todo disco irá figurar nas primeiras posições)

* Revista norte americana sobre indústria da música


Referências: Paniz, David. NoSQL: Como armazenar os dados de uma aplicação moderna. Casa do Código, 2017.
Especificação

Cadastro dos álbuns:


além da banda e das músicas, um álbum
também possui por padrão ano de
lançamento, ilustrador da capa, produtor
ou qualquer outra informação necessária.
Referências: Paniz, David. NoSQL: Como armazenar os dados de uma aplicação moderna. Casa do Código, 2017.
Especificação

• É necessário armazenar informações sobre o


estúdio.
• Sabe-se que muitos discos são gravados em
um único estúdio, mas podem ser gravados
em mais de um ou em nenhum (disco
independente).
Referências: Paniz, David. NoSQL: Como armazenar os dados de uma aplicação moderna. Casa do Código, 2017.
Especificação

• Observe neste cenário que muitos campos


não farão sentidos para muitos discos.
• Seria necessário uma estrutura diferente
para cada disco (usar modelo relacional?).

Referências: Paniz, David. NoSQL: Como armazenar os dados de uma aplicação moderna. Casa do Código, 2017.
Modelo Relacional
Album
semanasEmPr numMusicasE
Cod nome artista dataLanc estudio produtor imeiro mPrimeiro Mesma estrutura
The Dark Side Pink Floyd para todos os
1 Of The Moon Pink Floyd 4/29/1973 1 3
registros.
Sound City
Studios,
Smart Studios
2 Nevermind Nirvana 1/11/1992 (Madison) 1 1
3 Independente independente 01/01/2017

Observe que seria necessário


Musica também uma nova tabela chamada
CodMusica Nome CodAlbum
Estúdio, uma vez que podem haver
mais de um estúdio para cada Álbum
Modelo Relacional
Album Uma desvantagem
clara para este tipo
semanasEmPr numMusicasE
Cod nome artista dataLanc estudio produtor imeiro mPrimeiro de problema diz
The Dark Side Pink Floyd respeito a
1 Of The Moon Pink Floyd 4/29/1973 1 3
Sound City
quantidade de
Studios, colunas para
2 Nevermind Nirvana 1/11/1992
Smart Studios
(Madison) 1 1
representar cada
3 Independente independente 01/01/2017
campo possível
(que só fará sentido
para alguns
registros).

Musica Em alguns casos,


CodMusica Nome CodAlbum podemos chegar a
dezenas de colunas.
Modelo Relacional (solução alternativa)
Album

Cod codBanda nome Solução alternativa


1 1 Master of Puppets usando o modelo
2 1 ...And Justice for All Relacional que visa
evitar a inclusão de
Valores
registros nulos.
Atributos

codAlbum codAtributo valor cod nome

1 1 03/03/86 1 Data de lançamento

2 1 25/08/88 2 Estudio

1 2 Sweet Silence Studio


Modelo Relacional (solução alternativa)

• Observe que a solução torna a manipulação


do banco muito mais complexa.
• Veja o exemplo para uma simples consulta
que exibe os detalhes de cada álbum.
SELECT atr.nome, val.valor
FROM atributos atr INNER JOIN valores val ON val.id-atributo = atr.id
WHERE val.id-album = 1;
Limitações

• Problemas mais complexos podem


transparecer melhor as limitações do modelo
relacional. Ex.: sites de e-commerce,
catálogos (Netflix, spotify), etc..

Referências: Paniz, David. NoSQL: Como armazenar os dados de uma aplicação moderna. Casa do Código, 2017.
Limitações

• O objetivo não é resolver problemas não


solucionáveis com o banco relacional, e sim
obter soluções mais simples e práticas (e
escaláveis).

Referências: Paniz, David. NoSQL: Como armazenar os dados de uma aplicação moderna. Casa do Código, 2017.
Unidades de ensino
Unidade I

Introdução à NoSQL: Conceitos principais; Banco


NoSQL x Banco Relacional; ACID e BASE, Teorema
CAP
Unidade I

Banco de dados chave-valor : os registros


pertencem a mesma coleção de elementos, e todos
possuem uma chave única.
Ex: Redis
Unidade II

Família de colunas (colunares): todos os


registros fazem parte da mesma tabela, mas
podem conter diferentes colunas.
Ex: Cassandra
Unidade III

Documento: registros em coleções específicas,


mas não há esquema fixo de registros.
Ex.: MongoDB
Unidade IV

Grafo: registros são nós de um grafo e são


interligados por relacionamentos.
Ex.: Neo4j

Considerações finais: Vantagens e


desvantagens; persistência poliglota
Atividades práticas

Cada unidade será composta por vários exemplos


práticos (utilização do banco de dados por meio da
sua CLI e implementações) que serão
desenvolvidos junto com o professor.
Atividades práticas

Cada unidade será composta também por algumas


atividades práticas que serão propostas

Estas atividades envolverão práticas de utilização


do banco (principalmente com ferramentas de CLI
e implementações em Python)
Quais são os banco de dados NoSQL

• Banco de dados chave-valor:

• Armazenamento em família de colunas:


Alguns bancos
• Banco de dados de documentos: de dados podem
se encaixar em
mais de uma
• Banco de dados de Grafos: categoria

Para conhecer mais: http://nosql-database.org/


Principais Referências

Pramod J.; Sadalage, Martin Fowler.


NoSQL Essencial: Um Guia Conciso
para o Mundo Emergente da
Persistência Poliglota. Novatec
Editora, 2013.
Principais Referências

Paniz, David. NoSQL: Como


armazenar os dados de uma
aplicação moderna. Casa do Código,
2017.
Referências Bibliográficas

Jure Leskovec, Anand Rajaraman, Jeff Ullman.


Mining of Massive Datasets. 2011. 2 ed.
Principais Referências

Boaglio, Fernando. MongoDB: Construa


novas aplicações com novas
tecnologias. Casa do Código, 2017.
Principais Referências

Lazoti, Rodrigo. Armazenando


dados com Redis. Casa do Código,
2017
Principais Referências

Sasaki, B.; Chao, J.; Howard, R..


Graph Databases for Beginners.
Neo4j.com.

Download gratuito em:


https://neo4j.com/whitepapers/graph-databases-
Dicas!
Links para saber mais:
Para conhecer mais sobre tipos de bancos NoSQL: http://nosql-
database.org/

Você também pode gostar