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

Contenu connexe

Tendances

Mais um comparativo MongoDB - Fernando Boaglio - abril.2014
Mais um comparativo MongoDB - Fernando Boaglio - abril.2014Mais um comparativo MongoDB - Fernando Boaglio - abril.2014
Mais um comparativo MongoDB - Fernando Boaglio - abril.2014Fernando Boaglio
 
Curso mongo db com php
Curso mongo db com phpCurso mongo db com php
Curso mongo db com phpSuissa
 
Hands-on Workshop: Como configurar e utilizar uma estrutura MongoDB para Big ...
Hands-on Workshop: Como configurar e utilizar uma estrutura MongoDB para Big ...Hands-on Workshop: Como configurar e utilizar uma estrutura MongoDB para Big ...
Hands-on Workshop: Como configurar e utilizar uma estrutura MongoDB para Big ...Big Data Week São Paulo
 
Introdução no sql mongodb java
Introdução no sql mongodb javaIntrodução no sql mongodb java
Introdução no sql mongodb javaFabiano Modos
 
Mini-Curso de MongoDB
Mini-Curso de MongoDBMini-Curso de MongoDB
Mini-Curso de MongoDBBrunno Gomes
 
Curso JavaScript - Aula sobre DOM e Ajax
Curso JavaScript - Aula sobre DOM e AjaxCurso JavaScript - Aula sobre DOM e Ajax
Curso JavaScript - Aula sobre DOM e AjaxTiago Antônio da Silva
 
Lições Aprendidas MongoDB
Lições Aprendidas MongoDBLições Aprendidas MongoDB
Lições Aprendidas MongoDBFabiano Modos
 
Nosql e BD Orientados a Documentos
Nosql e BD Orientados a DocumentosNosql e BD Orientados a Documentos
Nosql e BD Orientados a DocumentosYuri Adams
 
MongoDB - Apresentação
MongoDB - ApresentaçãoMongoDB - Apresentação
MongoDB - ApresentaçãoTerra / Neo
 
Introdução ao MongoDB
Introdução ao MongoDBIntrodução ao MongoDB
Introdução ao MongoDBElaine Naomi
 
Desenvolvendo soluções com banco de dados não relacional - MongoDB
Desenvolvendo soluções com banco de dados não relacional - MongoDBDesenvolvendo soluções com banco de dados não relacional - MongoDB
Desenvolvendo soluções com banco de dados não relacional - MongoDBiMasters
 
Como o elasticsearch salvou minhas buscas
Como o elasticsearch salvou minhas buscasComo o elasticsearch salvou minhas buscas
Como o elasticsearch salvou minhas buscasWaldemar Neto
 

Tendances (20)

Mongo db slides
Mongo db slidesMongo db slides
Mongo db slides
 
Mais um comparativo MongoDB - Fernando Boaglio - abril.2014
Mais um comparativo MongoDB - Fernando Boaglio - abril.2014Mais um comparativo MongoDB - Fernando Boaglio - abril.2014
Mais um comparativo MongoDB - Fernando Boaglio - abril.2014
 
2011 01-18 mongo-db
2011 01-18 mongo-db2011 01-18 mongo-db
2011 01-18 mongo-db
 
Curso mongo db com php
Curso mongo db com phpCurso mongo db com php
Curso mongo db com php
 
Palestra MongoDB
Palestra MongoDBPalestra MongoDB
Palestra MongoDB
 
Hands-on Workshop: Como configurar e utilizar uma estrutura MongoDB para Big ...
Hands-on Workshop: Como configurar e utilizar uma estrutura MongoDB para Big ...Hands-on Workshop: Como configurar e utilizar uma estrutura MongoDB para Big ...
Hands-on Workshop: Como configurar e utilizar uma estrutura MongoDB para Big ...
 
Introdução no sql mongodb java
Introdução no sql mongodb javaIntrodução no sql mongodb java
Introdução no sql mongodb java
 
Mini-Curso de MongoDB
Mini-Curso de MongoDBMini-Curso de MongoDB
Mini-Curso de MongoDB
 
Curso JavaScript - Aula sobre DOM e Ajax
Curso JavaScript - Aula sobre DOM e AjaxCurso JavaScript - Aula sobre DOM e Ajax
Curso JavaScript - Aula sobre DOM e Ajax
 
Mongo
MongoMongo
Mongo
 
MongoDB - Iniciando e Conhecendo
MongoDB - Iniciando e ConhecendoMongoDB - Iniciando e Conhecendo
MongoDB - Iniciando e Conhecendo
 
