nosql orientado à documentos. apresentação nosql problemas que levaram a utilização do nosql...

52
NoSQL Orientado à documentos

Upload: internet

Post on 22-Apr-2015

135 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

NoSQLOrientado à documentos

Page 2: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

Apresentação• NoSQL• Problemas que levaram a utilização do NoSQL• Quando utilizar NoSQL?• Tipos• Orientação à documentos• MapReduce• JSON• CouchDB• MongoDB

Page 3: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

NoSQL• Quando surgiu

o Na criação do termo, existia ausência do SQL e o modelo ainda centrado no relacional

o O movimento NoSQL "é completamente distinto do modelo relacional e portanto deveria ser chamado "NoREL" ou algo que produzisse o mesmo efeito".

Carlo Strozzi

o Termo NoSQL vira abreviação de Not Only SQL

Page 4: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

NoSQL• O que é NoSQL hoje?

o Not Only SQL (Não apenas, não somente SQL)

o NoSQL = Não Relacional

o Atualmente é uma altenativa ao modelo relacional

Page 5: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

NoSQL• Problemas que motivaram a utilização do

NoSQL

• BigDatao Volume o Variedadeo Velocidade dos Dados

• Modelo relacional perde desempenho quando utiliza BigData

Page 6: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

NoSQL• Teorema CAP

o Consistency, Availability and Partition tolerance o Conceitos ACID x BASE

• ACID (Atomicity, Consistency, Isolation and Durability)

• BASE (Basically Available, Soft-state, Eventually consistency)

o Traz uma sensível diminuição no custo computacional para a garantia de consistência dos dados em relação à SGBDs tradicionais.

Page 7: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

NoSQL• MapReduce

o MapReduce(Framework desenvolvido pelo Google) - Modelo de programação paralela para processamento largamente distribuído de grandes volumes de dados.

o MAP - processo de mapear a requisição do originador.

o REDUCE - processo de agregação do resultado em algo consolidado.

Page 8: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

NoSQL• Quando utilizar NoSQL?

o Escalabilidadeo Flexibilidadeo Manipulação de quantidade massiva de dadoso Bom desempenhoo Facilidade para consultas

Page 9: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

NoSQL• Tipos de NoSQL

o Key/Value: DynamoDb, Riak, Azure Table Storage, Berkeley DB, etc.

o Wide column store: Hadoop, Cassanda, Hypertable, Amazon SimpleDB, etc.

o Document store: MongoDb, CouchDB, RavenDb, etc.

o Graph store: Neo4J, Infinite Graph, InforGrid, HyperGraphDB, etc.

Page 10: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

NoSQL

Page 11: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

Orientação à documentos

Page 12: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

Orientação à documentos

Definição

Segundo Anderson(Anderson, et al., 2009), BDODs utilizam o conceito de dados e documentos autocontidos e auto descritivos, isso implica que o documento em si já define como ele deve ser apresentado e o significado dos dados em cuja sua estrutura estão armazenados.

Exemplo: Uma nota fiscal.

Page 13: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

Orientação à documentos

Características

• Permite que tenha redundância e inconsistência.

• Contêm todas as informações importantes em um único documento.

• Livre de esquemas.

• Identificadores Únicos Universais(UUID)

• Consultar os documentos através de métodos avançados de agrupamento e filtragem: MapReduce

Page 14: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

Orientação à documentos

• JSON

o É um padrão leve de intercâmbio de dados, projetado para facilitar a leitura e escrita de estruturas, também sendo de fácil interpretação e geração por máquinas.

o Suas estruturas são baseadas em um subconjunto da especificação da linguagem JavaScript e permitem a construção de estruturas de dados partindo de dois conceitos: uma coleção de pares chave/valor e uma lista ordenada de valores (JSON, 2008).

Page 15: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

Orientação à documentos

• Formato JSON

Page 16: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

Orientação à documentos

• Vantagens

o Ganha Flexibilidade, disponibilidade, linguagem de consulta simples e performance.

• Desvantagem

o Perde em consistência.

Page 17: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

Orientação à documentos

• Ferramentas mais utilizadas

Page 18: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce
Page 19: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

CouchDB• Definição

o O CouchDB é um sistema distribuído, acessível através de uma API RESTful, realiza o armazenamento versionado de objetos que utiliza a abstração de documentos, disponibiliza uma forma de agregar e consultar dados através do MapReduce e replica seus dados de forma incremental, bidirecional e multi-master, utilizando o MVCC, um algoritmo de consenso de conflitos, onde os dados estão sujeitos a consistência eventual em cada nó (Anderson, et al., 2009).

Page 20: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

CouchDB• Linha de comando

o RESTful API

• Interface do Futon

o Cria documentos no formato JSON

Page 21: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

CouchDB• RESTful API

o Leitura do banco de dados

o Escreve: GET http://localhost:5984/

o Retorna: {"couchdb":"Welcome","version":"1.0.1"}

Page 22: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

CouchDB• RESTful API

o Criando ou atualizando o banco de dados

o Escreve: PUT http://localhost:5984/database

o Retorna: {"ok":true}

Page 23: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

CouchDB• RESTful API

o Deletando o banco de dados

o Escreve: DELETE http://localhost:5984/database

o Retorna: {"ok":true}

Page 25: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

CouchDB• RESTful API

o Ver o documento

o Escreve: GET http://localhost:5984/database/doc

