Persistência de Dados de Formulário

5 respostas
cesarpiau

Olá pessoal!

Estou com uma dúvida que apareceu em um sistema cuja arquitetura está sobre minha responsabilidade:
Este sistema está sendo desenvolvido em Java, utilizando o padrão JRS 286 (Portlet 2.0) e será integrado à ferramenta de portal eXo Portal da eXo Platform. O servidor de aplicação é o JBoss.
Este sistema terá um formulário composto de aproximadamente 70 a 90 itens a serem preenchidos e por isso será quebrado em algumas páginas.
Essa páginas precisarão ser armazenadas temporariamente antes do commit final do formulário, que será gravado em definitivo numa base de dados DB2 no Mainframe.
A questão é: Qual a melhor forma ou melhores práticas de persistir esses dados temporários do formulário?

  • Usar sessão
  • Usar banco de dados
  • Usar cookie
  • Existem outras práticas mais modernas?

Serão em torno de 60 mil usuários e estou com medo de utilizar sessão, pois talvez o servidor de aplicação, que estará rodando numa máquina SUN, fique comprometido com o uso excessivo de memória. Além disso, queria garantir a continuidade do preenchimento em caso de queda de sessão.
Usar um banco de dados, consumiria muitas conexões do DB2 mainframe, que como vocês sabem, é um recurso caro.
Usar cookie pode me trazer problemas com relação às configurações de cada cliente (browser, sistema operacional, configurações de segurança etc).

O que vocês sugerem?
Como as grandes lojas da internet tem persistido seus carrinhos de compra?

Espero que tenha passado todas as informações necessárias e espero ainda mais que vocês me ajudem.
Grande abraço a todos.

César Piau

5 Respostas

g4j

Já pensou em usar um banco de dados embarcado para ir persistindo antes de ir para o db2? acredito que o apache derby ou hsqldb funcionariam dessa forma.

skalinichenko

Trabalha em banco? :lol:
Zuera, não precisa responder (e nem eu vou falar os pesadelos que vivo)

Na minha área de desenvolvimento, infelizmente ainda não passei por algo parecido com este.
Mas analistas que conheço e trabalham junto comigo, trabalham utilizando sessões, mas não utilizando o JBoss como servidor de aplicação. Eles utilizam o WebSphere, porque consideram seguro e existem váááárias equipes para suporte do mesmo na empresa.

Acredite, eles utilizam sessão (na maioria das vezes)!
Agora eu, acredito que utilizar tabelas temporárias no banco, é muito mais seguro para a quantidade de dados, mas fazer o que né? Preferem sessão mesmo!
Flw!

cesarpiau

O risco de usar sessão é o consumo de memória, pois são 60 mil usuários do sistema.
Imaginem se os 60 mil resolvem acessar o sistema ao mesmo tempo e preencher o tal formulário com mais de 90 campos.
Estava pensando em manter o formulário em banco de dados e usar Ajax para manter a sessão do usuário aberta enquanto ele não submete o formulário ou parte dele.
O que vocês acham?

skalinichenko

O risco de usar sessão é o consumo de memória, pois são 60 mil usuários do sistema.
Imaginem se os 60 mil resolvem acessar o sistema ao mesmo tempo e preencher o tal formulário com mais de 90 campos.

O risco de usar sessão, é pensando assim como você comentou mesmo: a questão da possibilidade, de múltiplos usuários ao mesmo tempo. Para sistemas Web (e outros também), temos que ser sempre pessimistas.

Estava pensando em manter o formulário em banco de dados e usar Ajax para manter a sessão do usuário aberta enquanto ele não submete o formulário ou parte dele.
O que vocês acham?

Achei a solução perfeita!
Principalmente com a utilização do Ajax, para manter a sessão do usuário (não sei se é muito risco, pois não conheço tão profundamente os recursos). Isso tiraria praticamente a responsabilidade server-side, de manter a sessão do usuário.
Assino em baixo!

Flw e boa sorte!

g4j

Se você vai ter 60k usuários para o teu sistema você vai ter que mensurar muito bem os recursos, memória, configurações de servidores. Use ferramentas para medição de desempenho para testar ambos os casos (não sei se você consegue fazer isso com sessões no client), como jmeter por exemplo.

Criado 8 de junho de 2009
Ultima resposta 10 de jun. de 2009
Respostas 5
Participantes 3