Lições Aprendidas MongoDB
Lições Aprendidas MongoDBLições Aprendidas MongoDB
Lições Aprendidas MongoDB
 
Nosql e BD Orientados a Documentos
Nosql e BD Orientados a DocumentosNosql e BD Orientados a Documentos
Nosql e BD Orientados a Documentos
 
Introdução ao NoSql
Introdução ao NoSqlIntrodução ao NoSql
Introdução ao NoSql
 
MongoDB - Apresentação
MongoDB - ApresentaçãoMongoDB - Apresentação
MongoDB - Apresentação
 
Introdução ao MongoDB
Introdução ao MongoDBIntrodução ao MongoDB
Introdução ao MongoDB
 
Desenvolvendo soluções com banco de dados não relacional - MongoDB
Desenvolvendo soluções com banco de dados não relacional - MongoDBDesenvolvendo soluções com banco de dados não relacional - MongoDB
Desenvolvendo soluções com banco de dados não relacional - MongoDB
 
Mongo + php
Mongo + phpMongo + php
Mongo + php
 
MongoDB e Bancos de Dados Orientados a Documentos
MongoDB e Bancos de Dados Orientados a DocumentosMongoDB e Bancos de Dados Orientados a Documentos
MongoDB e Bancos de Dados Orientados a Documentos
 
Como o elasticsearch salvou minhas buscas
Como o elasticsearch salvou minhas buscasComo o elasticsearch salvou minhas buscas
Como o elasticsearch salvou minhas buscas
 

En vedette

Aula 3 parte 2 software Inclusão Digital
Aula 3 parte 2 software Inclusão DigitalAula 3 parte 2 software Inclusão Digital
Aula 3 parte 2 software Inclusão DigitalPeslPinguim
 
Aula 1 apresentacao
Aula 1 apresentacaoAula 1 apresentacao
Aula 1 apresentacaoPeslPinguim
 
Aula 3 software Inclusão Digital
Aula 3 software Inclusão DigitalAula 3 software Inclusão Digital
Aula 3 software Inclusão DigitalPeslPinguim
 
Aula 4 redes Inclusão Digital
Aula 4 redes Inclusão DigitalAula 4 redes Inclusão Digital
Aula 4 redes Inclusão DigitalPeslPinguim
 
Aula 2 hardware Inclusão Digital
Aula 2 hardware Inclusão DigitalAula 2 hardware Inclusão Digital
Aula 2 hardware Inclusão DigitalPeslPinguim
 
Aula 2 parte 2 hardware Inclusão Digital
Aula 2 parte 2 hardware Inclusão DigitalAula 2 parte 2 hardware Inclusão Digital
Aula 2 parte 2 hardware Inclusão DigitalPeslPinguim
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao ArduinoPeslPinguim
 

En vedette (9)

Apresentação
ApresentaçãoApresentação
Apresentação
 
Apresentação1
Apresentação1Apresentação1
Apresentação1
 
Aula 3 parte 2 software Inclusão Digital
Aula 3 parte 2 software Inclusão DigitalAula 3 parte 2 software Inclusão Digital
Aula 3 parte 2 software Inclusão Digital
 
Aula 1 apresentacao
Aula 1 apresentacaoAula 1 apresentacao
Aula 1 apresentacao
 
Aula 3 software Inclusão Digital
Aula 3 software Inclusão DigitalAula 3 software Inclusão Digital
Aula 3 software Inclusão Digital
 
Aula 4 redes Inclusão Digital
Aula 4 redes Inclusão DigitalAula 4 redes Inclusão Digital
Aula 4 redes Inclusão Digital
 
Aula 2 hardware Inclusão Digital
Aula 2 hardware Inclusão DigitalAula 2 hardware Inclusão Digital
Aula 2 hardware Inclusão Digital
 
Aula 2 parte 2 hardware Inclusão Digital
Aula 2 parte 2 hardware Inclusão DigitalAula 2 parte 2 hardware Inclusão Digital
Aula 2 parte 2 hardware Inclusão Digital
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 

Similaire à Modelo NoSQL orientado à documentos com MongoDB

Utilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesUtilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesChristiano Anderson
 
No sql Orientado a documento
No sql Orientado a documentoNo sql Orientado a documento
No sql Orientado a documentoAlex Martins
 
Bancos de dados open source
Bancos de dados open sourceBancos de dados open source
Bancos de dados open sourceRodrigo Aurélio
 
Uma implementação de suporte a
Uma implementação de suporte a Uma implementação de suporte a
Uma implementação de suporte a Rômulo Jales
 
Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7Christiano Anderson
 
