Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Modelando aplicação em documento - MongoDB

Avelino
June 03, 2012

Modelando aplicação em documento - MongoDB

A grande dificuldade muitos desenvolvedores que esta começando trabalhar com NoSQL é como modelar a estrutura do banco de dados ou como organizar os dados a ser salvo. Essa palestra aborda exatamente esse ponto, onde mostro na pratica alguns caso de uso.

Avelino

June 03, 2012
Tweet

More Decks by Avelino

Other Decks in Technology

Transcript

  1. O que é MongoDB? • Banco de dados não relacional;

    • Orientado a documentos; • Alta Performance; • Escalavel; • Schema Aberto • Open Source Tuesday, October 15, 13
  2. Quem utiliza? • Github; • Foursquare; • bit.ly; • Zynga;

    • T Dispatch; • Apontador; • Globo.com; • Entre outros... Tuesday, October 15, 13
  3. Drivers • C, C++ • Erlang • Java • JavaScript

    • Python • Ruby • Relação completa em: http://www.mongodb.org/display/DOCS/ Drivers Tuesday, October 15, 13
  4. 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 Tuesday, October 15, 13
  5. Migrations {‘nome’: ‘Thiago Avelino’, ‘empresa’: ‘Mochii’, ‘local’: ‘Londres’} É possóvel

    fazer mudança dinamica em um documento {‘nome’: ‘Thiago Avelino’, ‘cargo’: ‘engenheiro de software’, ‘empresa’: ‘Mochii’, ‘local’: ‘Londres’} Tuesday, October 15, 13
  6. Migrations {‘nome’: ‘Thiago Avelino’, ‘empresa’: ‘Mochii’, ‘local’: ‘Londres’} É possóvel

    fazer mudança dinamica em um documento {‘nome’: ‘Thiago Avelino’, ‘cargo’: ‘engenheiro de software’, ‘empresa’: ‘Mochii’, ‘local’: ‘Londres’} Adicionado mais um campo sem mexer em modelagem Tuesday, October 15, 13
  7. Map/Reduce Exemplo [_id, nome] Salas = [_id, sala_id, data] Reservas

    = Descobrir o numero da reserva https://gist.github.com/2782117 Tuesday, October 15, 13
  8. 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; } Tuesday, October 15, 13
  9. Map/Reduce Exemplo db.reservas.mapReduce(map, reduce, {"out": "resultado"}) db.resultado.find({}) { "_id": ObjectId("4fbd6e69700f6e1266000002"),

    "value": 1} { "_id": ObjectId("4fbd6e69700f6e1266000004"), "value": 2} Tuesday, October 15, 13
  10. Índice O Conceito é similar a bancos relacionais, exemplo MySQL

    db.colecao.ensureIndex({nome: 1}) db.colecao.ensureIndex({‘endereco.cep’: 1}) Tuesday, October 15, 13
  11. Índice Índice unico db.colecao.ensureIndex({nome: 1, sobrenome: 1}, unique: true}); db.colecao.insert({nome:'jane',sobrenome:'doe'});

    // ok db.colecao.insert({nome:'jane',sobrenome:'doe'}); // dup key errordb.colecao.insert({nome:'jane',sobrenome:'smith'}); // ok Tuesday, October 15, 13
  12. 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 Tuesday, October 15, 13
  13. 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 Tuesday, October 15, 13