Nosql4java

523 visualizações

Publicada em

0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
523
No SlideShare
0
A partir de incorporações
0
Número de incorporações
5
Ações
Compartilhamentos
0
Downloads
8
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Nosql4java

  1. 1. #NOSQL com Java Otávio Santana @otaviojava http://www.java.net/blogs/otaviojava/ http://otaviosantana.blogspot.com.br/
  2. 2. Data Science ● Terra ● Ouro ● Petróleo ● Informação ● Big Data ● Empirical ● Theoretical ● Computational ● eScience
  3. 3. Data Science
  4. 4. Flu trends Redes Sociais
  5. 5. Eleições
  6. 6. Big Data • 3 Vs (Velocidade, variedade e volume) • Sem definição
  7. 7. NOSQL Não apenas SQL Conhecer o melhor dos dois mundos Uso específico
  8. 8. A.C.I.D. vs B.A.S.E • Atomicidade • Consistência • Isolamento • Durabilidade Basicamente Avaliado Soft-state Eventualmente persistente
  9. 9. 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
  10. 10. Classificação Arquitetura Armazenamento Estr. Dados Chave-Valor Documentos Grafo Família de Colunas
  11. 11. Arquitetura Distribuída Mestre Escravo P2P A B C mestre
  12. 12. Arquitetura Distribuída Fragmentação Réplica A BD C ABCD ABCD ABCD ABCD Servidor com informações diferentes Servidor com as mesmas informações
  13. 13. CAP • Consistência • Disponibilidade • Partição (tolerância) •CA: Banco de dados Tradicionais •CP: BigTable, HBase, MongoDB •AP: Dynamo, Cassandra, Riak •Porcentagem
  14. 14. 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)
  15. 15. Riak • Possui transação • Comunicação também via Rest http://basho.com/riak/
  16. 16. Riak • Não tem transação • VectorClock http://basho.com/riak/ Valor Bucket vectorClock
  17. 17. Riak • Baixar riak • sudo dpkg -i riak_1.4.7-1_amd64.deb • Sudo gedit /etc/pam.d/common-session sudo /gedit/etc/pam.d/common-session-no ninteractive session required pam_limits.so http://basho.com/riak/
  18. 18. Riak • Baixar riak • sudo dpkg -i riak_1.4.7-1_amd64.deb • Sudo gedit /etc/pam.d/common-session sudo gedit /etc/pam.d/common-session-noninter active session required pam_limits.so http://basho.com/riak/
  19. 19. Riak • Sudo gedit /etc/security/limits.conf * soft nofile 65536 * hard nofile 65536 • Reiniciar a máquina • Sudo riak start http://basho.com/riak/
  20. 20. Livraria • Cadastro de Livro simples (CRUD) • Autor, título, página, corpo, ISBN
  21. 21. 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
  22. 22. 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
  23. 23. 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
  24. 24. Session riak session request
  25. 25. 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
  26. 26. MongoDB • Escrito C++ • Escrita full index • Escritas Complexas • Leitura de agregação • Agregações • Master Slave • JSON http://www.mongodb.org/
  27. 27. MongoDB • Download • Descompactar • Criar aqui mongo.config dentro de MONGO_HOMEbin http://www.mongodb.org/
  28. 28. 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/
  29. 29. MongoDB ./mongod --config mongo.config http://www.mongodb.org/
  30. 30. MongoDB Realizar um simples CRUD para pessoa • Nome, nascimento, cpf http://www.mongodb.org/
  31. 31. MongoDB Realizar um simples CRUD para usuarios • Nome, login, senha, data inicio, data final http://www.mongodb.org/
  32. 32. 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/
  33. 33. MongoDB • Informações da temperatura • cidade, temperatura, dia, atualizacao • Inserir uma cidade temperatura • Saber a média da cidade http://www.mongodb.org/
  34. 34. Escrita request
  35. 35. Leitura request
  36. 36. 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.)
  37. 37. Cassandra • Família de Colunas • P2P • Feito em Java • Tolerância a falhas • Escalabilidade • índices cassandra.apache.org
  38. 38. Cassandra • CQL – Cassandra Query Language • Map • List • Set • Atualizar vs Inserir • Não existe relação • Views materializadas!?!? cassandra.apache.org
  39. 39. Cassandra • Download • Descompactar • Cd CASSANDRA_HOMEbin • ./cassandra -f cassandra.apache.org
  40. 40. 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
  41. 41. 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
  42. 42. Cassandra • Informações da temperatura • cidade, temperatura, dia, atualizacao • Inserir uma cidade temperatura • Saber a média da cidade cassandra.apache.org
  43. 43. 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
  44. 44. Cassandra Gossip Nível de consistência Leitura e Escrita ANY ONE LOCAL_QUORUM EACH_QOURUM ALL Disponibilidade Consistência
  45. 45. Cassandra Commit log Memtable SSTable request Commit logMemtable SSTable escrever (k1, c1:v1) escrever (k2, c1:v1 C2:v2) escrever (k1, c1:v4 c3:v3 c2:v2) k1 c1:v4 c2:v2 c3:v3 k2 c1:v1 c2:v2 k1, c1:v1 k2, c1:v1 C2:v2 k1, c1:v4 c3:v3 c2:v2 k1 c1:v4 c2:v2 c3:v3 k2 c1:v1 c2:v2
  46. 46. •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]
  47. 47. •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
  48. 48. • 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.
  49. 49. Estrutura de Dados Grafos Redes sociais (Dados conectados) Mecanimos de recomendação Transações complexas Não Grafos
  50. 50. 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
  51. 51. Neo4J • Baixar Neo4J • Descompactar • Entrar em NEO4J_HOME/bin • ./neo4j start http://www.neo4j.org
  52. 52. Neo4J http://www.neo4j.org Nome: Homem Nome: Leão Nome: raposa Nome: rato •Desenhar cadeia alimentar •Imprimira relação entre os animais • Exibir os animais que comem alguém
  53. 53. Neo4J http://www.neo4j.org Nome: Jonh Nome: JoeNome: Sara Nome: SteveNome: Maria ●Desenhar cadeia de amizade ●Informar os amigos ●Informar os amigos dos amigos de Jonh
  54. 54. Neo4J http://www.neo4j.org Nome: Otávio Ling: Java Idade: 25 Nome: Bruno Ling: Java Idade: 42 Nome: Márcio Ling: PHP Idade: 32 Nome: Luiz Ling: Python Idade: 30 Nome: Maurício Ling: Python Idade: 26 Nome: Edson Ling: Java Idade: 30 Nome: Marlon Ling: Ruby 28 Desenhar as relações Otávio precisa de amigos, indique a partir da proximidade
  55. 55. Outras formas Sistema de Arquivos Banco XML Banco de Dados OO solução problema
  56. 56. 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/
  57. 57. 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/
  58. 58. Lucene • Cadastrar as músicas • A ideia é buscar a música a partir da letra ou o nome do autor. http://lucene.apache.org/
  59. 59. 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/
  60. 60. Hadoop •Hadoop Common •Hadoop Distributed File System (HDFS™) •Hadoop YARN •Hadoop MapReduce •Ambari™ •Avro™ •Cassandra™ •Chukwa™ •HBase™ •Hive™ •Mahout™ •Pig™ •ZooKeeper™
  61. 61. Hadoop ●Usando o Map Reduce ●1: Map(k1,v1) → list(k2,v2) ●Chave e lista de Valores ●2: Reduce(k2, list (v2)) → list(v3)
  62. 62. 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/
  63. 63. 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
  64. 64. 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
  65. 65. #Obrigado Otávio Santana @otaviojava http://www.java.net/blogs/otaviojava/ http://otaviosantana.blogspot.com.br/

×