Este trabalho tem como objetivo apresentar
algumas das principais características do NoSQL,
um banco de dados que possui como diferencial um
grande poder de escalabilidade, proporcionando
uma maior capacidade de armazenamento e
velocidade.
1. BANCO DE DADOS II
Bancos de Dados NoSQL
Prof.: Cláudio Bezerra Leopoldino
Eric Silva
2. Objetivo
Este trabalho tem como objetivo apresentar
algumas das principais características do NoSQL,
um banco de dados que possui como diferencial um
grande poder de escalabilidade, proporcionando
uma maior capacidade de armazenamento e
velocidade.
3. Introdução – Banco de dados
“Um conjunto de dados relacionados que possuem um
significado.”(Ramez Elmasri, Shamkant B. Navathe)
Quando guardamos as informações de nossos
amigos(nome, telefone, endereço...) em uma
agenda, estamos criando um banco de dados.
Também podemos armazenar esses dados no nosso
computador, em um Excel por exemplo, também
temos um banco de dados.
4. Banco de Dados Relacional
“No modelo relacional os dados são percebidos pelo
usuário como tabelas.” (C. J. Date)
Tabela é uma estrutura com linhas e colunas, e cada
linha possui o mesmo conjunto de colunas.
Um registro(linha da tabela) é uma ocorrência de
uma entidade(tabela), e podem existir associações
entre as entidades, através de regras de
relacionamento.
6. Banco de Dados NoSQL (Not OnlySQL)
É um Banco de Dados não relacional, ou seja, não
utiliza uma estrutura fixa de tabelas, e geralmente
não oferecem suporte a instruções SQL.
Não há Joins
Não há SQL Injection
Não utilizamos comandos CREATE TABLE, ALTER TABLE...
A grande motivação para o surgimento do NoSQL
é resolver o problema de escalabildade, pois pode
ser muito caro e/ou complexo escalar um Banco de
Dados Relacional.
7. Banco de Dados NoSQL (Not OnlySQL)
Grandes empresas mundiais utilizam e apóiam esta
abordagem.
O Google investe desde 2004 no BigTable, um banco
proprietário desenvolvido para suprir as necessidades de
armazenamento da empresa.
O Facebook projetou o Cassandra, um sistema de alta
disponibilidade e escalabilidade, para trabalhar com o seu
grande fluxo de informações.
O objetivo não é subutilizar os Bancos de Dados
Relacionais, e sim apresentar uma alternativa.
8. Comparação entre as duas abordagens
Banco de Dados Relacional Banco de Dados NoSQL
Escalabilidade É possível, porém possui uma
certa complexidade, o que
dificulta a implementação.
Quanto mais dados, mais
espaço no servidor e
memória são necessários.
Como não possui estrutura fixa, a
inclusão de dados é bastante
flexível. Quanto mais dados,
aumenta-se o número de servidores,
que podem ser ou não de alta
performance, barateando e
otimizando o armazenamento.
Consistência As regras de integridade
garantem a consistência das
informações.
Não garante a consistência da
informação, caso nenhuma
informação seja atualizada,
retornará o mesmo valor para todas
as solicitações.
Disponibilidade Uma grande demanda pode
ser prejudicial(dificuldade
com o volume de acesso e
distribuição de dados).
Possui um alto grau de distribuição
de dados(em vários servidores), e
garante um maior número de
solicitações.
9. Comparação entre as duas abordagens
Banco de Dados Relacionais Banco de Dados NoSQL
Resumo Todos os dados são guardados em
tabelas. Tenta-se diminuir ao máximo
a redundância através das relações
entre as tabela.
Alta escalabilidade,
disponibilidade, desempenho e
menor tempo de resposta a
consultas
Características Tabelas, esquema definido,
redundância mínima, entidade e
relacionamento, ACID
Registros, não possui estrutura
fixa, escalabilidade
Necessidades Sistemas financeiros, sistemas
corporativos, consistência dos dados
Sistemas em nuvem, análises
sociais, performance na
consulta/escrita, replicação
SGBD DB2, Firebird, InterBase, SQL Server,
MySQL, Oracle, PostgreSQL
Cassandra, BigTable, MongoDB,
CouchDB, Dynamo
Empresas que
utilizam
SAP, OpenERP, Previdência Social,
Caixa, Itaú
Twitter, Facebook, Amazon,
LinkedIN, Google, Yahoo
11. Modelo híbrido
Podemos estabelecer um modelo de sistema que
utilize as duas abordagens, criando um sistema de
banco de dados híbrido.
Em uma aplicação, quando existe uma parte do
sistema que necessite de ACID, podemos utilizar um
Banco de Dados Relacional, e quando for
necessário desempenho em um módulo, então
podemos utilizar o NoSQL.
12. Modelo híbrido - Exemplo real
A boo-box, uma empresa brasileira de tecnologia de publicidade e mídias
sociais que exibe propaganda para 60 milhões de pessoas por mês no Brasil,
possui um modelo de negócios baseado em propaganda integrada com
sistemas de recomendação buscando se aproximar dos interesses do usuário,
fazendo uma recomendação otimizada, baseada em conteúdo acessado.
Contudo, para buscar promoções de lojas, mercados, marcas e links, que
satisfaçam os interesses do usuário, é necessário o acesso as API’s dos sistemas
dos respectivos estabelecimentos.
Se o modelo de dados fosse inteiramente baseado em um modelo relacional,
seria necessário efetuar o acesso as API’s a cada vez que o usuário acessar
uma página diferente e salvar na base de dados, tornando-se muitas vezes
um processo demorado.
Já com o modelo híbrido propõe-se uma solução com maior desempenho,
devido à estrutura, a qual consiste em guardar as requisições feitas
temporariamente, como forma de cache, diminuindo assim o acesso as API’s
externas.
14. Classificação dos Bancos de Dados
NoSQL
ORIENTADOS A DOCUMENTOS
Podemos “comparar” Documentos com as linhas do
modelo relacional.
Esse formato proporciona uma maior flexibilidade, pois
os documentos não precisam possuir estrutura em
comum, cada documento possui somente o que é
importante.
Um documento pode conter documentos aninhados.
15. Classificação dos Bancos de Dados
NoSQL
ORIENTADOS A DOCUMENTOS
Imaginemos que temos uma relação de Pessoa com Cargo e
queremos criar uma consulta para recuperar o cargo da
pessoa João.
No modelo orientado a documentos bastaria recuperar o
documento do João, que conteria o documento de seu
cargo.
No modelo relacional seria necessário realizar um join entre
a tabela Pessoa e Cargo, o que exigiria um certo custo de
desempenho.
16. Classificação dos Bancos de Dados
NoSQL
codigo nome apelido idade peso Altura
1 João da Silva Joãozinho 22 55.0 1.64
2 Francisco Pedro 20 50.0 1.55
ORIENTADOS A DOCUMENTOS
18. Classificação dos Bancos de Dados
NoSQL
ARMAZENAMENTO CHAVE-VALOR
Esse é o tipo de banco de dados NoSQL mais simples.
Funciona como uma grande tabela hash, onde se
fornece uma chave e obtemos um valor como resultado.
put(chave, valor)
get(chave)
Esses tipos de bancos de dados são o que tem a maior
escalabilidade.
19. Classificação dos Bancos de Dados
NoSQL
ARMAZENAMENTO CHAVE-VALOR
chave_1 Valor da chave 1
chave_2 Valor da chave 2
chave_3 Valor da chave 3
chave_4 Valor da chave 4
20. Classificação dos Bancos de Dados
NoSQL
ORIENTADO A COLUNAS
Os dados são organizados por um trio (linha,
coluna e um dado do tipo timestamp), onde linhas e
colunas são identificadas como chaves e o
timestamp permite diferenciar múltiplas versões de
um mesmo dado.
22. Classificação dos Bancos de Dados
NoSQL
BASEADOS EM GRAFOS
Os dados são armazenados em nós de um grafo
A estrutura do modelo de grafos é composta por: nós, os
relacionamentos e os atributos dos nós
As operações realizadas nos dados são transformações nos
grafos, fazendo uso de conceitos conhecidos nos grafos:
vizinhos, caminhos, subgrafos, etc.
Está relacionado a soluções matemáticas
24. Classificação dos Bancos de Dados
NoSQL
QUANDO UTILIZAR CADA MODELO
Complexidade dos dados
Volumededados
Chave/valor
Colunas
Documentos
Grafos
25. Dificuldades encontradas no NoSQL
Como não há um padrão de estrutura, a migração de um
banco de dados pode gerar certas dores de cabeça.
Ausência de ferramentas de alto nível como as que
encontramos no modelo relacional.
Curva de aprendizado. Cada banco de dados apresenta a
sua própria linguagem de consulta e manipulação.
Pouco material para referência, bem como conteúdos
“duplicados”.
26. Conclusão
As bases de dados NoSQL são um excelente
complemento para o modelo relacional, evitando
que o apliquemos em situações para as quais não
foi desenvolvido.
A escolha por um modelo não relacional não deve
ser baseada apenas pelo fato de ganho de
performance, é necessário analisar a modelagem
de forma coerente e saber onde esse modelo pode
ser aplicado.
27. Referências bibliográficas
Ramez Elmasri, Shamkant B. Navathe Fundamentals of database systems – 6ª edição.
Addison-Wesley, 2011.
C. J. Date. Introdução a Sistemas de Bancos de Dados. Tradução da 8ª edição
americana. Rio de Janeiro: Elsevier Brasil, 2003.
VERAS, M. Arquitetura de Nuvem: Amazon Web Services. Rio de Janeiro: Brasport, 2013.
Thalles Ramon P. de Sousa, André Luiz de S. Silva Rocha, NoSQL: Princípios e
Características. Faculdade de Tecnologia da Paraíba (FATECPB), João Pessoa - PB, 2010.
Renato Molina Toth, Abordagem NoSQL – uma real alternativa. Universidade Federal de
São Carlos, Campus Sorocaba, São Paulo.
Pollyanna Gonçalves, Web 2.0 e os Bancos de Dados Não Relacionais. Universidade
Federal de Ouro Preto, Minas Gerais.
https://www.ibm.com/developerworks/br/library/os-apache-cassandra/
http://blog.boo-box.com/br/2010/usando-banco-de-dados-nosql-redis/