Apresentação

590 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
590
No SlideShare
0
A partir de incorporações
0
Número de incorporações
90
Ações
Compartilhamentos
0
Downloads
13
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Apresentação

  1. 1. Banco de Dados NoSQL UMA ALTERNATIVA AO TRADICIONAL MODELO RELACIONAL
  2. 2. Joel Jr. Twitter: @jhowvasconcelos Blog: joevjunior.wordpress.com E-mail: jr.joelvasconcelos@gmail.com
  3. 3. “Every 2 days we create as much information as we did up 2003” ERIC SCHMIDT, GOOGLE
  4. 4. Por que NoSQL ?  Como o Google, Facebook e Twitter processam aquela imensidão de dados ?  Como desenvolver algo tão rápido e otimizado utilizando modelo relacional ?  O preço deve ser muito alto.
  5. 5. Conteúdo 1º Dia Introdução Contextualização Banco de Dados Grande volume de Dados (Big Data) Bancos de Dados NoSQL 2º Dia Atuais Categorias de bancos NoSQL Redis MongoDB Neo4j Referências Bibliográficas
  6. 6. Introdução  Evolução dos Computadores    Investimento em pesquisa Aumento do poder de processamento Surgimento de tecnologias para armazenamento de dados  Conceituar, estruturar e manipular a informação independente da máquina
  7. 7. Introdução  Modelo relacional   Edgar F Codd Década de 70 surgem os primeiros bancos de dados relacionais    System R Ingres Crescimento da internet  Cada vez mais pessoas acessando a internet  Cada vez mais dispositivos conectados à internet Edgar F. Codd, criador do artigo Um Modelo Relacional para Grandes Bancos de Dados Compartilhados.
  8. 8. Bala de prata  Em TI a única bala de prata, ainda, é o banco de dados relacional.
  9. 9. Banco de Dados  Dado, Informação e Conhecimento  Dado    Sintático Entidade matemática Informação    Semântica Abstração informal Conhecimento  Contexto subjetivo  Abstração pessoal
  10. 10. Banco de Dados  O termo   Coleção logicamente coerente   Possui um aspecto do mundo real Construído para uma finalidade específica Evolução do conceito de arquivo    Redundância Inconsistência Vantagens  Integração  Controle de concorrência  Modelo Padronizado  SQL (Structured Query Language)
  11. 11. Banco de Dados  Mudança na forma de pensar no desenvolvimento de software
  12. 12. Grande Volume de Dados  Internet  Surgimento  Guerra Fria  J. C. R. Licklider (1962)  ARPANET (1972)   Trocar informações de maneira segura e ininterrupta World Wide Web (Tim Bernes-Lee)  Até então a internet era muito chata  CERN libera a tecnologia (WWW) para qualquer usar sem necessidade de pagamento de taxa
  13. 13. Grande Volume de Dados
  14. 14. Grande volume de dados  Big Data  Quão grande um conjunto de dados precisa ser para ser classificado como Big Data ?  Acima dos terabytes (10^12)  Momento em que o modelo relacional começa apresentar problemas  O tráfego de dados irá quadruplicar de 2011 a 2016. Com uma taxa de 31% ao ano.  Em nível global, o trafego de dados irá alcançar os 91,6 exabytes por mês, ultrapassando os 23,9 exabytes por mês de 2011.  O tráfego da internet mundial 2016 será equivalente a 54 vezes o volume da internet global de 2005  O google hoje está preparado para processar 20 petabytes (10^15) POR DIA  O número de usuários acessando a internet no Brasil foi de 55 milhões para 83,4 milhões de 2008 a 2012
  15. 15. Grande volume de dados  Escalabilidade  Definição  Vertical  Bom para o modelo relacional  Alto custo  Limitação
  16. 16. Grande voluma de dados  Horizontal  Problemas com o modelo relacional  Ilimitado  Custo baixo
  17. 17. Bancos de Dados NoSQL  Surgimento  Modelo de Dados Agregados  Schemaless  Map Reduce  Propriedade ACID
  18. 18. Banco de Dados NoSQL Surgimento Banco de dados relacional que não usava SQL como linguagem de manipulação de dados, criado por Carlo Strozzi. 2009 por Johan Oskarsson, desenvolvedor de software londrino. Falta de um banco de dados que funcionasse naturalmente em uma arquitetura distribuída horizontalmente. Resolver  a diferença de impedância. Produtividade no desenvolvimento de software.
  19. 19. Banco de Dados NoSQL  Diferença de Impedância.  Bancos orientados a objetos  Necessidade de “espremer” os dados no esquema proposto.  Soluções caras no mundo relacional
  20. 20. Banco de Dados NoSQL Modelo de Dados Agregados Modelo  Tabelas, linhas e colunas Modelo  Relacional agregado Unidades Efeitos do uso do modelo agregado  Abrir mão de resoluções propostas pelo modelo relacional  Consulta demorada para certos casos
  21. 21. Banco de Dados NoSQL Modelo de Dados Agregados – Exemplo Modelo Relacional
  22. 22. Banco de Dados NoSQL Modelo de Dados Agregados – Exemplo Modelo Agregado
  23. 23. Banco de Dados NoSQL Modelo de Dados Agregados – Exemplo Modelo Agregado
  24. 24. Banco de Dados NoSQL Schemaless Como é no modelo relacional Flexibilidade Facilidade Efeitos de lidar com dados não uniformes no uso de banco de dados schmaless  Quando o programa exigir conhecimento dos nomes dos campos  Necessidade de analisar o código da aplicação  Banco de dados ignorante, no que diz respeito aos dados que estão sendo armazenados.
  25. 25. Banco de Dados NoSQL Map Reduce Arquitetura  Cliente / Servidor Preocupação com a quantidade de dados trafegados na rede Cluster de computadores  Divisão do processamento  Preocupação com a quantidade de dados trafegados na rede Conceito Map  Age em cada elemento de uma determinada lista Reduce  (accumulate, compress e inject function) Opera nas várias saídas produzidas pela função map.
  26. 26. Banco de Dados NoSQL Map Reduce Map
  27. 27. Banco de Dados NoSQL Map Reduce Reduce
  28. 28. Banco de Dados NoSQL Propriedades ACID Atomicidade  Transações envolvendo mais de uma estrutura de dados agregados Consistência  Escrita  Leitura  Consistência eventual Teorema CAP  Consistency  Availability  Partition tolerance
  29. 29. Observações  Quando usar NoSQL
  30. 30. Conclusão  Resolução de um problema  Crescimento da quantidade de dados (BigData)  Incertezas  Pequenas empresas devem tomar cuidado   Teorema CAP Realizar uma boa análise para identificar qual das categorias existentes de bancos NoSQL melhor se encaixa no modelo de negócio
  31. 31.  Atuais Categorias de bancos NoSQL  Redis  MongoDB  Neo4j  Referências Bibliográficas
  32. 32. Atuais Categorias de Bancos NoSQL  Armazenamento orientado a colunas  Armazenamento em chave / valor  Banco de Dados orientado a documentos  Banco de Dados orientado a grafos
  33. 33. Atuais Categorias de Bancos NoSQL Armazenamento orientado a colunas  Conceito   Evita desperdício de disco  Leitura muito rápida   Schmaless Escrita um pouco mais lenta Produtos  HBase  Hypertable  Amazon DynamoDB  Cloudata
  34. 34. Atuais Categorias de Bancos NoSQL Armazenamento em chave / valor  Conceito  Categoria mais simples de NoSQL  Hash table   Acesso muito rápido aos dados Produtos  Riak  Redis  Memcached DB  Membase  Kyoto Cabinet
  35. 35. Atuais Categorias de Bancos NoSQL Banco de Dados orientado a documentos  Conceito  Documento  XML, JSON, BSON etc  Árvores hierárquicas auto descritíveis, que consistem de mapas, coleções e valores escalares  Collection    Conjunto de documentos similares Pode ser comparada a uma tabela do modelo relacional Produtos  MongoDB  CouchDB
  36. 36. Atuais Categorias de Bancos NoSQL Banco de Dados orientado a grafos  Conceito  Permite armazenar os relacionamentos   Entidades   Podem possuir propriedades Nós (vértices) Relacionamentos  Arestas    Pode-se representar os relacionamentos entre entidades na maneira como eles ocorrem no mundo real Consulta muito rápida Produtos  Neo4j  FlockDB
  37. 37. Redis  Breve introdução    Key-value store In-memory Características  Muito rápido  Ótimo para replicação  Leve e pequeno  Transações  Open Source (BSD License).
  38. 38. Redis  O que posso armazenar com Redis ?   Intengers  Hash  Lists  Sets   Strings Sorted Sets Clientes para Redis  C, C#, C++, Clojure, Common Lisp, Erlang, Go, Haskell  haXe, Java, Lua, Node.JS, Objetive C, Perl, PHP, Python  Ruby, Scala, SmallTalk, Tcl
  39. 39. Redis  Quem utiliza Redis ?
  40. 40. MongoDB  Breve Introdução   Poderoso  Flexível  Escalável   Mantido pela 10gen Fácil de se trabalhar (amigável) Características  Utiliza JSON  Schema flexível  Atualizações atômicas  Performance  Replicação  Auto-sharding
  41. 41. MongoDB  O que posso armazenar com o MongoDB    Boolean, Integer, String, Date, Regular Expression Code, Array, Embedded document Clientes para MongoDB  C, C++, C#, Erlang, Java  Perl, PHP, Python, Ruby, Scala
  42. 42. MongoDB  Quem usa MongoDB ?
  43. 43. Neo4j  Breve Introdução   Embeddable / Server  ACID (Atomicidade, consistência, isolamento e durabilidade)  Alta disponibilidade (Versão Enterprise)   Tudo pode ser modelado com grafos Schemaless Casos onde usar grafos  Sistemas de recomendação, Business Inteligence  Social Computing, Sistemas de gerenciamento  Web of things, Catálogo de Produtos, Web analytics
  44. 44. Neo4j  Clientes para Neo4j  Java, Ruby, PHP, .net, py2neo, node.js  Scala, Borneo, Python, django
  45. 45. Neo4j  Quem usa Neo4j ?
  46. 46. Referências  ABITEBOUL, Serge; BUNEMAN, Peter; SUCIU, Dan. Data on the Web: from relations to semistructured data and XML. San Francisco: Morgan Kaufmann Publishers, 2000.  CHODOROW, Kristina; DIROLF, Michael. MongoDB: the definitive guide. Sebastopol: O’Reilly Media Inc., 2010.  CISCO. VNI forecast highlights. Disponível em: < http://www.cisco.com/ web/solutions/sp/vni/vni_forecast_highlights/index.html#~Region>. Acesso em: 26 jan. 2013.  COMMITTEE ON INNOVATIONS IN COMPUTING AND COMMUNICATIONS. Funding a Revolution. Washington: National Academies Press, 1999.  ELMASRI; NAVATHE. Sistemas de banco de dados. 3. ed. São Paulo: Pearson, 2010.  ELON UNIVERSITY SCHOOL OF COMMUNICATIONS. Imagining the Internet: a history and forecast. Disponível em: < http://www.elon.edu/eweb/predictions/early90s/internethistory.xhtml>. Acesso em: 26 jan. 2013.  FERREIRA, Edmar. Escolhendo entre escalabilidade horizontal e escalabilidade vertical. Disponível em: <http://escalabilidade.com/2010/09/21/escolhendo-entre-escalabilidadehorizontal- e-escalabilidade-vertical/>. Acesso em: 26 jan. de 2013.  GREGOL, R. E. Weizenmann. Recursos de escalabilidade e alta disponibilidade para aplicações web. 2011. Monografia (Conclusão de Curso em Análise e Desenvolvimento de Sistemas). UTFPR. 2011.  INTERNET SOCIETY. Brief history of the Internet. Disponível em: < http://www.internetsociety.org/internet/what-internet/history-internet/brief-history- internet#Origins>. Acesso em 26 jan 2013.  MANDEL, Arnaldo; IMRE, Simon; DELYRA, Jorge L. Informação: computação e comunicação. São Paulo: USP, 1997.  PETER, Ian. History of the World Wide Web. Disponível em: < http://www.nethistory.info/History%20of%20the%20Internet/web.html>. Acesso em: 26 jan. 2013.  RODRIGUES FILHO, José. A. F. Data Mining: conceitos, técnicos e aplicação, 2001. Dissertação (Mestrado em Engenharia) – Escola Politécnica, Universidade de São Paulo, 2001.  59  SADALAGE, Pramodkumar J.; FOWLER, Martin. NoSQL Distilled: A brief guide to the emerging world of polyglot persistence. Nova Jersey: Pearson Education Inc., 2012.  SETZER, Valdemar W. Dado, informação, conhecimento e competência. Disponível em: <http://www.dgz.org.br/dez99/Art_01.htm>. Acesso em: 21 out. 2012.  STRAUCH, Christof. NoSQL Databases. Stuttgart, 2011. Disponível em: <http://www.christof-strauch.de/nosqldbs.pdf>. Acesso em: 23 mai. 2013.  TIWARI, Shashank. Professional NoSQL. Indianápolis: Jhon Wiley & Sons, 2011.  YONG, Shao Chu. Banco de dados: organização, sistemas, administração. São Paulo: Atlas, 1983.  ZAKON, Robert H. Hobbes’ Internet timeline 10.2. Disponível em: <http://www.zakon.org/robert/internet/timeline/>. Acesso em: 26 jan. 2013.

×