MongoDB: um banco de dados orientado a documento
MongoDB: um banco de dados orientado a documentoMongoDB: um banco de dados orientado a documento
MongoDB: um banco de dados orientado a documentoJulio Monteiro
 
SQL Server Heterogêneo: SQL Server + BigData
SQL Server Heterogêneo: SQL Server + BigDataSQL Server Heterogêneo: SQL Server + BigData
SQL Server Heterogêneo: SQL Server + BigDataRodrigo Dornel
 
Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos
Banco de Dados NoSQL - Disciplina: Sistemas DistribuídosBanco de Dados NoSQL - Disciplina: Sistemas Distribuídos
Banco de Dados NoSQL - Disciplina: Sistemas DistribuídosJoão Helis Bernardo
 
Mongodb praquer-usar-uaijugcloudday2014
Mongodb praquer-usar-uaijugcloudday2014Mongodb praquer-usar-uaijugcloudday2014
Mongodb praquer-usar-uaijugcloudday2014Rogerio Fontes
 
MongoDB também no Azure? SIM! - DevOps Summit 2017
MongoDB também no Azure? SIM! - DevOps Summit 2017MongoDB também no Azure? SIM! - DevOps Summit 2017
MongoDB também no Azure? SIM! - DevOps Summit 2017Renato Groff
 
NoSQL na nuvem com o Azure Cosmos DB - MVPConf 2018
NoSQL na nuvem com o Azure Cosmos DB - MVPConf 2018NoSQL na nuvem com o Azure Cosmos DB - MVPConf 2018
NoSQL na nuvem com o Azure Cosmos DB - MVPConf 2018Renato Groff
 
NoSQL, MongoDB e MEAN
NoSQL, MongoDB e MEANNoSQL, MongoDB e MEAN
NoSQL, MongoDB e MEANOsmar Petry
 
Desenvolvimento de WebServices RESTful com NodeJS e MongoDB
Desenvolvimento de WebServices RESTful com NodeJS e MongoDBDesenvolvimento de WebServices RESTful com NodeJS e MongoDB
Desenvolvimento de WebServices RESTful com NodeJS e MongoDBWebSix
 

Similaire à Modelo NoSQL orientado à documentos com MongoDB (20)

Utilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesUtilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentes
 
No sql Orientado a documento
No sql Orientado a documentoNo sql Orientado a documento
No sql Orientado a documento
 
#1 Introdução ao MongoDB
#1   Introdução ao MongoDB#1   Introdução ao MongoDB
#1 Introdução ao MongoDB
 
MongoDB na Campus Party
MongoDB na Campus PartyMongoDB na Campus Party
MongoDB na Campus Party
 
NoSql e NewSql
NoSql e NewSqlNoSql e NewSql
NoSql e NewSql
 
Bancos de dados open source
Bancos de dados open sourceBancos de dados open source
Bancos de dados open source
 
Palestra nosql
Palestra nosqlPalestra nosql
Palestra nosql
 
Uma implementação de suporte a
Uma implementação de suporte a Uma implementação de suporte a
Uma implementação de suporte a
 
Introdução ao NoSQL
Introdução ao NoSQLIntrodução ao NoSQL
Introdução ao NoSQL
 
Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7
 
MongoDB: um banco de dados orientado a documento
MongoDB: um banco de dados orientado a documentoMongoDB: um banco de dados orientado a documento
MongoDB: um banco de dados orientado a documento
 
SQL Server Heterogêneo: SQL Server + BigData
SQL Server Heterogêneo: SQL Server + BigDataSQL Server Heterogêneo: SQL Server + BigData
SQL Server Heterogêneo: SQL Server + BigData
 
Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos
Banco de Dados NoSQL - Disciplina: Sistemas DistribuídosBanco de Dados NoSQL - Disciplina: Sistemas Distribuídos
Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos
 
Mongodb praquer-usar-uaijugcloudday2014
Mongodb praquer-usar-uaijugcloudday2014Mongodb praquer-usar-uaijugcloudday2014
Mongodb praquer-usar-uaijugcloudday2014
 
MongoDB também no Azure? SIM! - DevOps Summit 2017
MongoDB também no Azure? SIM! - DevOps Summit 2017MongoDB também no Azure? SIM! - DevOps Summit 2017
MongoDB também no Azure? SIM! - DevOps Summit 2017
 
NoSQL na nuvem com o Azure Cosmos DB - MVPConf 2018
NoSQL na nuvem com o Azure Cosmos DB - MVPConf 2018NoSQL na nuvem com o Azure Cosmos DB - MVPConf 2018
NoSQL na nuvem com o Azure Cosmos DB - MVPConf 2018
 
