MongoDB na Ingresse.com - TDC 2014

  • View
    368

  • Download
    0

Embed Size (px)

DESCRIPTION

Case de sucesso usando MongoDB na Ingresse.com - TDC 2014

Text of MongoDB na Ingresse.com - TDC 2014

  • 1. Globalcode Open4education MongoDB na Ingresse.com Kelly Costa Desenvolvedora PHP e Modelagem dos Dados
  • 2. Globalcode Open4education Kelly Costa Manaus - AM Desenvolvedora PHP 9 anos de experincia em projetos web Secretaria Municipal de Sade de Manaus Desenvolvimento de Software Modelagem dos dados Auxiliar a equipe de desenvolvimento e testes a maximizar o uso e desempenho do banco de dados MongoDB na Ingresse.com.
  • 3. Globalcode Open4education A misso da Ingresse facilitar a compra e venda de ingressos online para qualquer tipo de evento.
  • 4. Globalcode Open4education
  • 5. Globalcode Open4education
  • 6. Globalcode Open4education
  • 7. Globalcode Open4education
  • 8. Globalcode Open4education Nem todos os usurios que navegam no site https://www.ingresse.com realizam a compra naquele momento, muitos buscam informaes sobre os eventos, como data, local, valor do ingresso, exigindo um acesso rpido a grandes quantidades de dados.
  • 9. Globalcode Open4education aumento exponencial no volume de dados uso extensivo de joins acesso rpido a grandes quantidades de dados
  • 10. Globalcode Open4education Por que o MongoDB? formato JSON, facilidade para o programador rpida recuperao dos dados diferentes recursos de consulta, sem transaes e joins, possui estruturas mais simples os objetos esto inseridos em um nico documento. atua sem um esquema previamente definido
  • 11. Globalcode Open4education O que foi fcil? Nada!
  • 12. Globalcode Open4education Operaes de agregaes (Aggregation) permitem que usurios processem todos os registros de dados atravs de operaes similares aos comandos SQL count (*) e grupo by e retorna o resultado calculado. timo quando usado em consultas pontuais quando recorrentes e concorrentes, essas consultas demandam muito esforo custos na alocao de memria e desempenho.
  • 13. Globalcode Open4education
  • 14. Globalcode Open4education No caso da Ingresse, todas as condies utilizadas na busca de eventos so trabalhadas e armazenadas em um array. Algumas consultas utilizavam regex, o que exigia muito mais do servidor. Isso tornava a aplicao pouco flexvel e nada performtica.
  • 15. Globalcode Open4education
  • 16. Globalcode Open4education Visando obter maior desempenho e simplicidade na busca de eventos, optamos por eliminar o aggregation e fazer tudo via queries.
  • 17. Globalcode Open4education Pra isso, fizemos uso dos ndices, zerando a necessidade de processos complementares. A consulta feita dentro do prprio ndice, possibilitando concorrncia e recorrncia sem maiores problemas, resultando em consultas mais rpidas.
  • 18. Globalcode Open4education db.event.ensureIndex({'title': 'text', 'description': 'text', 'tags': 'text', 'link': 'text'}, {'default_language':'portuguese', name:"busca01"} O ndice busca01 cancelou o uso do regex.
  • 19. Globalcode Open4education full text search: db.event.find({$text: {$search: "marcelo"}},{'title': true, 'description': true, 'tags': true, link: true}) .pretty() Alterado na verso 2.6: MongoDB
  • 20. Globalcode Open4education A ordenao padro utilizada do evento mais prximo da data atual para o mais futuro. Pra isso criamos o ndice db.event.ensureIndex({eventDate.dateTime: 1})
  • 21. Globalcode Open4education Ganho relevante na performance, saindo de 100 usurios por minuto para 2.000 usurios/minuto em testes de laboratrio Consulta mais simples. Agilidade Flexibilidade
  • 22. Globalcode Open4education Shopping cart Backup Controle de verso da coleo Legado
  • 23. Globalcode Open4education Perguntas?
  • 24. Globalcode Open4education Email: kelly.cristina83@gmail.com GitHub: kelly.costa@ingresse.com