11. SQL vs NOSQL
•
Driver
•
SQL ANSI
•
Transação
•
Alto custo de IO
•
Fácil troca de
Banco
•
Relacionamento
•
API
•
Não padronizado
•
Não Transação
•
Busca por chave
•
Difícil troca de Banco
•
Não relacionamento
16. Estrutura de Dados
Chave-valor
SQL Riak
Banco de Dados Cluster Riak
Tabela Bucket
Linha chave-valor
Chave Primária chave
Informações da sessão
Perfis de usuário
Carrinho de compras
Relacionamento
Transações complexas
Consulta por dados (não
chave)
23. Carrinhos de compras
Criar uma interface para o usuário e
suas compras
O usuário terá suas informações
(e-mail ou nickname, endereço)
Além do seu carrinho de compras
(Produto, nome, valor, quantidade)
Valor total
tempo: 40 minutos
24. Session Server
há um maior consumo de
memória no lado servidor
Problemas com o back-button
do browser
clustering
baixo consumo de banda na
rede;
baixo consumo de memória no
cliente;
uso de cpu no servidor é baixo;
melhora comunição via AJAX
session session
request
25. Session Client
Alto consumo de banda da
rede;
Maior overhead de cpu no
servidor e cliente;
Maior consumo de memória
no lado cliente;
problemas de segurança;
menos memória do lado do
servidor
sem consumo de memória entre
requests
melhora escalabilidade da
aplicação
session
request
27. Estrutura de Dados
Documentos
SQL MongoDB
Banco de Dados Instância
Tabela Coleção
Linha Documento
Chave Primária _id
CMS
Análise Web
Leitura em larga escala
Transações complexas
28. MongoDB
• Escrito C++
• Escrita full index
• Escritas Complexas
• Leitura de agregação
• Agregações
• Master Slave
• JSON
http://www.mongodb.org/
30. MongoDB
##store data here
• dbpath=/home/otaviojava/Ambiente/
nosql/mongodb/mongodb/data
##all output go here
• logpath=/home/otaviojava/Ambiente/
nosql/mongodb/mongodb/mongo.log
##log read and write operations
• diaglog=3
http://www.mongodb.org/
33. MongoDB
Realizar um simples CRUD para
usuarios
• Nome, login, senha, data inicio, data
final
http://www.mongodb.org/
34. MongoDB
Medidor de temperatura
Objetivo é saber a temperatura de uma
determinada cidade, essas informações
são repassadas todos os dias no
período de maior ociosidade
computacional, madrugada. Caso existe
uma atualização é atualizado o número
da versão. Essa informação vai para
vários sites, mídias, etc.
http://www.mongodb.org/
35. MongoDB
• Informações da temperatura
• cidade, temperatura, dia, atualizacao
• Inserir uma cidade temperatura
• Saber a média da cidade
http://www.mongodb.org/
38. Estrutura de Dados
Família de Colunas
SQL Cassandra
Banco de Dados KeySpace
Tabela Família de Colunas
Linha Linha
Chave Primária chave
Registrado de Evento (log)
CMS
Contadores (categorizar)
Escrita Complexa
Transações
ACID
Relação
Leitura complexa (SUM,
AVG, etc.)
39. Cassandra
• Família de Colunas
• P2P
• Feito em Java
• Tolerância a falhas
• Escalabilidade
• índices
cassandra.apache.org
40. Cassandra
• CQL – Cassandra Query Language
• Map
• List
• Set
• Atualizar vs Inserir
• Não existe relação
• Views materializadas!?!?
cassandra.apache.org
42. Cassandra
Crie um programa que envie
mensagens, elas deverão ser
enviadas a partir de um usuário.
• A ideia é que se busque pelo usuário
e pelo código da mensagem.
• Nome, mensagem, id, data envio
cassandra.apache.org
43. Cassandra
Medidor de temperatura
Objetivo é saber a temperatura de uma
determinada cidade, essas informações
são repassadas todos os minutos. Essa
informação vai para vários sites,
mídias, etc.
cassandra.apache.org
44. Cassandra
• Informações da temperatura
• cidade, temperatura, dia, atualizacao
• Inserir uma cidade temperatura
• Saber a média da cidade
cassandra.apache.org
45. Cassandra
Medidor de temperatura
Objetivo é saber a temperatura de uma
determinada cidade, essas informações
são repassadas todos os dias no
período de maior ociosidade
computacional, madrugada. Caso existe
uma atualização é atualizado o número
da versão. Essa informação vai para
vários sites, mídias, etc.
cassandra.apache.org
48. •Distribuição e réplica
Distribuição e réplica:
Ocorrem ao mesmo tempo
A primeira inserção é baseado na chave
Particionador Define
Segunda cópia réplica
Jim Carro: Camaro Idade: 32
carol Cor: rosa
Suzy Time: Bahia
Jim 1
carol 3
Suzy 15
rowkey
rowkey Partitioner
A[0-3]
B[4-8]
C[9-13]
D[14-18]
49. •Partitioner
Partitioner: determina como será distribuído as informações
através dos nós.
Hash da Chave
Murmur3Partitioner(default)
RandomPartitioner (MD5)
ByteOrderedPartitioner (não recomendado)
Jim -2245462676723223822
carol 7723358927203680754
Suzy 1168604627387940318
rowkey Murmur3 Partitioner
50. • Replica placement
strategy
Replica placement strategy: define como será realiza as
cópias (réplicas da informação)
Fator de réplica: Define a unidade de nós que serão copiados
SimpleStrategy: usa apenas um único datacenter.
NetworkTopologyStrategy: para mais de um datacenter,
recomendados para uma tendência de crescimento futura.
52. Neo4J
• Possui transação
• Possui relacionamento
• API em rest
• Cypher Query Language
• Feito em Java
• Master Slave
• Master o mais antigo
• Eleição automática
http://www.neo4j.org
58. Lucene
Realizar buscas é um ponto fraco na
maiorias dos Bancos NoSQL e pode
ser nos tradicionais quando se trata
de um texto muito grande.
http://lucene.apache.org/
59. Lucene
• Roda com um heap pequeno – 1MB
• Executa com grande volume
• Alto desempenho com indexação
• Eficientes algoritmos de busca
• Feito em Java
• Configurável – Memória ou HD
http://lucene.apache.org/
60. Lucene
• Cadastrar as músicas
• A ideia é buscar a música a partir da
letra ou o nome do autor.
http://lucene.apache.org/
61. Lucene
Conteúdo do linguágil
• Cadastrar a minibiografia, título,
descrição, nome do autor
• Permitir a busca pela minibiografia e
descrição, buscar pelo “nome exato”.
http://lucene.apache.org/
63. Hadoop
●Usando o Map Reduce
●1: Map(k1,v1) → list(k2,v2)
●Chave e lista de Valores
●2: Reduce(k2, list (v2)) → list(v3)
64. DataGrid
● Cache em múltiplos servidores
● Chave valor
● Velocidade
Leitura Escrita
0
5000
10000
15000
20000
25000
Velocidade dos Dispositivos
Leitura em MB/s
SSD PCI Express
SSD SATA
SATA HDD 10,000
DDR3-2500
fonte: http://highscalability.com/
65. DataGrid
●Bélády's Algorithm: O ambiente perfeito
●Least Recently Used (LRU): Remove o menos
recente usado
●Most Recently Used (MRU): Removo o mais
recente usado
●Pseudo-LRU (LRU): LRU com proabilidade
66. DataGrid
●Random Replacement (RR): Remove aleatória
●Segmented LRU (SLRU): LRU em segmentos
●Low Inter-reference Recency Set (LIRS): Novo
LRU
●Least Frequently Used (LFU): Remove o
menos utilizado (contador)
●Adaptive Replacement Cache (ARC): LRU e
LFU