NoSQL, MongoDB e MEAN
NoSQL, MongoDB e MEANNoSQL, MongoDB e MEAN
NoSQL, MongoDB e MEAN
 
MongoDB
MongoDBMongoDB
MongoDB
 
Mongo db
Mongo dbMongo db
Mongo db
 
Desenvolvimento de WebServices RESTful com NodeJS e MongoDB
Desenvolvimento de WebServices RESTful com NodeJS e MongoDBDesenvolvimento de WebServices RESTful com NodeJS e MongoDB
Desenvolvimento de WebServices RESTful com NodeJS e MongoDB
 

Plus de PeslPinguim

Aula 5 internet Inclusão Digital
Aula 5 internet Inclusão DigitalAula 5 internet Inclusão Digital
Aula 5 internet Inclusão DigitalPeslPinguim
 
Apresentação1_
Apresentação1_Apresentação1_
Apresentação1_PeslPinguim
 
Curso Básico de Java - Aula 10
Curso Básico de Java - Aula 10Curso Básico de Java - Aula 10
Curso Básico de Java - Aula 10PeslPinguim
 
Curso Básico de Java - Aula 5
Curso Básico de Java - Aula 5Curso Básico de Java - Aula 5
Curso Básico de Java - Aula 5PeslPinguim
 
Curso Básico de Java - Aula 4
Curso Básico de Java - Aula 4Curso Básico de Java - Aula 4
Curso Básico de Java - Aula 4PeslPinguim
 
Curso Básico de Java - Aula 1
Curso Básico de Java - Aula 1Curso Básico de Java - Aula 1
Curso Básico de Java - Aula 1PeslPinguim
 
Curso Básico de Java - Aula 7
Curso Básico de Java - Aula 7Curso Básico de Java - Aula 7
Curso Básico de Java - Aula 7PeslPinguim
 
Curso Básico de Java - Aula 3
Curso Básico de Java - Aula 3Curso Básico de Java - Aula 3
Curso Básico de Java - Aula 3PeslPinguim
 
Curso Básico de Java - Aula 2
Curso Básico de Java - Aula 2Curso Básico de Java - Aula 2
Curso Básico de Java - Aula 2PeslPinguim
 
Curso Básico de Java - Aula 9
Curso Básico de Java - Aula 9Curso Básico de Java - Aula 9
Curso Básico de Java - Aula 9PeslPinguim
 
Curso Básico de Java - Aula 8
Curso Básico de Java - Aula 8 Curso Básico de Java - Aula 8
Curso Básico de Java - Aula 8 PeslPinguim
 
Eletrônica aplicada - interruptor sonoro
Eletrônica aplicada - interruptor sonoroEletrônica aplicada - interruptor sonoro
Eletrônica aplicada - interruptor sonoroPeslPinguim
 
HTML5 - UM GUIA DE REFERÊNCIA PARA DESENVOLVEDORES WEB
HTML5 - UM GUIA DE REFERÊNCIA PARA DESENVOLVEDORES WEBHTML5 - UM GUIA DE REFERÊNCIA PARA DESENVOLVEDORES WEB
HTML5 - UM GUIA DE REFERÊNCIA PARA DESENVOLVEDORES WEBPeslPinguim
 
Alarme Automatico - Eletrônica Aplicada - Aula 2
Alarme Automatico - Eletrônica Aplicada - Aula 2Alarme Automatico - Eletrônica Aplicada - Aula 2
Alarme Automatico - Eletrônica Aplicada - Aula 2PeslPinguim
 
Alarme Automatico - Eletrônica Aplicada - Aula 1
Alarme Automatico - Eletrônica Aplicada - Aula 1Alarme Automatico - Eletrônica Aplicada - Aula 1
Alarme Automatico - Eletrônica Aplicada - Aula 1PeslPinguim
 
Alarme Automatico - Eletrônica Aplicada - Aula 3
Alarme Automatico - Eletrônica Aplicada - Aula 3Alarme Automatico - Eletrônica Aplicada - Aula 3
Alarme Automatico - Eletrônica Aplicada - Aula 3PeslPinguim
 
Aula 04 - Templates e Operators
Aula 04 - Templates e OperatorsAula 04 - Templates e Operators
Aula 04 - Templates e OperatorsPeslPinguim
 
Aula 03 - Classes em C++ ( Parte 2 )
Aula 03 - Classes em C++ ( Parte 2 )Aula 03 - Classes em C++ ( Parte 2 )
Aula 03 - Classes em C++ ( Parte 2 )PeslPinguim
 
