{ name: mongo, type: db, authors: [ joãopedro castro...

50
{ "name": "Mongo", "type": "DB", "authors": [ "João Pedro Castro", "Cristina Ciferri" ] }

Upload: doannga

Post on 07-Jun-2018

239 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

{ "name": "Mongo", "type": "DB", "authors": [ "João Pedro Castro", "Cristina Ciferri" ] }

Page 2: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

Roteiro

1 O MongoDB e sua participação no mercado;

2 Conceitos iniciais: execução, coleções, documentos e comandos básicos;

3 Relacionamentos: conversão de um MER para um modelo de documentos;

4 Métodos avançados de recuperação de informações no MongoDB.

Page 3: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

Roteiro

1 O MongoDB e sua participação no mercado;

2 Conceitos iniciais: execução, coleções, documentos e comandos básicos;

3 Relacionamentos: conversão de um MER para um modelo de documentos;

4 Métodos avançados de recuperação de informações no MongoDB.

Page 4: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

Introdução: O que é o MongoDB?

u O MongoDB é um SGBD NOSQL open-source e orientado adocumentos.

u Alguns de seus diferenciais são:

u Alto desempenho: documentos embutidos e índices atuando sobreeles;

u Rica linguagem de consulta: permite operações CRUD, agregaçõesde dados, busca por texto e consultas geoespaciais;

u Alta disponibilidade: replica set;

u Escalabilidade horizontal: sharding.

{ "fonte": "https://docs.mongodb.com/manual/introduction/" }

Page 5: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

O MongoDB é realmente utilizado?

u Com a popularidade e a consolidação da linguagem SQLno mercado, este tipo de questionamento é comum.

u DB-ENGINES RANKING: ranking de popularidade dos SGBDmais utilizados, atualizado mensalmente.

u Pode ser acessado em: https://db-engines.com/en/ranking;

u Considera uma série de critérios para obter uma pontuação capazde classificar os SGBD.

{ "fonte": "https://db-engines.com/en/ranking_definition" }

Page 6: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

Critérios do DB-ENGINES

u Menções do SGBD em mecanismos de busca;

u Interesse geral no SGBD (Google Trends);

u Frequência de discussões técnicas sobre o SGBD (StackOverflow e DBA Stack Exchange);

u Número de ofertas de emprego relacionadas ao SGBD;

u Número de perfis em redes profissionais onde o SGBD émencionado (Linkedin e Upwork);

u Relevância em redes sociais (Twitter).

{ "fonte": "https://db-engines.com/en/ranking_definition" }

Page 7: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

O Ranking do DB-ENGINES

{ "fonte": "https://db-engines.com/en/ranking" }

Page 8: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

O MongoDB no Mercado

{ "fonte": "https://www.vagas.com.br/vagas/v1500721/programador-javascript-html-nodejs" }

Page 9: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

O MongoDB no Mercado

{ "fonte": "https://www.vagas.com.br/vagas/v1510244/arquiteto-tecnico-scrum-master-sp" }

Page 10: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

O MongoDB no Mercado

{ "fonte": "https://www.vagas.com.br/vagas/v1501921/consultor-especialista" }

Page 11: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

O MongoDB no Mercado

{ "fonte": "http://www.catho.com.br/vagas/analista-desenvolvedor-magento/11659583/" }

Page 12: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

O MongoDB no Mercado

{ "fonte": "http://www.catho.com.br/vagas/engenheiro-de-software/11769216/" }

Page 13: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

Roteiro

1 O MongoDB e sua participação no mercado;

2 Conceitos iniciais: execução, coleções, documentos e comandos básicos;

3 Relacionamentos: conversão de um MER para um modelo de documentos;

4 Métodos avançados de recuperação de informações no MongoDB.

Page 14: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

Executando o MongoDB

u O MongoDB possui versões para as plataformas MacOS,Linux e Windows.

u Maiores detalhes sobre os procedimentos necessários para realizara instalação deste SGBD podem ser encontrados em:https://docs.mongodb.com/manual/administration/install-community/.

u Após instalado, é necessário rodar o servidor do SGBD,localizado no executável mongod.

u Com o servidor rodando, o shell do MongoDB é acessado através doexecutável mongo.

u No MacOS ou no Linux, basta digitar o nome dos executáveis noterminal.

Page 15: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

Criando um Banco de Dados

u O MongoDB abstrai diversos comandos DDL.

u Estruturas são criadas conforme estas se tornam necessárias.

u Para criar um banco de dados, basta você usar o comandopara acessar um banco que ainda não existe.

u Assim que um registro for inserido neste banco, ele será criado epersistido automaticamente.

SQL

MONGO

Page 16: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

Coleções e Documentos (Insert)

u Como em outros modelos orientado a documentos, oMongoDB organiza os dados em coleções de documentos.

u Cada documento possui um atributo identificador (_id) e umaquantidade qualquer de outros atributos.

u Não é necessário (Mas é possível) especificar o ID dosdocumentos!

u Não é necessário especificar o tipo dos atributos!

u Documentos diferentes que fazem parte de uma mesma coleçãopodem ter atributos diferentes!

Page 17: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

Coleções e Documentos (Insert)

u Para criar uma coleção, basta inserir um documentonela.

u Existem duas operações de inserção no MongoDB:

u Inserção de um único documento: insertOne.

u Recebe como parâmetro um único documento.

u Inserção de múltiplos documentos de uma só vez:insertMany.

u Recebe como parâmetro um vetor de documentos.

Page 18: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

Coleções e Documentos (Insert)

SQL

Page 19: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

Coleções e Documentos (Insert)

MONGO

Page 20: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

Coleções e Documentos (Select)

u O MongoDB possui dois métodos principais para retornarinformações de documentos.

u O método find() retorna um ponteiro para todos os documentosque atendem aos critérios especificados.

u O método findOne() retorna um único documento que atende aoscritérios especificados.

u Caso exista mais de um documento atendendo aos critérios, o métodofindOne() retorna apenas o primeiro.

SQL

MONGO

Page 21: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

Coleções e Documentos (Select)

u Ambos os métodos find() e findOne() permitemespecificar, da mesma forma, critérios de seleção eprojeção para o resultado.

Projeção Seleção

ProjeçãoSeleção

SQL

MONGO

Page 22: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

Coleções e Documentos (Update)

u O MongoDB possui três métodos para atualização de dadosem um documento.

u Os médotos updateOne() e updateMany() localizam odocumento segundo os critérios especificados e fazem asalterações descritas.

u Diferença: quantidade de documentos afetada.

u Enquanto o updateOne() afeta somente um documento queatenda os critérios, o updateMany() afeta todos.

u O método replaceOne() localiza um único documento queatenda aos critérios especificados e o substitui por um novodocumento.

u O atributo _id do documento permanece o mesmo.

Page 23: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

Coleções e Documentos (Update)

SQL

Seleção

Alteração

Page 24: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

Coleções e Documentos (Update)

SeleçãoAlteração

Seleção Alteração

Seleção AlteraçãoMONGO

Page 25: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

Coleções e Documentos (Delete)

u O MongoDB possui dois métodos para a remoção dedocumentos.

u Os médotos deleteOne() e deleteMany() localizam odocumento segundo os critérios especificados e oremovem da base de dados.

u Diferença: quantidade de documentos afetada.

u Enquanto o deleteOne() afeta somente um documento que atendaos critérios, o deleteMany() afeta todos.

Page 26: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

Coleções e Documentos (Delete)

SQL

MONGO

Seleção

Seleção

Seleção

Page 27: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

Roteiro

1 O MongoDB e sua participação no mercado;

2 Conceitos iniciais: execução, coleções, documentos e comandos básicos;

3 Relacionamentos: conversão de um MER para um modelo de documentos;

4 Métodos avançados de recuperação de informações no MongoDB.

Page 28: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

Relacionamentos no MongoDB

u O MongoDB não implementa integridade referencial enem operações de junção!

u Logo, não existe o conceito de chave estrangeira paradocumentos.

u Existem duas maneiras de se expressar relacionamentosentre documentos no MongoDB.

u Referências entre documentos: é possível guardar o _id de umdocumento como um atributo em outro documento.

u Não é o mesmo que guardar uma chave estrangeira!

u Documentos embutidos: o MongoDB permite guardar umdocumento inteiro como um atributo em um documento (Sub-Documentos).

Page 29: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

Modelo Entidade-Relacionamento

MODELO ENTIDADE-RELACIONAMENTO

Page 30: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

Modelo Relacional

MODELO RELACIONAL

Page 31: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

Modelo de Documentos (Referências)

MODELO DE DOCUMENTOS (REFERÊNCIAS)

Page 32: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

Modelo de Documentos (Embutidos)MODELO DE DOCUMENTOS

(REFERÊNCIAS/EMBUTIDOS)

Page 33: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

Roteiro

1 O MongoDB e sua participação no mercado;

2 Conceitos iniciais: execução, coleções, documentos e comandos básicos;

3 Relacionamentos: conversão de um MER para um modelo de documentos;

4 Métodos avançados de recuperação de informações no MongoDB.

Page 34: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

Consultas Complexas em MongoDB

u O MongoDB possui diversos métodos e operadores quepermitem a realização de consultas complexas em seusdados.

u Estes serão apresentados por meio de consultas escritas para osmodelos de dados apresentados na seção anterior.

u Frameworks como Map-Reduce não serão abordados nestaapresentação.

u As consultas apresentadas nesta seção foram retiradas de:

u CASTRO, João Pedro de Carvalho. Uma Análise de Técnicas deRecuperacão de Informacões em um SGBD NoSQL. Monografia(Bacharelado em Sistemas de Informacão) – Universidade Federalde Itajubá, Itajubá, 2015.

Page 35: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

Consulta 1: Operador LIKE

u Consulta em SQL:

u Consulta no MongoDB (Modelo com Referências):

u Consulta no MongoDB (Modelo com Documentos Embutidos):

Page 36: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

Consulta 2: Operador OR

u Consulta em SQL:

u Consulta no MongoDB (Modelo de Referências):

u Consulta no MongoDB (Modelo com Documentos Embutidos):

Page 37: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

Consulta 3: Operador IN

u Consulta em SQL:

u Consulta no MongoDB (Modelo de Referências):

u Consulta no MongoDB (Modelo com Documentos Embutidos):

Page 38: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

Consulta 4: Operadores >=/<=/!=

u Consulta em SQL:

u Consulta no MongoDB (Modelo de Referências):

u Consulta no MongoDB (Modelo com Documentos Embutidos):

Page 39: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

Consulta 5: Operadores >=/<=/NOT IN

u Consulta em SQL:

u Consulta no MongoDB (Modelo de Referências):

u Consulta no MongoDB (Modelo com Documentos Embutidos):

Page 40: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

Consulta 6: Função Agregada COUNT

u Consulta em SQL:

u Consulta no MongoDB (Modelo de Referências):

u Consulta no MongoDB (Modelo com Documentos Embutidos):

Page 41: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

Consulta 7: Função Agregada AVG

u Consulta em SQL:

u Consulta no MongoDB (Modelo de Referências):

Page 42: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

Consulta 7: Função Agregada AVG

u Consulta em SQL:

u Consulta no MongoDB (Modelo com Documentos Embutidos):

Page 43: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

Consulta 8: Função Agregada SUM

u Consulta em SQL:

u Consulta no MongoDB (Modelo de Referências):

Page 44: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

Consulta 8: Função Agregada SUM

u Consulta em SQL:

u Consulta no MongoDB (Modelo com Documentos Embutidos):

Page 45: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

Consulta 9: Operação de Junção

u Consulta em SQL:

u Consulta no MongoDB (Modelo de Referências):

Page 46: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

Consulta 9: Operação de Junção

u Consulta em SQL:

u Consulta no MongoDB (Modelo com Documentos Embutidos):

Page 47: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

Consulta 10: …

u Consulta em SQL:

Page 48: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

Consulta 10: …

u Consulta no MongoDB (Modelo de Referências):

Page 49: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

Consulta 10: …

u Consulta no MongoDB (Modelo com Documentos Embutidos):

Page 50: { name: Mongo, type: DB, authors: [ JoãoPedro Castro ...wiki.icmc.usp.br/images/3/30/SCC0542012017mongoDB.pdf · Roteiro 1 O MongoDB e sua participação no mercado; 2 Conceitosiniciais:

Consulta 10: Possível Solução

u Consulta no MongoDB (Modelo com Duplicatas, não mostrado na apresentação):