Mongopesl
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Mongopesl

on

  • 306 views

 

Statistics

Views

Total Views
306
Views on SlideShare
306
Embed Views
0

Actions

Likes
0
Downloads
1
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Mongopesl Presentation Transcript

  • 1. Modelo NoSQL orientado à documentosModelo NoSQL orientado à documentos Bruno Gabriel dos Santos bruno.gsantos89@gmail.com
  • 2. AgendaAgenda Tópicos: 1. O que é NoSQL? 2. MongoDB; 3. Exemplo de Modelagem; 4. Instruções básicas; 5. Geoposition; 6. Modelo Pipeline; 7. Referências.
  • 3. NoSQL: Not Only SQLNoSQL: Not Only SQL Banco de Dados não relacional, nada de ACID: ● Modelo BASE Eventual: uma hora vai→ acontecer; ● Uso: Grandes quantidades de dados não estruturados: ● Arquivos textuais, e-mail, multimídia etc.; ● Características: ● Eventual: uma hora vai acontecer; ● Arquitetura simplificada; ● Alta performance.
  • 4. NoSQL: Breve histórico...NoSQL: Breve histórico... ● Surgimento: 2009; ● Johan Oskarsson e Eric Evans; ● Objectivo: Discutir o crescente surgimento de novas soluções open source para armazenamento de dados distribuídos de forma “não relacional”.
  • 5. Não Relacional X RelacionalNão Relacional X Relacional ● Distribuição: ● Dados particionados, distribuídos em inúmeros servidores, p.e: computação em núvem; ● Evita perda de dados: Distribuição. ● Sem normalização; ● Desempenho: abrir mão da consistência: ● Consistência envolve: ● Integridade de dados; ● Unicidade de chaves e valores lógicos; ● Sem duplicação.
  • 6. Imagem retirada de: http://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/
  • 7. Imagem retirada de: http://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/
  • 8. Modelos de base de dadosModelos de base de dados ● Chave/Valor; ● Orientado à grafos; ● Orientado à documentos; ● Família de colunas.
  • 9. Chave/ValorChave/Valor ● Prós: ● Semelhança: Hash/Map; ● Simplicidades; ● Query constante: Qual a complexidade O(?): ● Chaves indexadas: <key, value>. ● Cache de memória; ● Contras: ● Complexidade na elaboração de chaves; ● Apenas um valor por chave.
  • 10. Orientados à grafosOrientados à grafos ● Prós: ● Sem conceitos estruturados; ● Sem quedas de performance entre muitas consultas envolvendo joins; ● Consultas rápidas. ● Contras: ● Complexidade dos grafos; ● Sharding: hoje é essencial: longas bases de dados.
  • 11. Imagem retirada de: http://www.infoq.com/articles/graph-nosql-neo4j
  • 12. Orientados à documentosOrientados à documentos ● Prós: ● Simples; ● Escalável; ● Query. ● Contras: ● Map Reduce para longas queries; ● Modelos limitados a indexação e chaves.
  • 13. Família de ColunasFamília de Colunas ● Prós: ● Compreensão dos Dados (cada coluna contém só seu tipo); ● Mais eficiência (vide anterior). ● Contras: ● Armazenamento complexo; ● Sem interface amigável (query?).
  • 14. MongoDB: Orientado à DocumentosMongoDB: Orientado à Documentos ● Significa monstruoso, extremamente grande; ● Escrito em C++; ● Entrada JSON, armazenamento BSON; ● Desenvolvimento rápido; ● Vantagens da multiplicidade de índices; ● Suporte a muitas linguagens de programação; ● Indexe aquilo que você mais busca: ● Desempenho superior!!!
  • 15. Algumas linguagensAlgumas linguagens
  • 16. Javascript Object Notation - JSONJavascript Object Notation - JSON ● RFC: 4627; ● Simples, difundido e suportado por muitas linguagens.
  • 17. Demais característicasDemais características ● BSON; ● Sharding; ● Gridfs: quebra dos dados e montagem; ● Modelo Aggregation; ● Suporta MapReduce; ● Mongodump, Mongoexport etc.; ● Suporte a muitas linguagens drivers:→ ● Python, Java, C#, C/C++, NodeJS etc.
  • 18. ShardingSharding Figuras retiradas de: http://docs.mongodb.org/manual/core/sharding-introduction/
  • 19. Quem usa?Quem usa? Entrem e percam horas aqui: http://www.mongodb.org/about/production-deployments/
  • 20. Exemplo de Modelagem: CartolaExemplo de Modelagem: Cartola Franklin Amorim: http://www.slideshare.net/franklinamorim/mongodb-globocom MongoSP
  • 21. Instruções básicas: ComandosInstruções básicas: Comandos Abre no terminal! Exibe os dbs! Usando uma base de dados!!! Deletando uma base de dados e suas coleções.
  • 22. Instruções básicas: ComandosInstruções básicas: Comandos { titulo: "Java - Como Programar", autor: "Paul Deitel"} Um array JSON Inserindo dados
  • 23. Instruções básicas: ComandosInstruções básicas: Comandos Retorna todos os dados!!! O tal do _id ? E se eu quiser dados específicos? Parâmetro!!!
  • 24. Instruções básicas: ComandosInstruções básicas: Comandos > db.your_collection.findOne( ) > db.your_collection.update(query, set): db.livros.update({titulo: “Java – Como Programar”}, {$set: {ano: 2010}}) > db.your_collection.remove(query) → cuidado neste comando!!!
  • 25. GeopositionGeoposition ● Mongo fornece uma ferramenta para trabalhar com cálculos de Geoposition $geoWithin: > db.your_collection.find({coords: {$geoWithin: {$center: [[x,y], distance]}}}) > db.places.insert({local: 'jacarei', coordenadas: [-23.305015,-45.966908]}) > db.places.insert({local: 'sjc', coordenadas: [-23.152987,-45.876374]}) > db.places.insert({local: 'boston', coordenadas: [42.371227,-71.055558]}) ● Vamos supor que estamos em Taubaté? > db.places.find( { coordenadas: { $geoWithin : { $center : [ [-23.017812,-45.544617] , 10 ] } } } ) ● Resposta? Proximidade > db.<collection>.find( { <location field> : { $geoWithin : { $centerSphere : [ [ <x>, <y> ] , <radius> ] } } } )
  • 26. Aggregation: Modelo PipelineAggregation: Modelo Pipeline ● Operações fora de ordem mudam o resultado; ● Suporte a muitas operações; ● Possui semelhantes a NoSQL exceto Join; ● Suporta Geoposition como primeira etapa.
  • 27. ExemploExemplo
  • 28. Aggregation: Algumas funçõesAggregation: Algumas funções ● Sort: {$sort: {field: value}} ● Valor: -1 ou 1; ● {$match: {field: value}} ● {$limit: value} ● {$skip: 5} ● Suporta regex; ● Suporta cálculo booleano; ● Group: sum, avg etc.; ● Etc.
  • 29. ExemplosExemplos ● db.your.ensureIndex({field: 1}); ● db.your.distinct(“field”); ● Campo específico: ● db.your.find(query, {field: 1})
  • 30. ReferênciasReferências ● STRAUCH, Christof. NoSQL Databases. 2010. 149 f. Orientação (Graduação) - Curso de Computer Science And Media, Departamento de Csm, Stuttgart Media University, Alemanha, 2010; ● Murphy, Rian ; Merriman, Dwight ; Magnusson Jr, Geir et al.: mongoDB manual Querying – Aggregation. Setembro 2013. – Wiki article. http://www.mongodb.org/display/DOCS/Aggregation; ● Murphy, Rian ; Magnusson Jr, Geir ; Merriman, Dwight et al.: mongoDB Manual – Data Types and Conventions – Object IDs. Setembro 2013. – Wiki article. http://www.mongodb.org/display/DOCS/Object+IDs; ● Murphy, Rian; The MongoDB 2.4 Manual Wiki article. http://docs.mongodb.org/manual/.