Mongopesl

199 visualizações

Publicada em

0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
199
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
2
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Mongopesl

  1. 1. Modelo NoSQL orientado à documentosModelo NoSQL orientado à documentos Bruno Gabriel dos Santos bruno.gsantos89@gmail.com
  2. 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. 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. 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. 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. 6. Imagem retirada de: http://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/
  7. 7. Imagem retirada de: http://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/
  8. 8. Modelos de base de dadosModelos de base de dados ● Chave/Valor; ● Orientado à grafos; ● Orientado à documentos; ● Família de colunas.
  9. 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. 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. 11. Imagem retirada de: http://www.infoq.com/articles/graph-nosql-neo4j
  12. 12. Orientados à documentosOrientados à documentos ● Prós: ● Simples; ● Escalável; ● Query. ● Contras: ● Map Reduce para longas queries; ● Modelos limitados a indexação e chaves.
  13. 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. 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. 15. Algumas linguagensAlgumas linguagens
  16. 16. Javascript Object Notation - JSONJavascript Object Notation - JSON ● RFC: 4627; ● Simples, difundido e suportado por muitas linguagens.
  17. 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. 18. ShardingSharding Figuras retiradas de: http://docs.mongodb.org/manual/core/sharding-introduction/
  19. 19. Quem usa?Quem usa? Entrem e percam horas aqui: http://www.mongodb.org/about/production-deployments/
  20. 20. Exemplo de Modelagem: CartolaExemplo de Modelagem: Cartola Franklin Amorim: http://www.slideshare.net/franklinamorim/mongodb-globocom MongoSP
  21. 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. 22. Instruções básicas: ComandosInstruções básicas: Comandos { titulo: "Java - Como Programar", autor: "Paul Deitel"} Um array JSON Inserindo dados
  23. 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. 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. 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. 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. 27. ExemploExemplo
  28. 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. 29. ExemplosExemplos ● db.your.ensureIndex({field: 1}); ● db.your.distinct(“field”); ● Campo específico: ● db.your.find(query, {field: 1})
  30. 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/.

×