NoSQL
Orientado à documentos
Apresentação
• NoSQL
• Problemas que levaram a utilização do NoSQL
• Quando utilizar NoSQL?
• Tipos
• Orientação à documentos
• MapReduce
• JSON
• CouchDB
• MongoDB
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
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
NoSQL
• Problemas que motivaram a utilização do NoSQL
• BigData
o Volume
o Variedade
o Velocidade dos Dados
• Modelo relacional perde desempenho quando
utiliza BigData
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.
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.
NoSQL
• Quando utilizar NoSQL?
o Escalabilidade
o Flexibilidade
o Manipulação de quantidade massiva de dados
o Bom desempenho
o Facilidade para consultas
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.
NoSQL
Orientação à
documentos
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.
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
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).
Orientação à documentos
• Formato JSON
Orientação à documentos
• Vantagens
o Ganha Flexibilidade, disponibilidade, linguagem de
consulta simples e performance.
• Desvantagem
o Perde em consistência.
Orientação à documentos
• Ferramentas mais utilizadas
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).
CouchDB
• Linha de comando
o RESTful API
• Interface do Futon
o Cria documentos no formato JSON
CouchDB
• RESTful API
o Leitura do banco de dados
o Escreve: GET http://localhost:5984/
o Retorna: {"couchdb":"Welcome","version":"1.0.1"}
CouchDB
• RESTful API
o Criando ou atualizando o banco de dados
o Escreve: PUT http://localhost:5984/database
o Retorna: {"ok":true}
CouchDB
• RESTful API
o Deletando o banco de dados
o Escreve: DELETE http://localhost:5984/database
o Retorna: {"ok":true}
CouchDB
• RESTful API
o Criando o documento
o Escreve: PUT http://localhost:5984/database/doc-
d'{"nome":"Henrique","apelido":"Gogó"}‘
o Retorna: {"ok":true,"id":"doc","rev":"1-
446a0c701e94053b4c3baaa5ef3fe68c"}
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":"Gogu00f3"}
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"}
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"}
CouchDB
• MapReduce
o function(doc) {
if (doc.city == "Fortaleza")
emit(doc.title,doc.month+"/"+doc.year);
}
CouchDB
• Map
CouchDB
• View
CouchDB
• View
CouchDB
• Reduce
o function(keys, values) {
return values;
}
CouchDB
• Reduce
CouchDB
• View
MongoDB
• Apresentação da ferramenta
o Código aberto
o Alta performance (desempenho)
o Sem esquemas
o Orientado à documentos
o Escrito em C++
o Multiplataforma
o É formado por um conjunto de Aplicativos JSON
MongoDB
• Criação
o Início 2007
o 1ª versão em 2009
o Versão atual: MongoDB 2.4 Released
MongoDB
• Funcionamento
o JSON – estilo de documento com esquemas dinâmicos
para oferecer simplicidade e poder.
o Suporte de índice completo
o Auto-Sharding - escala horizontalmente sem comprometer
a funcionalidade.
o Consultas Ricas, baseada em documentos
o MapReduce - Agregação flexível e processamento de
dados.
o GridFS - Armazenar arquivos de qualquer tamanho sem
complicação.
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.
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”.
MongoDB
• Comparando expressões
o Create
MongoDB
• Comparando expressões
o Delete
MongoDB
• Comparando expressões
o Update
MongoDB
• Comparando expressões
o Insert
MongoDB
• Comparando expressões
o Select
MongoDB
• Comparando expressões
o Select
MongoDB
• Comparando expressões
o Select
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.
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ático
o Possibilidade de escalar escritas com Sharding
• OBS.: Em alguns momentos específicos o cartola obteve
quase 30 mil sessões simultâneas.
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.
Duvidas?
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//>.

No sql Orientado a documento

  • 1.
  • 2.
    Apresentação • NoSQL • Problemasque levaram a utilização do NoSQL • Quando utilizar NoSQL? • Tipos • Orientação à documentos • MapReduce • JSON • CouchDB • MongoDB
  • 3.
    NoSQL • Quando surgiu oNa 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
  • 4.
    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
  • 5.
    NoSQL • Problemas quemotivaram a utilização do NoSQL • BigData o Volume o Variedade o Velocidade dos Dados • Modelo relacional perde desempenho quando utiliza BigData
  • 6.
    NoSQL • Teorema CAP oConsistency, 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.
  • 7.
    NoSQL • MapReduce o MapReduce(Frameworkdesenvolvido 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.
  • 8.
    NoSQL • Quando utilizarNoSQL? o Escalabilidade o Flexibilidade o Manipulação de quantidade massiva de dados o Bom desempenho o Facilidade para consultas
  • 9.
    NoSQL • Tipos deNoSQL 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.
  • 10.
  • 11.
  • 12.
    Orientação à documentos Definição SegundoAnderson(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.
  • 13.
    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
  • 14.
    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).
  • 15.
  • 16.
    Orientação à documentos •Vantagens o Ganha Flexibilidade, disponibilidade, linguagem de consulta simples e performance. • Desvantagem o Perde em consistência.
  • 17.
    Orientação à documentos •Ferramentas mais utilizadas
  • 19.
    CouchDB • Definição o OCouchDB é 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).
  • 20.
    CouchDB • Linha decomando o RESTful API • Interface do Futon o Cria documentos no formato JSON
  • 21.
    CouchDB • RESTful API oLeitura do banco de dados o Escreve: GET http://localhost:5984/ o Retorna: {"couchdb":"Welcome","version":"1.0.1"}
  • 22.
    CouchDB • RESTful API oCriando ou atualizando o banco de dados o Escreve: PUT http://localhost:5984/database o Retorna: {"ok":true}
  • 23.
    CouchDB • RESTful API oDeletando o banco de dados o Escreve: DELETE http://localhost:5984/database o Retorna: {"ok":true}
  • 24.
    CouchDB • RESTful API oCriando o documento o Escreve: PUT http://localhost:5984/database/doc- d'{"nome":"Henrique","apelido":"Gogó"}‘ o Retorna: {"ok":true,"id":"doc","rev":"1- 446a0c701e94053b4c3baaa5ef3fe68c"}
  • 25.
    CouchDB • RESTful API oVer o documento o Escreve: GET http://localhost:5984/database/doc o Retorna: {"_id":"doc","_rev":"1- 446a0c701e94053b4c3baaa5ef3fe68c","no me":"Henrique","apelido":"Gogu00f3"}
  • 26.
    CouchDB • RESTful API oAtualizar 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"}
  • 27.
    CouchDB • RESTful API oDeletar o documento o Escreve: DELETE http://localhost:5984/database/doc?rev=2- 191182436ca9a532ec1124aa91b5a8da o Retorna: {"ok":true,"id":"doc","rev":"3- 4c1033574d7d38e57fe92a1b51fc667d"}
  • 28.
    CouchDB • MapReduce o function(doc){ if (doc.city == "Fortaleza") emit(doc.title,doc.month+"/"+doc.year); }
  • 29.
  • 30.
  • 31.
  • 32.
    CouchDB • Reduce o function(keys,values) { return values; }
  • 33.
  • 34.
  • 36.
    MongoDB • Apresentação daferramenta o Código aberto o Alta performance (desempenho) o Sem esquemas o Orientado à documentos o Escrito em C++ o Multiplataforma o É formado por um conjunto de Aplicativos JSON
  • 37.
    MongoDB • Criação o Início2007 o 1ª versão em 2009 o Versão atual: MongoDB 2.4 Released
  • 38.
    MongoDB • Funcionamento o JSON– estilo de documento com esquemas dinâmicos para oferecer simplicidade e poder. o Suporte de índice completo o Auto-Sharding - escala horizontalmente sem comprometer a funcionalidade. o Consultas Ricas, baseada em documentos o MapReduce - Agregação flexível e processamento de dados. o GridFS - Armazenar arquivos de qualquer tamanho sem complicação.
  • 39.
    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.
  • 40.
    MongoDB • Algumas característicasinteressantes 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”.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
    MongoDB • Empresas queutilizam 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.
  • 49.
    MongoDB • Avaliação daequipe 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ático o Possibilidade de escalar escritas com Sharding • OBS.: Em alguns momentos específicos o cartola obteve quase 30 mil sessões simultâneas.
  • 50.
    MongoDB • Agora penseem 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.
  • 51.
  • 52.
    Referências • Documentação. Disponívelem: < 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//>.