Upload
allan-silva
View
148
Download
0
Embed Size (px)
Citation preview
Estratégias para Otimização de Consultas do Hibernate em uma Aplicação Web
Orientadores: Prof. MSc Luiz Eduardo Guarino
Prof. MSc Leandro Guarino
Allan SilvaHeitor Bernardino
Outubro - 2014
Agenda• Introdução e Objetivos• Desempenho em Aplicações Web • ORM e Hibernate• Otimização de Consultas• Testes e Monitoramento• Metodologia• Estudo de Caso• Estratégias aplicadas e analisadas• Resultados • Conclusões e Trabalhos Futuros
Objetivos
• Otimizar consultas de uma aplicação através da implementação de estratégias analisadas;
• Reunir dados de desempenho para tomar decisões de negócio que afetam o sistema;
• Melhorar a qualidade percebida pelos usuários.
Desempenho
• Alguns indicadores:– Tempo de Resposta (Response time), – Carga (Load), – Vazão (Throughput), – Gargalo (Bottleneck)
• Tempo de Resposta: medida de desempenho de interesse do usuário.
Fatores de Impacto no Desempenho
• Conteúdo;• Software do Servidor;• CPU, Disco, I/O ... Infraestrutura;• Largura de banda da rede;• Banco de Dados;• Aplicação – Desempenho no acesso a dados.
Persistência de Dados• Na maioria dos casos, dados são gravados em bancos
relacionais;
• ... E desenvolvemos orientado a objetos...
Paradigmas diferentes!
Hibernate
• Ferramenta para mapeamento objeto relacional;
• Implementação da especificação de persistência de dados em Java (JPA);
• Existem outras: EclipseLink, Open JPA, DataNucleus etc.
Problemas Comuns
• O problema do select n + 1 –Você faz uma consulta e são executadas N
consultas em sequência;–número de queries excessivas.
Otimização de Consultas
• Reformular consultas;
• Reduzir ou distribuir os hits ao banco de dados;
• Utilizar recursos adicionais (memória...);
• Obter o mesmo resultado;
• Tempo de resposta menor.
Testes de Desempenho
• Verificar o tempo de resposta e o rendimento da aplicação de acordo com o resultado esperado
Testes de Desempenho
• Tempo x Carga;• Gargalos;• Expectativas;• Métricas para Medições;• Voltado ao Ambiente e não à Funcionalidade;• Ambiente similar ao de Produção;• Base para otimização.
Monitoramento e Métricas
• "Se você não pode medir algo, você não pode melhorá-lo“ (Lord Kelvin);
• Definição do desempenho em termos quantitativos.
Dados base para Testes
• Questionário sobre Sistema
– Demanda, Picos, Tempo de resposta ideal, etc.
• Consulta de Nota Fiscal;
• Filtros de busca mais utilizados;
• Retorno de 5 mil linhas;
• Carga de 1, 10 e 100 usuários.
Ambiente de Testes• Servidor– Windows 2003 Server– 2.4Ghz Intel Xeon– 2Gb RAM– JDK 1.7– Apache Tomcat 7.0.55– PostgreSQL 9.3
• Cliente– Windows 7– 1.8Ghz Intel Pentium Dual Core– 2Gb RAM
Considerações Finais
• Sempre precisamos considerar o desempenho?• Melhor usar SQL puro do que ORM? –DEPENDE!
• Possibilidade: Adoção de abordagens mistas;
• Não há “uma estratégia para performar tudo”;
• Objetivos alcançados
Trabalhos Futuros
• Análise com mais variáveis e estratégias;
• Outras operações;
• Plataformas móveis;
• Abordagem de OGM(Object/Grid Mapper).
Referências
• Sistema de Banco de Dados• Java Persistence with Hibernate• Just Hibernate• Pro JPA 2• The Art of Application Performance Testing• Artigos Científicos• Documentação das Ferramentas