Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
{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 é regr...
Documento
•Instância de Objeto Javascript
• Conjunto de Chave-valor
• Sem métodos, hierarquia de classes, etc.
• CodiWicaç...
Tipos de Dado
•Tipos básicos de dados presentes no JavaScript
• String, Array
• Integer, Double
• Boolean, NULL
• Object
•...
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.ul...
Funcionalidades
Funcionalidades
•Critérios de Pesquisa
• por Campo
• por Intervalo
• por Expressões Regulares
•Índices
• Primários e secun...
Funcionalidades
•Balanceamento de Carga
• Sharding
•Armazenamento de Arquivos
• via GridFS
•Suporte a Agregação
• via MapR...
Funcionalidades
•Execução de JavaScript
• Server-side
• Queries e MapReduce
• Tempo de pesquisa
• Documento
•Coleções limi...
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 Mo...
MongoDB shell version: 1.8
url: test
connecting to: test
type "help" for help
>
> for (var i = 1; i < 5; i++) db.things.sa...
Recuperação de
Documentos
> db.things.find();
{ "_id" : ObjectId("4c220a42f3924d31102bd856"), "x" : 4, "j" : 1 }
{ "_id" :...
Estruturas de Iteração
> db.things.find({j : 1}).forEach(printjson);
{ "_id" : ObjectId("4c220a42f3924d31102bd856"), "x" :...
Remoção de Documentos
•Método remove()
• Operadores de ModiWicação
• Atomicidade
• Execução Server-side
• Operações Bitwis...
Atualização de
Documentos
•Substituição
• Comando update(critério, novoObjeto, upsert, multi)
• Operação Custosa
•Operador...
Operadores de
ModiCicação
•Caractere $
• Sozinho
• Índice no vetor de registros resultante da query
> t.find()
{ "_id" : O...
Operadores de
ModiCicação
•Incremento
• $inc : {‘likes’ : n}
• Incrementa n vezes o campo likes
•Setter
• $set : {‘likes’ ...
Operadores de
ModiCicação
•addToSet
• $addToSet:{a:{[‘c1’:‘v1’, ‘cN:‘vN’]}
•Each
• {$each : [1, 2, 3, 4, 5]}
•Pode ser usa...
Operadores de
ModiCicação
•Pull
• $pull:{pessoas : {nome : “José”}}
•Remove todas ocorrências com nome José
•PullAll
• $pu...
Operadores de
ModiCicação
•Bitwise
• Só pode ser usado com inteiros
• $bit:{bitmap : {red : {and:5} }}
• $bit:{bitmap : {g...
Operadores de
ModiCicação
•Utilização com Upserts
• Diferentes operadores em um mesmo update não podem
referenciar o mesmo...
MapReduce
•Conceito básico
• Opera sobre um conjunto de dados
• Pipeline distribuído
• Análogo ao GROUP BY no SQL
•Vantage...
MapReduce
•Exemplo
• Agregar todos os “likes” nos comentários de um usuário
•Modelo de Dados
• Coleção de Comentários
Mong...
Função Map
•Mapear os dados
• Mapear por Nome
• Agregar em vetor
• Contagem e número de Likes
> function funcaoMap() {
emi...
Função Reduce
•Recebe retorno da função Map
• Chamada para cada chave retornada pela função Map
• Cada chave tem um array ...
Referência
http://www.mongodb.org/
Download do MongoDB
Documentação oWicial
Fórum de discussão
Apresentação do
por
Derek Willian Stavis
Upcoming SlideShare
Loading in …5
×

Introdução ao MongoDB em 30 slides

964 views

Published on

Um apanhado geral sobre as funcionalidades do MongoDB.

Published in: Technology

Introdução ao MongoDB em 30 slides

  1. 1. {name: “mongo”, type: “db”}
  2. 2. Fundação
  3. 3. Sistema MongoDB •Conjunto de Banco de Dados •Banco de Dados • Um conjunto de Coleções
  4. 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. 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. 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. 7. Campo •Chave • Um nome para o campo, representado como String •Valor • Valor referente a chave { nome: ‘Mongo’, tipo: ‘DB’ }
  8. 8. Metodologia de Query •Orientada a Documentos {nome: {primeiro: 'José', ultimo: 'Junior'}} {nome.ultimo: 'Junior'} {nome.ultimo: /^D/} {tags: {$in: ['armazenamento', 'DBMS']}}
  9. 9. Funcionalidades
  10. 10. Funcionalidades •Critérios de Pesquisa • por Campo • por Intervalo • por Expressões Regulares •Índices • Primários e secundários
  11. 11. Funcionalidades •Balanceamento de Carga • Sharding •Armazenamento de Arquivos • via GridFS •Suporte a Agregação • via MapReduce
  12. 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. 13. Interagindo com o banco de dados O Mongo Shell
  14. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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; }
  30. 30. Referência http://www.mongodb.org/ Download do MongoDB Documentação oWicial Fórum de discussão
  31. 31. Apresentação do por Derek Willian Stavis

×