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

MongoDB Sao Paulo 2012: Como usei MongoDB no me...

mongodb
July 13, 2012
1.6k

MongoDB Sao Paulo 2012: Como usei MongoDB no meu projeto de graduação

Jefferson Queiroz Venerando, CTO, Bras Sun
O produto é um sistema integrado de gestão empresarial para agências de publicidade e propaganda. Foi desenvolvido usando Ruby on Rails e MongoDB, o banco não-relacional que escolhi. Usei um banco de dados sem esquemas porque tive dificuldades em modelar o banco com relacionamentos, e MongoDB resolveu todos os problemas que surgiram durante o caminho. A modelagem foi fácil e o acesso aos dados é simples e sem complicações. Essa palestra vai mostrar alguns paradigmas e problemas comuns que surgiram durante o início do desenvolvimento e como MongoDB foi a melhor solução. Também mostrará os problemas que alguém pode ter ao começar a usar NoSQL e como quebrar o gelo e abraçar a solução com bons resultados.

mongodb

July 13, 2012
Tweet

Transcript

  1. VOCÊ APRENDE BASICAMENTE... uma forma de programar. uma forma de

    modelar seu banco. uma forma de documentar.
  2. Então você volta para o que aprendeu. } Consegue identificar

    alguns paradigmas criados até chegar aqui?
  3. muito trabalho para compensar isso não havia um bom software

    Eu trabalhava em uma agência de publicidade
  4. por que não resolver o problema? muito trabalho para compensar

    isso não havia um bom software Eu trabalhava em uma agência de publicidade
  5. PORQUE FOI DIFÍCIL #1 requisitos NÃO são totalmente definidos no

    início... …eles mudam com o desenvolvimento.
  6. SEM ESQUEMAS represente os dados como realmente são; sem migrações

    = mais tempo desenvolvendo; uma consulta retorna tudo;
  7. DOCUMENTOS INCORPORADOS Ei, Dawg, ouvi que você gosta de documentos

    então coloquei um documento no seu documento pra que você tenha vários documentos dentro do documento.
  8. DOCUMENTOS INCORPORADOS Ei, Dawg, ouvi que você gosta de documentos

    então coloquei um documento no seu documento pra que você tenha vários documentos dentro do documento. PUTZ! MEMES TRADUZIDOS SÃO HORRÍVEIS
  9. MÃO NA MASSA #1 // representação de um job {

    "_id" : ObjectId( "4fa969cef8955b304e000056" ), "campanha" : "Promoção de férias sup. Thiago", "cliente_id" : ObjectId( "4f271132f8955b177a000019" ), "data_entrada" : Date( 1337040000000 ), "data_entrega" : Date( 1337040000000 ), "func_nome" : "Jefferson Queiroz", "func_usuario" : "jefferson", "funcionario_id" : ObjectId( "4f271132f8955b177a000004" ), "numero" : 4, "status" : "produção", "titulo" : "Férias legais", "updated_at" : Date( 1336502734000 ), "verba" : "4500.0" }
  10. MÃO NA MASSA #1 // representação de um job {

    "_id" : ObjectId( "4fa969cef8955b304e000056" ), "campanha" : "Promoção de férias sup. Thiago", "cliente_id" : ObjectId( "4f271132f8955b177a000019" ), "data_entrada" : Date( 1337040000000 ), "data_entrega" : Date( 1337040000000 ), "func_nome" : "Jefferson Queiroz", "func_usuario" : "jefferson", "funcionario_id" : ObjectId( "4f271132f8955b177a000004" ), "numero" : 4, "status" : "produção", "titulo" : "Férias legais", "updated_at" : Date( 1336502734000 ), "verba" : "4500.0" }
  11. MÃO NA MASSA #2 // inserir cliente e telefones >

    db.clientes.insert({ nome: 'Jefferson Queiroz Venerando', cidade: 'Iturama', telefones: [ numero: '34 5687-1432', op: 'TIM'}, numero: '34 3442-4321', op: 'Vivo'} ] })
  12. { "_id" : ObjectId( "4f2c0bec740e950417000038" ), "created_at" : Date( 1328286700000

    ), "desconto_cliente" : 0, "formato" : "40x50", "func_nome" : "Jefferson", "func_usuario" : "jefferson", "funcionario_id" : ObjectId( "4f271132f8955b177a000001" ), "job_id" : ObjectId( "4f2acb2d740e950417000017" ), "servico_id" : ObjectId( "4f271133f8955b177a00002e" ), "status" : "criação", "titulo" : "Outdoor", "updated_at" : Date( 1334175800000 ), "valor_fornecedores" : [ { "_id" : ObjectId( "4f457739f8955b5420000001" ), "fornecedor_id" : ObjectId( "4f271132f8955b177a00001a" ), "valor" : "321.0" }, { "_id" : ObjectId( "4f457739f8955b5420000002" ), "fornecedor_id" : ObjectId( "4f271132f8955b177a00001b" ), "valor" : "123.0" } ], "vlr_com_desconto" : "50.0", "vlr_fornecedores" : "444.0", "vlr_servico" : "50.0", "vlr_total" : "494.0" }
  13. { "_id" : ObjectId( "4f2c0bec740e950417000038" ), "created_at" : Date( 1328286700000

    ), "desconto_cliente" : 0, "formato" : "40x50", "func_nome" : "Jefferson", "func_usuario" : "jefferson", "funcionario_id" : ObjectId( "4f271132f8955b177a000001" ), "job_id" : ObjectId( "4f2acb2d740e950417000017" ), "servico_id" : ObjectId( "4f271133f8955b177a00002e" ), "status" : "criação", "titulo" : "Outdoor", "updated_at" : Date( 1334175800000 ), "valor_fornecedores" : [ { "_id" : ObjectId( "4f457739f8955b5420000001" ), "fornecedor_id" : ObjectId( "4f271132f8955b177a00001a" ), "valor" : "321.0" }, { "_id" : ObjectId( "4f457739f8955b5420000002" ), "fornecedor_id" : ObjectId( "4f271132f8955b177a00001b" ), "valor" : "123.0" } ], "vlr_com_desconto" : "50.0", "vlr_fornecedores" : "444.0", "vlr_servico" : "50.0", "vlr_total" : "494.0" }
  14. DOCUMENTOS Trabalhe com os dados da forma que eles são

    REVISÃO Desenvolvimento é rápido Consistência é sua responsabilidade