| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/07/2009 07:56:34
|
marcelo_mococa
Virtual Machine Man
![[Avatar]](/images/avatar/90248d0a98105fa534cf2b0696ddd12f.jpg)
Membro desde: 03/03/2005 10:03:32
Mensagens: 622
Localização: São Paulo
Offline
|
Pessoal,
Gostaria de ouvir a opinião de vocês.
Tenho uma consulta na base que pode retornar uns 500 mil registros. Depois pego estes registros e escrevo em um arquivo posicional. Este código é um legado e está bem confuso. Tem tudo em uma classe só. Gostaria de refatorá-lo e estou com uma dúvida.
Por padrão, meus Repositórios retornar entidades de domínio. Neste caso, uma lista de entidades. A minha dúvida é: Existe uma forma melhor de trabalhar com grandes quantidades de objetos retornados da base? Estou preocupado com a performance deste processamento. Alguém já passou por algo semelhante? Qual foi a solução utilizada? Estou pensando em utilizar ActiveRecord, mas gostaria de ouvir opiniões.
abraços
Marcelo
|
Marcelo Madeira - TCS
SCJP 1.5
SCWCD 1.4
blog
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/07/2009 09:41:48
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
500 mil registros? Se cada registro ocupar 400 bytes na memória (uma estimativa muito otimista) você precisaria de 200 megabytes de memória só para esses objetos. Não se esqueça que cada caracter de uma string ocupa 2 bytes. Você tem memória suficiente para rodar o tal programa?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/07/2009 09:49:11
|
fantomas
GUJ Master
![[Avatar]](/images/avatar/a2bf57c3aee957f2aaf75aa84717b3be.jpg)
Membro desde: 24/04/2008 16:10:55
Mensagens: 1533
Localização: Terra (maior parte do tempo)
Offline
|
Eu também fiquei curioso!
Você disse que o código já existe, logo, qual o real objetivo da refatoração?
É atingir melhor performance?
flws
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/07/2009 12:01:50
|
marcelo_mococa
Virtual Machine Man
![[Avatar]](/images/avatar/90248d0a98105fa534cf2b0696ddd12f.jpg)
Membro desde: 03/03/2005 10:03:32
Mensagens: 622
Localização: São Paulo
Offline
|
Então,
O código atual funciona da seguinte forma:
É feita a consulta na base, e o arquivo é gerado percorrendo o resultset. Portanto, este problema não ocorre hoje.
A idéia da refatoração é desacoplar o código para permitir uma manutenção evolutiva.
|
Marcelo Madeira - TCS
SCJP 1.5
SCWCD 1.4
blog
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/07/2009 12:14:04
|
fantomas
GUJ Master
![[Avatar]](/images/avatar/a2bf57c3aee957f2aaf75aa84717b3be.jpg)
Membro desde: 24/04/2008 16:10:55
Mensagens: 1533
Localização: Terra (maior parte do tempo)
Offline
|
Você pretende / está utilizando algum ORM nesta refactoring?
flws
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/07/2009 12:39:35
|
marcelo_mococa
Virtual Machine Man
![[Avatar]](/images/avatar/90248d0a98105fa534cf2b0696ddd12f.jpg)
Membro desde: 03/03/2005 10:03:32
Mensagens: 622
Localização: São Paulo
Offline
|
Não...
Utilizaremos apenas JDBC.
|
Marcelo Madeira - TCS
SCJP 1.5
SCWCD 1.4
blog
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/07/2009 21:59:49
|
fantomas
GUJ Master
![[Avatar]](/images/avatar/a2bf57c3aee957f2aaf75aa84717b3be.jpg)
Membro desde: 24/04/2008 16:10:55
Mensagens: 1533
Localização: Terra (maior parte do tempo)
Offline
|
Então...por conta da quantidade enorme de dados envolvida talvez não seja muito bom mesmo utilizar um ORM. Talvez fosse uma boa idéia dar uma olha no suporte JDBC oferecido pelo Spring, talvez dê para você montar um código um pouco mais limpo e elegante sem prejudicar a perfomance.
Fora isso acho que só vendo alguma parte de código para ver se surge alguma idéia diferente, algum pattern ou algo assim.
flws
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/09/2010 13:52:03
|
sulito
Virtual Machine Man
Membro desde: 23/11/2009 07:15:59
Mensagens: 608
Offline
|
Estou a reviver este topico, porque eu tambem tenho uma duvida identica, Sera que para recuperar muitos dados numa consulta vale a pena usar o jdbc ou o hibernate?? qual é o que tem maior performance quando se trata de recuperar 1 milhão de dados por exemplo???
|
LPI-101 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/09/2010 13:58:21
|
fantomas
GUJ Master
![[Avatar]](/images/avatar/a2bf57c3aee957f2aaf75aa84717b3be.jpg)
Membro desde: 24/04/2008 16:10:55
Mensagens: 1533
Localização: Terra (maior parte do tempo)
Offline
|
Oi Sulito!
1 milhão de registros?
É muita coisa portanto indicaria JDBC.
Mas pare para pensar um pouco, que é que irá solicitar 1 milhão de registros de uma vêz? É nesta hora que a gente para e começa a fazer uma analise mais detalhada do problema para verificar se realmente é necessário tal tipo de solução.
[]'s
|
|
|
 |
|
|