Modelando aplicação em documento - MongoDB

6.910 visualizações

Publicada em

0 comentários
8 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
6.910
No SlideShare
0
A partir de incorporações
0
Número de incorporações
6
Ações
Compartilhamentos
0
Downloads
133
Comentários
0
Gostaram
8
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Modelando aplicação em documento - MongoDB

  1. 1. Modelando aplicação em documento
  2. 2. Thiago Avelino @avelino0 www.avelino.usthiagoavelinoster@gmail.c om
  3. 3. O que é MongoDB?• Banco de dados não relacional;• Orientado a documentos;• Alta Performance;• Escalavel;• Schema Aberto• Open Source
  4. 4. Quem utiliza?• Github;• Foursquare;• bit.ly;• Zynga;• T Dispatch;• Apontador;• Globo.com;• Entre outros...
  5. 5. Onde usar?• web 2.0• Migrations• Flexibilidade• Cache
  6. 6. Drivers• C, C++• Erlang• Java• JavaScript• Python• Ruby• Relação completa em: http://www.mongodb.org/display/DOCS/Drivers
  7. 7. Modelo de documento {‘nome’: ‘Thiago Avelino’, ‘empresa’: ‘Mochii’, ‘pais’: ‘Londres’}
  8. 8. 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
  9. 9. MigrationsÉ possóvel fazer mudança dinamica em um documento
  10. 10. Migrations É possóvel fazer mudança dinamica em um documento{‘nome’: ‘ThiagoAvelino’,‘empresa’: ‘Mochii’,‘local’: ‘Londres’}
  11. 11. Migrations É possóvel fazer mudança dinamica em um documento{‘nome’: ‘ThiagoAvelino’,‘empresa’: ‘Mochii’,‘local’: ‘Londres’}
  12. 12. 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’}
  13. 13. 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
  14. 14. Agregadoresdb.cadastro.insert({‘local’:‘Berlin’})db.cadastro.insert({‘local’:‘Londres’})db.cadastro.insert({‘local’:‘Brasil’})db.cadastro.insert({‘local’:‘Berlin’})
  15. 15. 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’)
  16. 16. Agregadoresdb.cadastro.insert({‘local’:‘Berlin’})db.cadastro.insert({‘local’:‘Londres’})db.cadastro.insert({‘local’:‘Brasil’}) db.cadastro.distinct(‘locadb.cadastro.insert({‘local’: l’)‘Berlin’})
  17. 17. 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’]
  18. 18. Map/ReduceUtilizado para criar funções dentro do MongoDB Escrito em JavaScript
  19. 19. Map/Reduce Exemplo Salas = [_id, nome]Reservas = [_id, sala_id, dat a] Descobrir o numero da reserva https://gist.github.com/2782117
  20. 20. 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;}
  21. 21. Map/Reduce Exemplo db.reservas.mapReduce(map, reduce, {"out": "resultado"})db.resultado.find({}){ "_id": ObjectId("4fbd6e69700f6e1266000002"),"value": 1}{ "_id": ObjectId("4fbd6e69700f6e1266000004"),"value": 2}
  22. 22. Índice O Conceito é similar a bancos relacionais, exemplo MySQL db.colecao.ensureIndex({nome: 1})db.colecao.ensureIndex({‘endereco.cep’: 1})
  23. 23. ÍndiceLista dos os índice criado: db.colecao.getIndex ()
  24. 24. Í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
  25. 25. 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
  26. 26. 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
  27. 27. GridFS HTTPAplicaçã File o system
  28. 28. GridFS HTTP HTTP GridFSAplicaçã Aplicaçã o o
  29. 29. Replica Sets Aplicaçã oNode #1Node #2 Replica
  30. 30. Replica Sets Aplicaçã oNode #1Node #2Node #3 Replica
  31. 31. Replica Sets Aplicaçã oNode #1Node #2Node #3 Replica
  32. 32. Sharding a-d e-t u-zNode #1 Node #2 Node #3
  33. 33. Modelar aplicação
  34. 34. Casos práticosQuase tudo no mesmodocumento
  35. 35. Casos práticosQuase tudo no mesmodocumento 4MB
  36. 36. Casos práticos Dividindo aplicação em CollectionsNão é fácil controlar muitas ObjID
  37. 37. Casos práticos Como estamos hoje?
  38. 38. Cloud
  39. 39. Cloud
  40. 40. Suporte ComercialMarcello Baquero - marcello@10gen.com http://www.10gen.com/support
  41. 41. Obrigado!Perguntas? Thiago Avelino @avelino0 www.avelino.us thiagoavelinoster@gmail.c

×