4
respostas

Utilização Cache com grande volumetria de dados

Eu tenho uma pagina web que deverá carregar e agrupar muitos dados, uma consulta pode retornar cerca de 55mil registros, a performance da tela está um pouco lenta, pensei em utilizar cache já que a consulta demora um pouco, seria um ocasião adequado implementar o cache para esse cenário? Tenho dúvidas quando implementar um cache.

4 respostas

Olá Ana!

Não sou especialista no assunto mas estou disponível para te ajudar!

Encontrei uma página interessante da Amazon falando sobre como funciona o cache:

https://aws.amazon.com/pt/caching/

Não posso afirmar que a melhor solução para o seu caso seja o cache mas esse texto da Amazon pode te ajudar.

Já falando sobre o JPA existem outras maneiras de você otimizar a performance como você pode ver nesse artigo do nosso blog:

https://blog.caelum.com.br/os-7-habitos-dos-desenvolvedores-hibernate-e-jpa-altamente-eficazes/

Espero que tenha te ajudado de alguma forma!

Bons estudos!

Olá Ana!

Estava estudando sobre o assunto e achei um tópico interessante para seu problema: Você faz paginação dos 55 mil registros?

Acredito que isso também poderia ajudar a tornar o sistema mais performático porque ao invés de você retornar os 55 mil registros de uma vez você poderia retornar uma parte da consulta em cada "aba".

Por exemplo,

Aba 1 - 100 registros

Aba 2 - 100 registros

E assim por diante...

Veja que você só irá retornar os 100 registros, um de cada vez. Dessa forma o sistema não terá que buscar os 55 mil fazendo com que o tempo de espera reduza drasticamente.

Imagine que eu tenha que transformar esses 55mil registros em linha agrupadas, hoje uso um PIVOT do oracle, pq existem linhas repetidas devido a colunas, onde pego e transformo essas 55mil registros em pequenos pivot de acordo com o filtro. Então em tela eu retorno poucas linhas. A páginação não seria uma opção, já que preciso retornar agrupado de acordo com a categoria selecionada do registro. Eu ler esse artigos que você indicou. O que eu queria de fato é não executar a query em banco toda vez que for carregar a tela, somente qdo tiver alguma alteração nos registros.

Olá Ana!

Como você disse que não quer executar a query o melhor caminho seria o uso de cache mesmo.