o Retorna: {"_id":"doc","_rev":"1-446a0c701e94053b4c3baaa5ef3fe68c","no

me":"Henrique","apelido":"Gog\u00f3"}

Page 26: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

CouchDB• RESTful API

o Atualizar o documento

o Escreve: PUT http://localhost:5984/database/doc-d '{"_rev":"1-446a0c701e94053b4c3baaa5ef3fe68c","apelido":"Gogs"}‘

o Retorna: {"ok":true,"id":"doc","rev":"2-191182436ca9a532ec1124aa91b5a8da"}

Page 27: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

CouchDB• RESTful API

o Deletar o documento

o Escreve: DELETE http://localhost:5984/database/doc?rev=2-191182436ca9a532ec1124aa91b5a8da

o Retorna: {"ok":true,"id":"doc","rev":"3-4c1033574d7d38e57fe92a1b51fc667d"}

Page 28: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

CouchDB• MapReduce

o function(doc) { if (doc.city == "Fortaleza")emit(doc.title,doc.month+"/"+doc.year);

}

Page 29: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

CouchDB• Map

Page 30: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

CouchDB• View

Page 31: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

CouchDB• View

Page 32: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

CouchDB• Reduce

o function(keys, values) {return values;}

Page 33: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

CouchDB• Reduce

Page 34: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

CouchDB• View

Page 35: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce
Page 36: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

MongoDB• Apresentação da ferramenta

o Código abertoo Alta performance (desempenho)o Sem esquemaso Orientado à documentoso Escrito em C++o Multiplataformao É formado por um conjunto de Aplicativos JSON

Page 37: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

MongoDB• Criação

o Início 2007

o 1ª versão em 2009

o Versão atual: MongoDB 2.4 Released

Page 38: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

MongoDB• Funcionamento

o JSON – estilo de documento com esquemas dinâmicos para oferecer simplicidade e poder.

o Suporte de índice completoo Auto-Sharding - escala horizontalmente sem

comprometer a funcionalidade.o Consultas Ricas, baseada em documentoso MapReduce - Agregação flexível e processamento de

dados.o GridFS - Armazenar arquivos de qualquer tamanho sem

complicação.

Page 39: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

MongoDB• Analogia à BD Relacional

o O documento JSON seria o registro;

o A collection seria uma tabela;

o Os índices seriam os índices mesmo;

o O embedding e o linking seria o join.

Page 40: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

MongoDB• Algumas características interessantes do

MongoDB

o É possível acrescentar dados, por meio de um update;

o Não existe um schema dentro das coleções, ou seja, as collections podem ser dinâmicas;

o Há upserts, que podem atualizar se documento já existe, ou cria se ele não existe;

o Você pode armazenar o seu dado da forma que ele ocorre na “natureza”.

Page 41: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

MongoDB• Comparando expressões

o Create

Page 42: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

MongoDB• Comparando expressões

o Delete

Page 43: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

MongoDB• Comparando expressões

o Update

Page 44: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

MongoDB• Comparando expressões

o Insert

Page 45: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

MongoDB• Comparando expressões

o Select

Page 46: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

MongoDB• Comparando expressões

o Select

Page 47: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

MongoDB• Comparando expressões

o Select

Page 48: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

MongoDB• Empresas que utilizam o MongoDB

o Dentre as empresas que já usam o MongoDB, destaque para a globo.com (com o Cartola FC), SourceForge e a FourSquare.

o Outros projetos com MongoDB na Globo.com são: receitas.com, novo catálogo de vídeos da emissora, com 800 mil arquivos cadastrados, e o site de participações em eventos e programas da Globo.

Page 49: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

MongoDB• Avaliação da equipe do Cartola FC

o Velocidade (2x mais rápido que o MySQL)o Sem necessidade de um ORM (não tem abstração de tabela,

por exemplo)o Acesso mais natural aos dados (não tem que escrever query)o Sem schema / sem migrations (com exceções, mas em geral

não há problema de executar migration)o Failover automáticoo Possibilidade de escalar escritas com Sharding

• OBS.: Em alguns momentos específicos o cartola obteve quase 30 mil sessões simultâneas.

Page 50: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

MongoDB

• Agora pense em vídeo HD, geolocalização, mensagens em tempo real, realidade aumentada, imagens em tempo próximo ao real por satélite. Pense em todos esses dados, e na velocidade que as pessoas vão querer isso. Então, pense sobre qual banco de dados que você deseja começar a usar agora.

Page 51: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

Duvidas?

Page 52: NoSQL Orientado à documentos. Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce

Referências• Documentação. Disponível em: < http://www.mongodb.org/>.

• Creative Commons. Processamento de Dados Massivos/Projeto e implementação de aplicações Big Data/Agregação eficiente de dados temporais. Disponível em: http://pt.wikibooks.org/wiki/Processamento_de_Dados_Massivos/Projeto_e_implementação_de_aplicações_Big_Data/Agregação_eficiente_de_dados_temporais>.

 • Ianni, Vinicius. Introdução aos bancos de dados NoSQL. Disponível em: <

http://www.devmedia.com.br/introducao-aos-bancos-de-dados-nosql/26044#ixzz2O7Sed5P3>.

• Ianni, Vinicius. Big Data: Algumas definições e, sim, serve também para o pequeno negócio! Disponível em: <http://www.devmedia.com.br/space.asp?id=198225>.

• Lerner, Alberto. Introdução ao MongoDB – Direto da fonte! Disponível em: <http://ensinar.wordpress.com/tag/mongodb/>.

• Lennon, Joe. Explore o MongoDB. Disponível em: <http://www.ibm.com/developerworks/br/library/os-mongodb4/>.

• Nascimento, Jean3 Razões para usar MongoDB. Disponível em: <http://imasters.com.br/artigo/18334/mongodb/3-razoes-para-usar-mongodb/>.

• Nascimento, Jean. Como utilizar selects com MongoDB. Disponível em: <http://imasters.com.br/artigo/17308/mongodb/como-utilizar-selects-com-mongodb//>.