MongoDB na Ingresse.com - TDC 2014

703 visualizações

Publicada em

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

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
703
No SlideShare
0
A partir de incorporações
0
Número de incorporações
7
Ações
Compartilhamentos
0
Downloads
20
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

MongoDB na Ingresse.com - TDC 2014

  1. 1. Globalcode – Open4education MongoDB na Ingresse.com Kelly Costa Desenvolvedora PHP e Modelagem dos Dados
  2. 2. Globalcode – Open4education Kelly Costa Manaus - AM Desenvolvedora PHP 9 anos de experiência em projetos web Secretaria Municipal de Saúde 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. 3. Globalcode – Open4education A missão da Ingresse é facilitar a compra e venda de ingressos online para qualquer tipo de evento.
  4. 4. Globalcode – Open4education
  5. 5. Globalcode – Open4education
  6. 6. Globalcode – Open4education
  7. 7. Globalcode – Open4education
  8. 8. Globalcode – Open4education Nem todos os usuários que navegam no site https://www.ingresse.com realizam a compra naquele momento, muitos buscam informações sobre os eventos, como data, local, valor do ingresso, exigindo um acesso rápido a grandes quantidades de dados.
  9. 9. Globalcode – Open4education aumento exponencial no volume de dados uso extensivo de joins acesso rápido a grandes quantidades de dados
  10. 10. Globalcode – Open4education Por que o MongoDB? formato JSON, facilidade para o programador rápida recuperação dos dados diferentes recursos de consulta, sem transações e joins, possui estruturas mais simples os objetos estão inseridos em um único documento. atua sem um esquema previamente definido
  11. 11. Globalcode – Open4education O que foi fácil? Nada!
  12. 12. Globalcode – Open4education Operações de agregações (Aggregation) permitem que usuários processem todos os registros de dados através de operações 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 esforço custos na alocação de memória e desempenho.
  13. 13. Globalcode – Open4education
  14. 14. Globalcode – Open4education No caso da Ingresse, todas as condições utilizadas na busca de eventos são trabalhadas e armazenadas em um array. Algumas consultas utilizavam regex, o que exigia muito mais do servidor. Isso tornava a aplicação pouco flexível e nada performática.
  15. 15. Globalcode – Open4education
  16. 16. Globalcode – Open4education Visando obter maior desempenho e simplicidade na busca de eventos, optamos por eliminar o aggregation e fazer tudo via queries.
  17. 17. Globalcode – Open4education Pra isso, fizemos uso dos índices, zerando a necessidade de processos complementares. A consulta é feita dentro do próprio índice, possibilitando concorrência e recorrência sem maiores problemas, resultando em consultas mais rápidas.
  18. 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. 19. Globalcode – Open4education full text search: db.event.find({$text: {$search: "marcelo"}},{'title': true, 'description': true, 'tags': true, ‘link’: true}) .pretty() Alterado na versão 2.6: MongoDB
  20. 20. Globalcode – Open4education A ordenação padrão utilizada é do evento mais próximo da data atual para o mais futuro. Pra isso criamos o índice db.event.ensureIndex({eventDate.dateTime: 1})
  21. 21. Globalcode – Open4education Ganho relevante na performance, saindo de 100 usuários por minuto para 2.000 usuários/minuto em testes de laboratório Consulta mais simples. Agilidade Flexibilidade
  22. 22. Globalcode – Open4education Shopping cart Backup Controle de versão da coleção Legado
  23. 23. Globalcode – Open4education Perguntas?
  24. 24. Globalcode – Open4education Email: kelly.cristina83@gmail.com GitHub: kelly.costa@ingresse.com

×