SlideShare ist ein Scribd-Unternehmen logo
1 von 31
Downloaden Sie, um offline zu lesen
{name: “mongo”, type: “db”}
Fundação
Sistema MongoDB
•Conjunto de Banco de Dados
•Banco de Dados
• Um conjunto de Coleções
Coleção
•Agrupamento de Documentos
• Análogo a Tabela no Modelo Relacional
• Usualmente com a mesma estrutura
• Não é regra. Coleções são livres de Esquema!
•Armazenados no formato BSON
• Representação binária de um JSON
Documento
•Instância de Objeto Javascript
• Conjunto de Chave-valor
• Sem métodos, hierarquia de classes, etc.
• CodiWicação Binária (BSON)
• Tamanho máximo de 16Mb
Tipos de Dado
•Tipos básicos de dados presentes no JavaScript
• String, Array
• Integer, Double
• Boolean, NULL
• Object
•Tipos especiais do MongoDB
• ObjectID
• BinaryData
• Regular Expression
• Code
Campo
•Chave
• Um nome para o campo, representado como String
•Valor
• Valor referente a chave
{ nome: ‘Mongo’, tipo: ‘DB’ }
Metodologia de Query
•Orientada a Documentos
{nome: {primeiro: 'José', ultimo: 'Junior'}}
{nome.ultimo: 'Junior'}
{nome.ultimo: /^D/}
{tags: {$in: ['armazenamento', 'DBMS']}}
Funcionalidades
Funcionalidades
•Critérios de Pesquisa
• por Campo
• por Intervalo
• por Expressões Regulares
•Índices
• Primários e secundários
Funcionalidades
•Balanceamento de Carga
• Sharding
•Armazenamento de Arquivos
• via GridFS
•Suporte a Agregação
• via MapReduce
Funcionalidades
•Execução de JavaScript
• Server-side
• Queries e MapReduce
• Tempo de pesquisa
• Documento
•Coleções limitadas
• Tamanho Wixo
• Respeita ordem de inserção
• Lista circular
Interagindo com o banco de dados
O Mongo Shell
Mongo Shell
•Método de Interação direta com o Banco
• Similar ao Shell MySQL
•JavaScript
• Linguagem padrão da shell do Mongo
$ cd mongo-db
$ bin/mongo
MongoDB shell version: 1.8
url: test
connecting to: test
type "help" for help
>
MongoDB shell version: 1.8
url: test
connecting to: test
type "help" for help
>
> for (var i = 1; i < 5; i++) db.things.save({x : 4, y : j});
> db.things.find();
{ "_id" : ObjectId("4c220a42f3924d31102bd856"), "x" : 4, "j" : 1 }
{ "_id" : ObjectId("4c220a42f3924d31102bd857"), "x" : 4, "j" : 2 }
{ "_id" : ObjectId("4c220a42f3924d31102bd858"), "x" : 4, "j" : 3 }
>
Inserção de Documentos
•Objeto db.nome_da_coleção
• Criação lazy das Coleções
• Método save()
Recuperação de
Documentos
> db.things.find();
{ "_id" : ObjectId("4c220a42f3924d31102bd856"), "x" : 4, "j" : 1 }
{ "_id" : ObjectId("4c220a42f3924d31102bd857"), "x" : 4, "j" : 2 }
{ "_id" : ObjectId("4c220a42f3924d31102bd858"), "x" : 4, "j" : 3 }
> var cursor = db.things.find();
> while(cursor.hasNext()) printjson(cursor.next());
{ "_id" : ObjectId("4c220a42f3924d31102bd856"), "x" : 4, "j" : 1 }
{ "_id" : ObjectId("4c220a42f3924d31102bd857"), "x" : 4, "j" : 2 }
{ "_id" : ObjectId("4c220a42f3924d31102bd858"), "x" : 4, "j" : 3 }
•Método find()
• Objeto cursor
• Estruturas de iteração
Estruturas de Iteração
> db.things.find({j : 1}).forEach(printjson);
{ "_id" : ObjectId("4c220a42f3924d31102bd856"), "x" : 4, "j" : 1 }
> db.things.save({x : 10, j : 1});
> db.things.find({j : 1}).forEach(printjson);
{ "_id" : ObjectId("4c220a42f3924d31102bd856"), "x" : 4, "j" : 1 }
{ "_id" : ObjectId("4c220a42f3924d31102bd870"), "x" : 10, "j" : 1 }
> db.things.find({j : 1}, {j:true}).forEach(printjson);
{ "_id" : ObjectId("4c220a42f3924d31102bd856"), "j" : 1 }
{ "_id" : ObjectId("4c220a42f3924d31102bd870"), "j" : 1 }
> db.things.findOne({j : 1});
{ "_id" : ObjectId("4c220a42f3924d31102bd856"), "x" : 4, "j" : 1 }
> db.things.find().limit(2);
{ "_id" : ObjectId("4c220a42f3924d31102bd856"), "x" : 4, "j" : 1 }
{ "_id" : ObjectId("4c220a42f3924d31102bd857"), "x" : 4, "j" : 2 }
Remoção de Documentos
•Método remove()
• Operadores de ModiWicação
• Atomicidade
• Execução Server-side
• Operações Bitwise
MongoDB shell version: 1.8
url: test
connecting to: test
type "help" for help
>
> db.alunos.remove({}); // remove todos os documentos da coleção
>
> db.alunos.remove({n:1}); // remove todos documentos com n = 1
>
> db.alunos.remove( { nota : { $lt : 7 }, $atomic : true } )
Atualização de
Documentos
•Substituição
• Comando update(critério, novoObjeto, upsert, multi)
• Operação Custosa
•Operadores de ModiWicação
• Atomicidade
• Execução Server-side
• Operações Bitwise
Operadores de
ModiCicação
•Caractere $
• Sozinho
• Índice no vetor de registros resultante da query
> t.find()
{ "_id" : ObjectId("4b97e62bf1d8c7152c9ccb74"), "titulo" : "ABC",
"comentarios" : [ { "por" : "joão", "likes" : 3 }, { "por" :
"maria", "likes" : 7 } ] }
> t.update( {'comentarios.por':'joão'}, {$inc:{'comentários.
$.likes':1}}, false, true )
> t.find()
{ "_id" : ObjectId("4b97e62bf1d8c7152c9ccb74"), "titulo" : "ABC",
"comentarios" : [ { "por" : "joão", "likes" : 4 }, { "por" :
"maria", "likes" : 7 } ] }
Operadores de
ModiCicação
•Incremento
• $inc : {‘likes’ : n}
• Incrementa n vezes o campo likes
•Setter
• $set : {‘likes’ : m}
•Seta o campo likes para m
•Push
• $push : {‘comments’:{‘nome’:‘Derek’}
• Adiciona elemento no vetor comments
• Cria vetor caso não existir, adicionando o elemento
Operadores de
ModiCicação
•addToSet
• $addToSet:{a:{[‘c1’:‘v1’, ‘cN:‘vN’]}
•Each
• {$each : [1, 2, 3, 4, 5]}
•Pode ser usado em conjunto com o $addToSet
•Pop
• $pop : {campo: 1 }
• Remove o último elemento de um vetor
• $pop : {campo: 1 }
• Remove o primeiro elemento de um vetor
Operadores de
ModiCicação
•Pull
• $pull:{pessoas : {nome : “José”}}
•Remove todas ocorrências com nome José
•PullAll
• $pull:{cursos : {dia : [15, 20] } }
•Remove todas ocorrências com dia 15 e 20
•Rename
• $rename : { horas : horas_extra }
• Renomeia o campo hora para horas_extra
Operadores de
ModiCicação
•Bitwise
• Só pode ser usado com inteiros
• $bit:{bitmap : {red : {and:5} }}
• $bit:{bitmap : {green : {or:20} }}
• $bit:{bitmap : {green : {and:5, or:20} }}
•Operador de atomicidade
• Escritas de campos são feitas atômicamente
• Atualizações com multi não são atômicas
• Usar o operador $atomic para garantir atomicidade
• db.t.update({nota: {$gt: 60}, $atomic: true}, {$set: {aprv: true}}, false,
true);
Operadores de
ModiCicação
•Utilização com Upserts
• Diferentes operadores em um mesmo update não podem
referenciar o mesmo campo
•Não podem referenciar o campo _id
MapReduce
•Conceito básico
• Opera sobre um conjunto de dados
• Pipeline distribuído
• Análogo ao GROUP BY no SQL
•Vantagem
• Paralelismo
• Sharding
• Extensibilidade
MapReduce
•Exemplo
• Agregar todos os “likes” nos comentários de um usuário
•Modelo de Dados
• Coleção de Comentários
MongoDB shell version: 2.0
url: test
connecting to: test
type "help" for help
>
> var doc = { usuario : “João”,
likes : 20,
comentario : “Teste” };
>
> db.comentarios.save(doc);
Função Map
•Mapear os dados
• Mapear por Nome
• Agregar em vetor
• Contagem e número de Likes
> function funcaoMap() {
emit(this.username,
{contagem : 1,
likes : this.likes});
}
Função Reduce
•Recebe retorno da função Map
• Chamada para cada chave retornada pela função Map
• Cada chave tem um array de objetos relacionado a ela
• Deve ser compatível com o objeto emitido pela Map
> function funcaoReduce(key, value) {
var result = {count: 0, likes: 0};
values.forEach(function(value) {
result.count += value.count;
result.likes += value.likes;
});
return result;
}
Referência
http://www.mongodb.org/
Download do MongoDB
Documentação oWicial
Fórum de discussão
Apresentação do
por
Derek Willian Stavis

Weitere ähnliche Inhalte

Was ist angesagt?

Top 10 Mistakes When Migrating From Oracle to PostgreSQL
Top 10 Mistakes When Migrating From Oracle to PostgreSQLTop 10 Mistakes When Migrating From Oracle to PostgreSQL
Top 10 Mistakes When Migrating From Oracle to PostgreSQLJim Mlodgenski
 
Migrating Your Oracle Database to PostgreSQL - AWS Online Tech Talks
Migrating Your Oracle Database to PostgreSQL - AWS Online Tech TalksMigrating Your Oracle Database to PostgreSQL - AWS Online Tech Talks
Migrating Your Oracle Database to PostgreSQL - AWS Online Tech TalksAmazon Web Services
 
Database migration from Sybase ASE to PostgreSQL @2013.pgconf.eu
Database migration from Sybase ASE to PostgreSQL @2013.pgconf.euDatabase migration from Sybase ASE to PostgreSQL @2013.pgconf.eu
Database migration from Sybase ASE to PostgreSQL @2013.pgconf.eualdaschwede80
 
Oracle to Postgres Migration - part 1
Oracle to Postgres Migration - part 1Oracle to Postgres Migration - part 1
Oracle to Postgres Migration - part 1PgTraining
 
Aula 1 - Introdução ao Conteúdo de Banco de Dados
Aula 1 - Introdução ao Conteúdo de Banco de DadosAula 1 - Introdução ao Conteúdo de Banco de Dados
Aula 1 - Introdução ao Conteúdo de Banco de DadosHenrique Nunweiler
 
Introduction VAUUM, Freezing, XID wraparound
Introduction VAUUM, Freezing, XID wraparoundIntroduction VAUUM, Freezing, XID wraparound
Introduction VAUUM, Freezing, XID wraparoundMasahiko Sawada
 
Sistemas de Gestão de Bases de Dados e de Gestão de Ficheiros
Sistemas de Gestão de Bases de Dados e de Gestão de FicheirosSistemas de Gestão de Bases de Dados e de Gestão de Ficheiros
Sistemas de Gestão de Bases de Dados e de Gestão de FicheirosMariana Hiyori
 
Oracle Gen 2 Exadata Cloud@Customer:サービス概要のご紹介 [2021年7月版]
Oracle Gen 2 Exadata Cloud@Customer:サービス概要のご紹介 [2021年7月版]Oracle Gen 2 Exadata Cloud@Customer:サービス概要のご紹介 [2021年7月版]
Oracle Gen 2 Exadata Cloud@Customer:サービス概要のご紹介 [2021年7月版]オラクルエンジニア通信
 
Apresentação HTML e CSS
Apresentação HTML e CSSApresentação HTML e CSS
Apresentação HTML e CSSledsifes
 
Apresentação Final de Banco de Dados
Apresentação Final de Banco de DadosApresentação Final de Banco de Dados
Apresentação Final de Banco de Dadossamlobo
 
BD I - Aula 06 B - Parte 2 - Teorico Formas Normais
BD I - Aula 06 B - Parte 2 - Teorico Formas NormaisBD I - Aula 06 B - Parte 2 - Teorico Formas Normais
BD I - Aula 06 B - Parte 2 - Teorico Formas NormaisRodrigo Kiyoshi Saito
 
An overview of reference architectures for Postgres
An overview of reference architectures for PostgresAn overview of reference architectures for Postgres
An overview of reference architectures for PostgresEDB
 
Couchdb + Membase = Couchbase
Couchdb + Membase = CouchbaseCouchdb + Membase = Couchbase
Couchdb + Membase = Couchbaseiammutex
 

Was ist angesagt? (20)

Top 10 Mistakes When Migrating From Oracle to PostgreSQL
Top 10 Mistakes When Migrating From Oracle to PostgreSQLTop 10 Mistakes When Migrating From Oracle to PostgreSQL
Top 10 Mistakes When Migrating From Oracle to PostgreSQL
 
Migrating Your Oracle Database to PostgreSQL - AWS Online Tech Talks
Migrating Your Oracle Database to PostgreSQL - AWS Online Tech TalksMigrating Your Oracle Database to PostgreSQL - AWS Online Tech Talks
Migrating Your Oracle Database to PostgreSQL - AWS Online Tech Talks
 
Introdução ao SQL
Introdução ao SQLIntrodução ao SQL
Introdução ao SQL
 
Database migration from Sybase ASE to PostgreSQL @2013.pgconf.eu
Database migration from Sybase ASE to PostgreSQL @2013.pgconf.euDatabase migration from Sybase ASE to PostgreSQL @2013.pgconf.eu
Database migration from Sybase ASE to PostgreSQL @2013.pgconf.eu
 
Oracle to Postgres Migration - part 1
Oracle to Postgres Migration - part 1Oracle to Postgres Migration - part 1
Oracle to Postgres Migration - part 1
 
Aula 1 - Introdução ao Conteúdo de Banco de Dados
Aula 1 - Introdução ao Conteúdo de Banco de DadosAula 1 - Introdução ao Conteúdo de Banco de Dados
Aula 1 - Introdução ao Conteúdo de Banco de Dados
 
JPA - Java Persistence API
JPA - Java Persistence APIJPA - Java Persistence API
JPA - Java Persistence API
 
Introduction VAUUM, Freezing, XID wraparound
Introduction VAUUM, Freezing, XID wraparoundIntroduction VAUUM, Freezing, XID wraparound
Introduction VAUUM, Freezing, XID wraparound
 
Sistemas de Gestão de Bases de Dados e de Gestão de Ficheiros
Sistemas de Gestão de Bases de Dados e de Gestão de FicheirosSistemas de Gestão de Bases de Dados e de Gestão de Ficheiros
Sistemas de Gestão de Bases de Dados e de Gestão de Ficheiros
 
DDS Best Practices
DDS Best PracticesDDS Best Practices
DDS Best Practices
 
Oracle Gen 2 Exadata Cloud@Customer:サービス概要のご紹介 [2021年7月版]
Oracle Gen 2 Exadata Cloud@Customer:サービス概要のご紹介 [2021年7月版]Oracle Gen 2 Exadata Cloud@Customer:サービス概要のご紹介 [2021年7月版]
Oracle Gen 2 Exadata Cloud@Customer:サービス概要のご紹介 [2021年7月版]
 
Banco De Dados
Banco De DadosBanco De Dados
Banco De Dados
 
Oracle GoldenGate導入Tips
Oracle GoldenGate導入TipsOracle GoldenGate導入Tips
Oracle GoldenGate導入Tips
 
Apresentação HTML e CSS
Apresentação HTML e CSSApresentação HTML e CSS
Apresentação HTML e CSS
 
Banco de dados
Banco de dadosBanco de dados
Banco de dados
 
Apresentação Final de Banco de Dados
Apresentação Final de Banco de DadosApresentação Final de Banco de Dados
Apresentação Final de Banco de Dados
 
BD I - Aula 06 B - Parte 2 - Teorico Formas Normais
BD I - Aula 06 B - Parte 2 - Teorico Formas NormaisBD I - Aula 06 B - Parte 2 - Teorico Formas Normais
BD I - Aula 06 B - Parte 2 - Teorico Formas Normais
 
An overview of reference architectures for Postgres
An overview of reference architectures for PostgresAn overview of reference architectures for Postgres
An overview of reference architectures for Postgres
 
Couchdb + Membase = Couchbase
Couchdb + Membase = CouchbaseCouchdb + Membase = Couchbase
Couchdb + Membase = Couchbase
 
Fundamentos de arquitetura Web
Fundamentos de arquitetura WebFundamentos de arquitetura Web
Fundamentos de arquitetura Web
 

Ähnlich wie Introdução ao MongoDB em 30 slides

acm, chapter, development, events, iscte, portugal, opensource, softwareApres...
acm, chapter, development, events, iscte, portugal, opensource, softwareApres...acm, chapter, development, events, iscte, portugal, opensource, softwareApres...
acm, chapter, development, events, iscte, portugal, opensource, softwareApres...ISCTE-IUL ACM Student Chapter
 
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
 
Mini-Curso de MongoDB
Mini-Curso de MongoDBMini-Curso de MongoDB
Mini-Curso de MongoDBBrunno Gomes
 
MongoDB - Wagner Bonfiglio - Navegg
MongoDB - Wagner Bonfiglio - NaveggMongoDB - Wagner Bonfiglio - Navegg
MongoDB - Wagner Bonfiglio - NaveggFelipe Guimarães
 
MongoDB - Workshop Buscapé
MongoDB - Workshop BuscapéMongoDB - Workshop Buscapé
MongoDB - Workshop BuscapéWagner Bonfiglio
 
Introdução ao nosql (mini curso)
Introdução ao nosql (mini curso)Introdução ao nosql (mini curso)
Introdução ao nosql (mini curso)Junior Fernandes
 
Apresentação Projeto Final Graduação UFF
Apresentação Projeto Final Graduação UFFApresentação Projeto Final Graduação UFF
Apresentação Projeto Final Graduação UFFBianca Caruso da Paixão
 
Ruby on rails gds 2011
Ruby on rails   gds 2011Ruby on rails   gds 2011
Ruby on rails gds 2011JogosUnisinos
 
Document store e Mongodb
Document store e MongodbDocument store e Mongodb
Document store e MongodbAline Ferreira
 
Persistência de Dados no SQLite com Room
Persistência de Dados no SQLite com RoomPersistência de Dados no SQLite com Room
Persistência de Dados no SQLite com RoomNelson Glauber Leal
 
Javascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POOJavascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POOWesley Lemos
 
MongoDB - Apresentação
MongoDB - ApresentaçãoMongoDB - Apresentação
MongoDB - ApresentaçãoTerra / Neo
 
jQuery na Prática - Cauê Fajoli
jQuery na Prática - Cauê FajolijQuery na Prática - Cauê Fajoli
jQuery na Prática - Cauê FajoliCaue Fajoli
 

Ähnlich wie Introdução ao MongoDB em 30 slides (20)

acm, chapter, development, events, iscte, portugal, opensource, softwareApres...
acm, chapter, development, events, iscte, portugal, opensource, softwareApres...acm, chapter, development, events, iscte, portugal, opensource, softwareApres...
acm, chapter, development, events, iscte, portugal, opensource, softwareApres...
 
NoSQL e MongoDB
NoSQL e MongoDBNoSQL e MongoDB
NoSQL e MongoDB
 
NoSQL e MongoDB - ETEC
NoSQL e MongoDB - ETECNoSQL e MongoDB - ETEC
NoSQL e MongoDB - ETEC
 
Minicurso mongo db
Minicurso mongo dbMinicurso mongo db
Minicurso mongo db
 
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
 
Mini-Curso de MongoDB
Mini-Curso de MongoDBMini-Curso de MongoDB
Mini-Curso de MongoDB
 
Mongodb workshop cinlug
Mongodb workshop cinlugMongodb workshop cinlug
Mongodb workshop cinlug
 
MongoDB - Wagner Bonfiglio - Navegg
MongoDB - Wagner Bonfiglio - NaveggMongoDB - Wagner Bonfiglio - Navegg
MongoDB - Wagner Bonfiglio - Navegg
 
MongoDB - Workshop Buscapé
MongoDB - Workshop BuscapéMongoDB - Workshop Buscapé
MongoDB - Workshop Buscapé
 
Introdução ao nosql (mini curso)
Introdução ao nosql (mini curso)Introdução ao nosql (mini curso)
Introdução ao nosql (mini curso)
 
Hibernate-consultas
Hibernate-consultasHibernate-consultas
Hibernate-consultas
 
Apresentação Projeto Final Graduação UFF
Apresentação Projeto Final Graduação UFFApresentação Projeto Final Graduação UFF
Apresentação Projeto Final Graduação UFF
 
Ruby on rails gds 2011
Ruby on rails   gds 2011Ruby on rails   gds 2011
Ruby on rails gds 2011
 
Document store e Mongodb
Document store e MongodbDocument store e Mongodb
Document store e Mongodb
 
Node.js: serious business
Node.js: serious businessNode.js: serious business
Node.js: serious business
 
Persistência de Dados no SQLite com Room
Persistência de Dados no SQLite com RoomPersistência de Dados no SQLite com Room
Persistência de Dados no SQLite com Room
 
Javascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POOJavascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POO
 
MongoDB - Apresentação
MongoDB - ApresentaçãoMongoDB - Apresentação
MongoDB - Apresentação
 
jQuery na Prática - Cauê Fajoli
jQuery na Prática - Cauê FajolijQuery na Prática - Cauê Fajoli
jQuery na Prática - Cauê Fajoli
 
Mongo db slides
Mongo db slidesMongo db slides
Mongo db slides
 

Mehr von Derek Willian Stavis

Mehr von Derek Willian Stavis (8)

React performance
React performanceReact performance
React performance
 
JavaScript Event Loop
JavaScript Event LoopJavaScript Event Loop
JavaScript Event Loop
 
Node.js cluster
Node.js clusterNode.js cluster
Node.js cluster
 
Packing it all: JavaScript module bundling from 2000 to now
Packing it all: JavaScript module bundling from 2000 to nowPacking it all: JavaScript module bundling from 2000 to now
Packing it all: JavaScript module bundling from 2000 to now
 
Ramda, a functional JavaScript library
Ramda, a functional JavaScript libraryRamda, a functional JavaScript library
Ramda, a functional JavaScript library
 
JavaScript Promises
JavaScript PromisesJavaScript Promises
JavaScript Promises
 
Forget Grunt and Gulp! Webpack and NPM rule them all!
Forget Grunt and Gulp! Webpack and NPM rule them all!Forget Grunt and Gulp! Webpack and NPM rule them all!
Forget Grunt and Gulp! Webpack and NPM rule them all!
 
React for Beginners
React for BeginnersReact for Beginners
React for Beginners
 

Kürzlich hochgeladen

ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfNatalia Granato
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 

Kürzlich hochgeladen (6)

ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 

Introdução ao MongoDB em 30 slides

  • 3. Sistema MongoDB •Conjunto de Banco de Dados •Banco de Dados • Um conjunto de Coleções
  • 4. Coleção •Agrupamento de Documentos • Análogo a Tabela no Modelo Relacional • Usualmente com a mesma estrutura • Não é regra. Coleções são livres de Esquema! •Armazenados no formato BSON • Representação binária de um JSON
  • 5. Documento •Instância de Objeto Javascript • Conjunto de Chave-valor • Sem métodos, hierarquia de classes, etc. • CodiWicação Binária (BSON) • Tamanho máximo de 16Mb
  • 6. Tipos de Dado •Tipos básicos de dados presentes no JavaScript • String, Array • Integer, Double • Boolean, NULL • Object •Tipos especiais do MongoDB • ObjectID • BinaryData • Regular Expression • Code
  • 7. Campo •Chave • Um nome para o campo, representado como String •Valor • Valor referente a chave { nome: ‘Mongo’, tipo: ‘DB’ }
  • 8. Metodologia de Query •Orientada a Documentos {nome: {primeiro: 'José', ultimo: 'Junior'}} {nome.ultimo: 'Junior'} {nome.ultimo: /^D/} {tags: {$in: ['armazenamento', 'DBMS']}}
  • 10. Funcionalidades •Critérios de Pesquisa • por Campo • por Intervalo • por Expressões Regulares •Índices • Primários e secundários
  • 11. Funcionalidades •Balanceamento de Carga • Sharding •Armazenamento de Arquivos • via GridFS •Suporte a Agregação • via MapReduce
  • 12. Funcionalidades •Execução de JavaScript • Server-side • Queries e MapReduce • Tempo de pesquisa • Documento •Coleções limitadas • Tamanho Wixo • Respeita ordem de inserção • Lista circular
  • 13. Interagindo com o banco de dados O Mongo Shell
  • 14. Mongo Shell •Método de Interação direta com o Banco • Similar ao Shell MySQL •JavaScript • Linguagem padrão da shell do Mongo $ cd mongo-db $ bin/mongo MongoDB shell version: 1.8 url: test connecting to: test type "help" for help >
  • 15. MongoDB shell version: 1.8 url: test connecting to: test type "help" for help > > for (var i = 1; i < 5; i++) db.things.save({x : 4, y : j}); > db.things.find(); { "_id" : ObjectId("4c220a42f3924d31102bd856"), "x" : 4, "j" : 1 } { "_id" : ObjectId("4c220a42f3924d31102bd857"), "x" : 4, "j" : 2 } { "_id" : ObjectId("4c220a42f3924d31102bd858"), "x" : 4, "j" : 3 } > Inserção de Documentos •Objeto db.nome_da_coleção • Criação lazy das Coleções • Método save()
  • 16. Recuperação de Documentos > db.things.find(); { "_id" : ObjectId("4c220a42f3924d31102bd856"), "x" : 4, "j" : 1 } { "_id" : ObjectId("4c220a42f3924d31102bd857"), "x" : 4, "j" : 2 } { "_id" : ObjectId("4c220a42f3924d31102bd858"), "x" : 4, "j" : 3 } > var cursor = db.things.find(); > while(cursor.hasNext()) printjson(cursor.next()); { "_id" : ObjectId("4c220a42f3924d31102bd856"), "x" : 4, "j" : 1 } { "_id" : ObjectId("4c220a42f3924d31102bd857"), "x" : 4, "j" : 2 } { "_id" : ObjectId("4c220a42f3924d31102bd858"), "x" : 4, "j" : 3 } •Método find() • Objeto cursor • Estruturas de iteração
  • 17. Estruturas de Iteração > db.things.find({j : 1}).forEach(printjson); { "_id" : ObjectId("4c220a42f3924d31102bd856"), "x" : 4, "j" : 1 } > db.things.save({x : 10, j : 1}); > db.things.find({j : 1}).forEach(printjson); { "_id" : ObjectId("4c220a42f3924d31102bd856"), "x" : 4, "j" : 1 } { "_id" : ObjectId("4c220a42f3924d31102bd870"), "x" : 10, "j" : 1 } > db.things.find({j : 1}, {j:true}).forEach(printjson); { "_id" : ObjectId("4c220a42f3924d31102bd856"), "j" : 1 } { "_id" : ObjectId("4c220a42f3924d31102bd870"), "j" : 1 } > db.things.findOne({j : 1}); { "_id" : ObjectId("4c220a42f3924d31102bd856"), "x" : 4, "j" : 1 } > db.things.find().limit(2); { "_id" : ObjectId("4c220a42f3924d31102bd856"), "x" : 4, "j" : 1 } { "_id" : ObjectId("4c220a42f3924d31102bd857"), "x" : 4, "j" : 2 }
  • 18. Remoção de Documentos •Método remove() • Operadores de ModiWicação • Atomicidade • Execução Server-side • Operações Bitwise MongoDB shell version: 1.8 url: test connecting to: test type "help" for help > > db.alunos.remove({}); // remove todos os documentos da coleção > > db.alunos.remove({n:1}); // remove todos documentos com n = 1 > > db.alunos.remove( { nota : { $lt : 7 }, $atomic : true } )
  • 19. Atualização de Documentos •Substituição • Comando update(critério, novoObjeto, upsert, multi) • Operação Custosa •Operadores de ModiWicação • Atomicidade • Execução Server-side • Operações Bitwise
  • 20. Operadores de ModiCicação •Caractere $ • Sozinho • Índice no vetor de registros resultante da query > t.find() { "_id" : ObjectId("4b97e62bf1d8c7152c9ccb74"), "titulo" : "ABC", "comentarios" : [ { "por" : "joão", "likes" : 3 }, { "por" : "maria", "likes" : 7 } ] } > t.update( {'comentarios.por':'joão'}, {$inc:{'comentários. $.likes':1}}, false, true ) > t.find() { "_id" : ObjectId("4b97e62bf1d8c7152c9ccb74"), "titulo" : "ABC", "comentarios" : [ { "por" : "joão", "likes" : 4 }, { "por" : "maria", "likes" : 7 } ] }
  • 21. Operadores de ModiCicação •Incremento • $inc : {‘likes’ : n} • Incrementa n vezes o campo likes •Setter • $set : {‘likes’ : m} •Seta o campo likes para m •Push • $push : {‘comments’:{‘nome’:‘Derek’} • Adiciona elemento no vetor comments • Cria vetor caso não existir, adicionando o elemento
  • 22. Operadores de ModiCicação •addToSet • $addToSet:{a:{[‘c1’:‘v1’, ‘cN:‘vN’]} •Each • {$each : [1, 2, 3, 4, 5]} •Pode ser usado em conjunto com o $addToSet •Pop • $pop : {campo: 1 } • Remove o último elemento de um vetor • $pop : {campo: 1 } • Remove o primeiro elemento de um vetor
  • 23. Operadores de ModiCicação •Pull • $pull:{pessoas : {nome : “José”}} •Remove todas ocorrências com nome José •PullAll • $pull:{cursos : {dia : [15, 20] } } •Remove todas ocorrências com dia 15 e 20 •Rename • $rename : { horas : horas_extra } • Renomeia o campo hora para horas_extra
  • 24. Operadores de ModiCicação •Bitwise • Só pode ser usado com inteiros • $bit:{bitmap : {red : {and:5} }} • $bit:{bitmap : {green : {or:20} }} • $bit:{bitmap : {green : {and:5, or:20} }} •Operador de atomicidade • Escritas de campos são feitas atômicamente • Atualizações com multi não são atômicas • Usar o operador $atomic para garantir atomicidade • db.t.update({nota: {$gt: 60}, $atomic: true}, {$set: {aprv: true}}, false, true);
  • 25. Operadores de ModiCicação •Utilização com Upserts • Diferentes operadores em um mesmo update não podem referenciar o mesmo campo •Não podem referenciar o campo _id
  • 26. MapReduce •Conceito básico • Opera sobre um conjunto de dados • Pipeline distribuído • Análogo ao GROUP BY no SQL •Vantagem • Paralelismo • Sharding • Extensibilidade
  • 27. MapReduce •Exemplo • Agregar todos os “likes” nos comentários de um usuário •Modelo de Dados • Coleção de Comentários MongoDB shell version: 2.0 url: test connecting to: test type "help" for help > > var doc = { usuario : “João”, likes : 20, comentario : “Teste” }; > > db.comentarios.save(doc);
  • 28. Função Map •Mapear os dados • Mapear por Nome • Agregar em vetor • Contagem e número de Likes > function funcaoMap() { emit(this.username, {contagem : 1, likes : this.likes}); }
  • 29. Função Reduce •Recebe retorno da função Map • Chamada para cada chave retornada pela função Map • Cada chave tem um array de objetos relacionado a ela • Deve ser compatível com o objeto emitido pela Map > function funcaoReduce(key, value) { var result = {count: 0, likes: 0}; values.forEach(function(value) { result.count += value.count; result.likes += value.likes; }); return result; }