Tenho uma aplicação feita em java jsf e jdbc que acessa dados de fatura de agência. Mas o numero de acessos simultâneos vai ser muito grande em um determinado período do mês, e estamos prevendo que o banco de dados não vai aguentar o tranco.
Gostaria de saber se existe alguma framework onde baseado em um período determinado e no código da agência, fizesse uma consulta no banco e gerasse este resultado em forma de html estático, esta forma evitaria a sobrecarga no banco. Algo parecido com os portais de nóticias que disponiblizam as notícias em conteúdo estático.
Se alguém poder me dar uma dica, sujerir algo ficorei muito agradecido.
O que eu pensei aqui é você fazer um cache onde ficariam as informações.
Quando alguém fizesse uma consulta, vc verificaria se esse objeto já está em cache, caso não esteja, vc consulta o banco, salva no cache e depois envia o resultado para o cliente.
Se você está usando um web container como o Oracle WebLogic ou o IBM WebSphere (não sei quanto ao Glassfish), eles costumam ter esse recurso pronto (você poder ter páginas já em um cache, dependendo de uma especificação de uma URL). Quando a URL de uma página dinâmica segue a especificação configurada, ela é obtida apenas uma vez, e em chamadas posteriores é usada a cópia em cache em vez de chamar a parte dinâmica.
o Tomcat eu acredito que não tem, mas nada impede ele de usar um framework ORM com cache de consultas, assim já solucionaria essa parte de consultas ao banco.
[quote=evefuji]o Tomcat eu acredito que não tem, mas nada impede ele de usar um framework ORM com cache de consultas, assim já solucionaria essa parte de consultas ao banco. [/quote] Ele disse que estava utilizando JDBC.
Vai ter um trabalhinho maneiro aí pela frente para ele…
Bom, tem bancos de dados que tem seu cache de consultas (a maior parte deles), se souber configurar bem isso pode ser que não tenha tantos problemas. O problema do cache de consultas nos bancos é que o banco consome mais memória para cada conexão com ele, que se tivesse na aplicação .
Outra alternativa seria também colocar uma outra camada sobre o web container, o HTTPD como proxy. Ele possui recurso de cache de páginas para o mod_proxy (para o mod_jk não sei).
Só uma coisa, se me lembro bem, esses caches de páginas não funcionam bem para usuários logados quando estão no HTTPD.
Antigamente existia um framework chamado JESI que fazia isso (achei uma referência aqui: http://www.jcp.org/en/jsr/detail?id=128 ). Mas não sei a quantas anda, não sei ao menos se ainda é mantido. Mas acho que vale a pena dar uma olhada porque era bem simples de usar… você colocava uma tag no seu JSP que dizia o limite de tempo que aquele conteúdo ia permanecer no cache.