Aula 02 - Classes em C++ ( Parte 1 )
Aula 02 - Classes em C++ ( Parte 1 )Aula 02 - Classes em C++ ( Parte 1 )
Aula 02 - Classes em C++ ( Parte 1 )PeslPinguim
 
Aula 01 - Introdução ao C++
Aula 01 - Introdução ao C++Aula 01 - Introdução ao C++
Aula 01 - Introdução ao C++PeslPinguim
 

Plus de PeslPinguim (20)

Aula 5 internet Inclusão Digital
Aula 5 internet Inclusão DigitalAula 5 internet Inclusão Digital
Aula 5 internet Inclusão Digital
 
Apresentação1_
Apresentação1_Apresentação1_
Apresentação1_
 
Curso Básico de Java - Aula 10
Curso Básico de Java - Aula 10Curso Básico de Java - Aula 10
Curso Básico de Java - Aula 10
 
Curso Básico de Java - Aula 5
Curso Básico de Java - Aula 5Curso Básico de Java - Aula 5
Curso Básico de Java - Aula 5
 
Curso Básico de Java - Aula 4
Curso Básico de Java - Aula 4Curso Básico de Java - Aula 4
Curso Básico de Java - Aula 4
 
Curso Básico de Java - Aula 1
Curso Básico de Java - Aula 1Curso Básico de Java - Aula 1
Curso Básico de Java - Aula 1
 
Curso Básico de Java - Aula 7
Curso Básico de Java - Aula 7Curso Básico de Java - Aula 7
Curso Básico de Java - Aula 7
 
Curso Básico de Java - Aula 3
Curso Básico de Java - Aula 3Curso Básico de Java - Aula 3
Curso Básico de Java - Aula 3
 
Curso Básico de Java - Aula 2
Curso Básico de Java - Aula 2Curso Básico de Java - Aula 2
Curso Básico de Java - Aula 2
 
Curso Básico de Java - Aula 9
Curso Básico de Java - Aula 9Curso Básico de Java - Aula 9
Curso Básico de Java - Aula 9
 
Curso Básico de Java - Aula 8
Curso Básico de Java - Aula 8 Curso Básico de Java - Aula 8
Curso Básico de Java - Aula 8
 
Eletrônica aplicada - interruptor sonoro
Eletrônica aplicada - interruptor sonoroEletrônica aplicada - interruptor sonoro
Eletrônica aplicada - interruptor sonoro
 
HTML5 - UM GUIA DE REFERÊNCIA PARA DESENVOLVEDORES WEB
HTML5 - UM GUIA DE REFERÊNCIA PARA DESENVOLVEDORES WEBHTML5 - UM GUIA DE REFERÊNCIA PARA DESENVOLVEDORES WEB
HTML5 - UM GUIA DE REFERÊNCIA PARA DESENVOLVEDORES WEB
 
Alarme Automatico - Eletrônica Aplicada - Aula 2
Alarme Automatico - Eletrônica Aplicada - Aula 2Alarme Automatico - Eletrônica Aplicada - Aula 2
Alarme Automatico - Eletrônica Aplicada - Aula 2
 
Alarme Automatico - Eletrônica Aplicada - Aula 1
Alarme Automatico - Eletrônica Aplicada - Aula 1Alarme Automatico - Eletrônica Aplicada - Aula 1
Alarme Automatico - Eletrônica Aplicada - Aula 1
 
Alarme Automatico - Eletrônica Aplicada - Aula 3
Alarme Automatico - Eletrônica Aplicada - Aula 3Alarme Automatico - Eletrônica Aplicada - Aula 3
Alarme Automatico - Eletrônica Aplicada - Aula 3
 
Aula 04 - Templates e Operators
Aula 04 - Templates e OperatorsAula 04 - Templates e Operators
Aula 04 - Templates e Operators
 
Aula 03 - Classes em C++ ( Parte 2 )
Aula 03 - Classes em C++ ( Parte 2 )Aula 03 - Classes em C++ ( Parte 2 )
Aula 03 - Classes em C++ ( Parte 2 )
 
Aula 02 - Classes em C++ ( Parte 1 )
Aula 02 - Classes em C++ ( Parte 1 )Aula 02 - Classes em C++ ( Parte 1 )
Aula 02 - Classes em C++ ( Parte 1 )
 
Aula 01 - Introdução ao C++
Aula 01 - Introdução ao C++Aula 01 - Introdução ao C++
Aula 01 - Introdução ao C++
 

Modelo NoSQL orientado à documentos com MongoDB

  • 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.
  • 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!!!
  • 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.
  • 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/.