apresentação
TRANSCRIPT
Banco de Dados NoSQLUMA ALTERNATIVA AO TRADICIONAL MODELO RELACIONAL
“Every 2 days we create as much information as we did up 2003”ERIC SCHMIDT, GOOGLE
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.
Conteúdo1º DiaIntroduçãoContextualização Banco de DadosGrande volume de Dados (Big Data)Bancos de Dados NoSQL
2º DiaAtuais Categorias de bancos NoSQLRedisMongoDBNeo4jReferências Bibliográficas
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
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.
Bala de prata
Em TI a única bala de prata, ainda, é o banco de dados relacional.
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
Banco de Dados
O termo Possui um aspecto do mundo real Coleção logicamente coerente 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)
Banco de Dados
Mudança na forma de pensar no desenvolvimento de software
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
Grande Volume de Dados
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
Grande volume de dados Escalabilidade
Definição
Vertical
Bom para o modelo relacional
Alto custo
Limitação
Grande voluma de dados
Horizontal
Problemas com o modelo relacional
Ilimitado
Custo baixo
Bancos de Dados NoSQL
Surgimento
Modelo de Dados Agregados
Schemaless
Map Reduce
Propriedade ACID
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 umaarquitetura distribuída horizontalmente.
Resolver a diferença de impedância. Produtividade no desenvolvimento de
software.
Banco de Dados NoSQL
Diferença de Impedância.
Bancos orientados a objetos
Necessidade de “espremer” os dadosno esquema proposto.
Soluções caras no mundo relacional
Banco de Dados NoSQL
Modelo de Dados Agregados
Modelo Relacional Tabelas, linhas e colunas
Modelo agregado Unidades
Efeitos do uso do modelo agregado Abrir mão de resoluções propostas pelo modelo relacional
Consulta demorada para certos casos
Banco de Dados NoSQLModelo de Dados Agregados – Exemplo
Modelo Relacional
Banco de Dados NoSQLModelo de Dados Agregados – Exemplo
Modelo Agregado
Banco de Dados NoSQLModelo de Dados Agregados – Exemplo
Modelo Agregado
Banco de Dados NoSQLSchemaless
Como é no modelo relacional
Flexibilidade
Facilidade de lidar com dados não uniformes
Efeitos 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.
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.
Banco de Dados NoSQL
Map Reduce
Map
Banco de Dados NoSQL
Map Reduce
Reduce
Banco de Dados NoSQL
Propriedades ACIDAtomicidade
Transações envolvendo mais de uma estrutura de dados agregados
Consistência Escrita
Leitura
Consistência eventual
Teorema CAP Consistency
Availability
Partition tolerance
Observações Quando usar NoSQL
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
Atuais Categorias de bancos NoSQL
Redis
MongoDB
Neo4j
Referências Bibliográficas
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
Atuais Categorias de Bancos NoSQL
Conceito Schmaless
Evita desperdício de disco
Leitura muito rápida
Escrita um pouco mais lenta
Produtos HBase
Hypertable
Amazon DynamoDB
Cloudata
Armazenamento orientado a colunas
Atuais Categorias de Bancos NoSQL Conceito
Categoria mais simples de NoSQL
Hash table
Acesso muito rápido aos dados
Produtos Riak
Redis
Memcached DB
Membase
Kyoto Cabinet
Armazenamento em chave / valor
Atuais Categorias de Bancos NoSQL
Conceito Documento
XML, JSON, BSON etc
Árvores hierárquicas auto descritíveis,que consistem de mapas, coleçõese valores escalares
Collection
Conjunto de documentos similares
Pode ser comparada a uma tabelado modelo relacional
Produtos MongoDB
CouchDB
Banco de Dados orientado a documentos
Atuais Categorias de Bancos NoSQL Conceito
Permite armazenar osrelacionamentos
Podem possuir propriedades
Entidades Nós (vértices)
Relacionamentos Arestas
Pode-se representar osrelacionamentos entre entidadesna maneira como eles ocorrem nomundo real
Consulta muito rápida Produtos
Neo4j FlockDB
Banco de Dados orientado a grafos
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).
Redis
O que posso armazenar com Redis ? Strings Intengers Hash Lists Sets 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
Redis
Quem utiliza Redis ?
MongoDB Breve Introdução
Mantido pela 10gen Poderoso Flexível Escalável Fácil de se trabalhar (amigável)
Características Utiliza JSON Schema flexível Atualizações atômicas Performance Replicação Auto-sharding
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
MongoDB
Quem usa MongoDB ?
Neo4j
Breve Introdução Tudo pode ser modelado com grafos Embeddable / Server ACID (Atomicidade, consistência, isolamento e durabilidade) Alta disponibilidade (Versão Enterprise) 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
Neo4j
Clientes para Neo4j Java, Ruby, PHP, .net, py2neo, node.js
Scala, Borneo, Python, django
Neo4j
Quem usa Neo4j ?
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/e- web/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-escalabilidade-horizontal- 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.