• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Modelando aplicação em documento - MongoDB
 

Modelando aplicação em documento - MongoDB

on

  • 3,646 views

 

Statistics

Views

Total Views
3,646
Views on SlideShare
3,644
Embed Views
2

Actions

Likes
5
Downloads
45
Comments
0

1 Embed 2

http://www.linkedin.com 2

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

CC Attribution License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Modelando aplicação em documento - MongoDB Modelando aplicação em documento - MongoDB Presentation Transcript

    • Modelando aplicação em documento
    • Thiago Avelino @avelino0 www.avelino.usthiagoavelinoster@gmail.c om
    • O que é MongoDB?• Banco de dados não relacional;• Orientado a documentos;• Alta Performance;• Escalavel;• Schema Aberto• Open Source
    • Quem utiliza?• Github;• Foursquare;• bit.ly;• Zynga;• T Dispatch;• Apontador;• Globo.com;• Entre outros...
    • Onde usar?• web 2.0• Migrations• Flexibilidade• Cache
    • Drivers• C, C++• Erlang• Java• JavaScript• Python• Ruby• Relação completa em: http://www.mongodb.org/display/DOCS/Drivers
    • Modelo de documento {‘nome’: ‘Thiago Avelino’, ‘empresa’: ‘Mochii’, ‘pais’: ‘Londres’}
    • Modelo de documento {‘nome’: ‘Thiago Avelino’, ‘empresa’: ‘Mochii’, ‘pais’: ‘Londres’} Sim é um JSON. Fácil de trabalhar com esse modelo de dados na maioria das linguagens de programação
    • MigrationsÉ possóvel fazer mudança dinamica em um documento
    • Migrations É possóvel fazer mudança dinamica em um documento{‘nome’: ‘ThiagoAvelino’,‘empresa’: ‘Mochii’,‘local’: ‘Londres’}
    • Migrations É possóvel fazer mudança dinamica em um documento{‘nome’: ‘ThiagoAvelino’,‘empresa’: ‘Mochii’,‘local’: ‘Londres’}
    • Migrations É possóvel fazer mudança dinamica em um documento{‘nome’: ‘Thiago {‘nome’: ‘ThiagoAvelino’, Avelino’,‘empresa’: ‘Mochii’, ‘cargo’: ‘engenheiro de‘local’: ‘Londres’} software’, ‘empresa’: ‘Mochii’, ‘local’: ‘Londres’}
    • Migrations É possóvel fazer mudança dinamica em um documento{‘nome’: ‘Thiago {‘nome’: ‘ThiagoAvelino’, Avelino’,‘empresa’: ‘Mochii’, ‘cargo’: ‘engenheiro de‘local’: ‘Londres’} software’, ‘empresa’: ‘Mochii’, ‘local’: ‘Londres’} Adicionado mais um campo sem mexer em modelagem
    • Agregadoresdb.cadastro.insert({‘local’:‘Berlin’})db.cadastro.insert({‘local’:‘Londres’})db.cadastro.insert({‘local’:‘Brasil’})db.cadastro.insert({‘local’:‘Berlin’})
    • Agregadoresdb.cadastro.insert({‘local’:‘Berlin’})db.cadastro.insert({‘local’:‘Londres’})db.cadastro.insert({‘local’:‘Brasil’})db.cadastro.insert({‘local’: db.cadastro.distinct(‘loca‘Berlin’}) l’)
    • Agregadoresdb.cadastro.insert({‘local’:‘Berlin’})db.cadastro.insert({‘local’:‘Londres’})db.cadastro.insert({‘local’:‘Brasil’}) db.cadastro.distinct(‘locadb.cadastro.insert({‘local’: l’)‘Berlin’})
    • Agregadoresdb.cadastro.insert({‘local’:‘Berlin’})db.cadastro.insert({‘local’:‘Londres’})db.cadastro.insert({‘local’:‘Brasil’}) db.cadastro.distinct(‘locadb.cadastro.insert({‘local’: l’)‘Berlin’}) [‘Berlin’, ‘Londres’, ‘Bras il’]
    • Map/ReduceUtilizado para criar funções dentro do MongoDB Escrito em JavaScript
    • Map/Reduce Exemplo Salas = [_id, nome]Reservas = [_id, sala_id, dat a] Descobrir o numero da reserva https://gist.github.com/2782117
    • map = function () { emit(this.sala_id, [1]);}reduce = function (sala, values) { var sum = 0; if (values) { for (var i = 0; i < values.length; i++) { sum += 1; } } return sum;}
    • Map/Reduce Exemplo db.reservas.mapReduce(map, reduce, {"out": "resultado"})db.resultado.find({}){ "_id": ObjectId("4fbd6e69700f6e1266000002"),"value": 1}{ "_id": ObjectId("4fbd6e69700f6e1266000004"),"value": 2}
    • Índice O Conceito é similar a bancos relacionais, exemplo MySQL db.colecao.ensureIndex({nome: 1})db.colecao.ensureIndex({‘endereco.cep’: 1})
    • ÍndiceLista dos os índice criado: db.colecao.getIndex ()
    • Índice Índice unico db.colecao.ensureIndex({nome: 1, sobrenome: 1}, unique: true});db.colecao.insert({nome:jane,sobrenome:doe}); // okdb.colecao.insert({nome:jane,sobrenome:doe}); // dupkeyerrordb.colecao.insert({nome:jane,sobrenome:smith});// ok
    • GridFS Armazenamento de arquivos binários dentro do MongoDB (Até 4MB) Maior controle de permissão de acesso;http://www.mongodb.org/display/DOCS/GridFS
    • GridFS Armazenamento de arquivos binários dentro do MongoDB (Até 4MB) Maior controle de permissão de acesso;http://www.mongodb.org/display/DOCS/GridFS
    • GridFS HTTPAplicaçã File o system
    • GridFS HTTP HTTP GridFSAplicaçã Aplicaçã o o
    • Replica Sets Aplicaçã oNode #1Node #2 Replica
    • Replica Sets Aplicaçã oNode #1Node #2Node #3 Replica
    • Replica Sets Aplicaçã oNode #1Node #2Node #3 Replica
    • Sharding a-d e-t u-zNode #1 Node #2 Node #3
    • Modelar aplicação
    • Casos práticosQuase tudo no mesmodocumento
    • Casos práticosQuase tudo no mesmodocumento 4MB
    • Casos práticos Dividindo aplicação em CollectionsNão é fácil controlar muitas ObjID
    • Casos práticos Como estamos hoje?
    • Cloud
    • Cloud
    • Suporte ComercialMarcello Baquero - marcello@10gen.com http://www.10gen.com/support
    • Obrigado!Perguntas? Thiago Avelino @avelino0 www.avelino.us thiagoavelinoster@gmail.c