apresentação

Post on 03-Aug-2015

287 Views

Category:

Documents

5 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Banco de Dados NoSQLUMA ALTERNATIVA AO TRADICIONAL MODELO RELACIONAL

Joel Jr.

Twitter: @jhowvasconcelos

Blog: joevjunior.wordpress.com

E-mail: jr.joelvasconcelos@gmail.com

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

top related