apresentação

46
Banco de Dados NoSQL UMA ALTERNATIVA AO TRADICIONAL MODELO RELACIONAL

Upload: joel-junior

Post on 03-Aug-2015

287 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Apresentação

Banco de Dados NoSQLUMA ALTERNATIVA AO TRADICIONAL MODELO RELACIONAL

Page 2: Apresentação

Joel Jr.

Twitter: @jhowvasconcelos

Blog: joevjunior.wordpress.com

E-mail: [email protected]

Page 3: Apresentação

“Every 2 days we create as much information as we did up 2003”ERIC SCHMIDT, GOOGLE

Page 4: Apresentação

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.

Page 5: Apresentação

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

Page 6: Apresentação

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

Page 7: Apresentação

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.

Page 8: Apresentação

Bala de prata

Em TI a única bala de prata, ainda, é o banco de dados relacional.

Page 9: Apresentação

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

Page 10: Apresentação

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)

Page 11: Apresentação

Banco de Dados

Mudança na forma de pensar no desenvolvimento de software

Page 12: Apresentação

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

Page 13: Apresentação

Grande Volume de Dados

Page 14: Apresentação

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

Page 15: Apresentação

Grande volume de dados Escalabilidade

Definição

Vertical

Bom para o modelo relacional

Alto custo

Limitação

Page 16: Apresentação

Grande voluma de dados

Horizontal

Problemas com o modelo relacional

Ilimitado

Custo baixo

Page 17: Apresentação

Bancos de Dados NoSQL

Surgimento

Modelo de Dados Agregados

Schemaless

Map Reduce

Propriedade ACID

Page 18: Apresentação

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.

Page 19: Apresentação

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

Page 20: Apresentação

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

Page 21: Apresentação

Banco de Dados NoSQLModelo de Dados Agregados – Exemplo

Modelo Relacional

Page 22: Apresentação

Banco de Dados NoSQLModelo de Dados Agregados – Exemplo

Modelo Agregado

Page 23: Apresentação

Banco de Dados NoSQLModelo de Dados Agregados – Exemplo

Modelo Agregado

Page 24: Apresentação

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.

Page 25: Apresentação

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.

Page 26: Apresentação

Banco de Dados NoSQL

Map Reduce

Map

Page 27: Apresentação

Banco de Dados NoSQL

Map Reduce

Reduce

Page 28: Apresentação

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

Page 29: Apresentação

Observações Quando usar NoSQL

Page 30: Apresentação

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

Page 31: Apresentação

Atuais Categorias de bancos NoSQL

Redis

MongoDB

Neo4j

Referências Bibliográficas

Page 32: Apresentação

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

Page 33: Apresentação

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

Page 34: Apresentação

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

Page 35: Apresentação

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

Page 36: Apresentação

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

Page 37: Apresentação

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).

Page 38: Apresentação

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

Page 39: Apresentação

Redis

Quem utiliza Redis ?

Page 40: Apresentação

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

Page 41: Apresentação

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

Page 42: Apresentação

MongoDB

Quem usa MongoDB ?

Page 43: Apresentação

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

Page 44: Apresentação

Neo4j

Clientes para Neo4j Java, Ruby, PHP, .net, py2neo, node.js

Scala, Borneo, Python, django

Page 45: Apresentação

Neo4j

Quem usa Neo4j ?

Page 46: Apresentação

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.