NoSql

713 visualizações

Publicada em

Apresentação sobre noSql ministrada na Pós Graduação "Análise e Desenvolvimento de Sistemas Aplicados à Gestão Empresarial"

Publicada em: Tecnologia
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
713
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1
Ações
Compartilhamentos
0
Downloads
77
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

NoSql

  1. 1. Disciplina Gerenciamento de Banco de Dados noSql Pós Graduação Análise e Desenvolvimento de Sistemas Aplicados à Gestão Empresarial INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TRIÂNGULO MINEIRO – Campus Avançado Uberlândia Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br
  2. 2. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Introdução • NoSql quer dizer “Não somente Sql”, ou seja, deixar de visualizar o modelo relacional como “bala de prata”; • NoSql representa mais um movimento, ou uma nova escola de pensamento, do que alguma tecnologia em particular
  3. 3. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Alguns SGBDs modelo Relacional
  4. 4. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Alguns SGBDs modelo “noSql”
  5. 5. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Por que noSql? • Após enfrentar problemas de escalabilidade, custo e performance, muitas empresas começaram a pesquisar e investir em novos mecanismos de armazenamento; • Os bancos são considerados noSql, pois não existe obrigatoriedade quanto ao modelo de dados, estruturas fixas de tabelas e schemas. Estas também não suportam joins entre tabelas.
  6. 6. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Por que noSql? • Com sistemas cada vez mais distribuídos, um grande volume de dados é gerado, transformando-se em um gargalo nos sistemas atuais; • Soluções em noSql costumam buscar atingir objetivos como baixa latência, alta performance e escalabilidade.
  7. 7. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Quem usa noSql? • Cassandra: • BigTable: • Voldemort: • Apache Hadoop: • MongoDB:
  8. 8. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Histórico Armazenamento de Dados • 1965 – Arquivos sequenciais .dat; • 1968 – SGBDs baseados em estruturas hierárquicas; • 1970 – SGBDs baseados em grafos; • 1980 – Popularização dos SGBDs relacionais; • 2009 – Início do movimento noSql.
  9. 9. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Histórico noSql • O movimento noSql surgiu de um encontro, que teve por objetivo discutir o crescente surgimento de soluções open- source de armazenamento de dados distribuídos não relacionais; • noSql = nova onda de SGBDs que propôe alternativas ao modelo relacional, em situações específicas.
  10. 10. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Modelo de Dados • Modelos relacionais possuem tabelas, colunas, linhas e relacionamentos entre estas, prezando pela integridade dos dados; • NoSql pode ser dividido basicamente em 5 modelos: chave-valor, orientado a documentos, família de colunas (ou big table), Grafo e Objetos.
  11. 11. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Modelo chave-valor • Lembram a estrutura java.util.Map; • Pesquisa unicamente pelas chaves; • Muito utilizado para Caches; • Tempo de O(1) para acesso aos dados.
  12. 12. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Modelo orientado a documentos • Um documento é uma estrutura de dados composta por uma quantidade variável de campos, com tipos de dados diversos, inclusive um campo pode conter outro documento; • Um arquivo xml ou json seria como um documento.
  13. 13. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Modelo orientado a documentos • Modelo permite armazenar qualquer documento, sem ter a necessidade de definir previamente sua estrutura; • Possui forte tendência para desnormalização de dados, deixando em 1 só documento todas as informações relacionadas;
  14. 14. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Modelo orientado a documentos
  15. 15. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Modelo Família de Colunas (ou BigTable) • Se tornou popular em 2006, através do paper “BigTable” do Google; • Composto pelos componentes: Keyspaces, Famílias de Colunas e Colunas; • Consultas apenas através das chaves; • Útil quando se precisa consultar um grande volume de dados em um tempo de resposta muito baixo;
  16. 16. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Modelo Família de Colunas (ou BigTable) • Deve-se definir previamente o conjunto de colunas que podem ser armazenadas em cada família
  17. 17. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Modelo Grafo • Grafos conectam um conjunto de vértices através de um conjunto de arestas; • Modelo de Grafos suportam estruturas de grafos multirelacionais, com diferentes vértices (representando pessoas, lugares, itens...) e diferentes tipos de arestas (“amigo de”,”mora em”,”comprando por”, etc..).
  18. 18. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Modelo Grafo • Modelo Whiteboard Friendly; • Navegação entre os relacionamentos de forma linear O(1).
  19. 19. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Modelo Objeto • Bancos de Dados que armazenam objetos ao invés de tabelas.
  20. 20. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Arquitetura • Soluções noSql costumam utilizar uma arquitetura não muito ortodoxa: • Redundância de dados; • BASE ao invés de ACID; • Utilização de soluções alternativas para persistência; • Falta de padronização nas APIs; • Busca quase que unicamente por chaves; • Prioridade em Escalabilidade Horizontal.
  21. 21. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Arquitetura - BASE • BASE = Basically Avaible, Soft-State, Eventual Consistency; • Abre mão da consistência por algum tempo em favor da escalabilidade e disponibilidade; • Eventual Consistency = Consistência em algum momento indeterminado. Ex: TEDs de bancos; • Existem exceções: Neo4j possui ACID.
  22. 22. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Arquitetura - Persistência • Acessos ao disco possuem alto custo de I/O. Soluções que necessitam de baixa latência em geral não se adequam a este meio de persistência; • Memory-mapped mapeia parte da memória diretamente para o disco, mas deve-se replicar os dados em mais de uma máquina para diminuir o risco de perda de dados;
  23. 23. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Arquitetura - Persistência • Algumas soluções noSql utilizam a memória como principal meio de persistência, utilizando o disco como forma secundária, fazendo serialização com o disco por meio de threads paralelas (google).
  24. 24. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Arquitetura – Manipulação de dados • Não existe padrão de APIs em noSql, como existe no Java (por exemplo JDBC e JPA); • Grande parte das ferramentas noSql permitem apenas a busca de dados por uma única chave, ou através de views previamente definidas; • Consultas ad-hoc são permitas em poucas ferramentas (por ex: Cassandra)
  25. 25. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Arquitetura – Distribuição • Ferramentas noSql geramente são criadas para estarem em um ambiente distribuído; • Algumas ferramentas oferecem particionamento automático dos dados; • Modelos relacionais se comportam melhor com escalabilidade vertical; • Modelos nosql se comportam melhor com escalabilidade horizontal
  26. 26. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Redis • É muito mais do que um banco chave- valor, é um servidor de estrutura de dados; • http://redis.io/
  27. 27. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br MongoDB • SGBD orientado a documentos; • Troca de informações entre a aplicação e o SGBD é por meio de mensagens JSON, via Socket; • Para muitos, é o novo M do “LAMP”; • http://www.mongodb.org/downloads;
  28. 28. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br MongoDB - instalação Efetuar o Download da última versão estável (mongodb-win32-x86_64-2008plus- 2.6.1) e instalar; Criar o diretório abaixo:
  29. 29. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br MongoDB - inicialização Iniciar o banco pelo comando mongod
  30. 30. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br MongoDB - inicialização Executar o comando mongo pela linha de comando
  31. 31. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br MongoDB • Persistência de objetos no banco:
  32. 32. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br MongoDB • Bibliotecas a serem usadas com Java: • mongo-x.xx.x.jar (driver do banco); • morphia-0.xx.jar (biblioteca para efetuar mapeamento objeto-documento); • Visualizar código-fonte do projeto MongoDB-ProjetoEclipse
  33. 33. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Neo4j • Uma das soluções noSql mais maduras; • Idealizado em 2000 por uma equipe sueca chamada Windth Tecnologies; • Escrito em Java; • http://www.neo4j.org/
  34. 34. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Neo4j • Ambiente para efetuar consultas
  35. 35. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Cassandra • Nasceu dentro do Facebook para lidar com as buscas nas caixas de entrada de mensagens de seus usuários; • Código liberado em 2009, tornou-se um projeto incubado dentro da fundação Apache; • Modelo baseado em família de colunas; • Arquitetura totalmente distribuída; • http://cassandra.apache.org/
  36. 36. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Cassandra • O Cassandra é escrito em Java; • O batch cassandra.bat é responsável por subir o servidor
  37. 37. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Referências • [1] – Porcelli, Alexandre. “O que é noSql” – Revista Java Magazine ed 86 e 87; • [2] – Ramos, José Yoshiriro. “NoSql: Conceitos e Evolução” – Revista MundoJ ed 51; • [3] – Garcia, Márcio. “Java e MongoDB” – Revista MundoJ ed 51;

×