Volume de dados alto e Hibernate

Prezados, gostaria de discutir uma assunto com vocês para que tenha um melhor esclarecimento.

Quando se tem um volume de dados muito grande, devemos abandonar o hibernate e/ou jpa? Isso influenciará muito na performace? Qual seria a melhor solução?

Eu não entendo muito bem porque dessa opção, poderiam me ajudar explicando os motivos?

Desde já agradeço a todos.

O meu entendimento é que hibernate/jpa “por padrão” estimula sim um maior uso de memória e perda de performance. É possível contornar? Claro, existem estratégias para isso. Mas se vale a pena contornar ou simplesmente abandonar o uso, é uma avaliação que só você que conhece o problema seria capaz de fazer.

[quote=diogogama]Prezados, gostaria de discutir uma assunto com vocês para que tenha um melhor esclarecimento.

Quando se tem um volume de dados muito grande, devemos abandonar o hibernate e/ou jpa? Isso influenciará muito na performace? Qual seria a melhor solução?

Eu não entendo muito bem porque dessa opção, poderiam me ajudar explicando os motivos?

Desde já agradeço a todos.[/quote]

Depende do que você chama de “volume de dados muito grande” e “performance”.

É claro que incluir uma camada de abstração sempre adiciona um overhead de processamento e memória. Mas na maior parte do tempo esse overhead compensa. Havendo uma limitação nessa abordagem, você precisa entender onde exatamente está essa limitação: consumo de CPU ? consumo de memória ? concorrência nas transações ? dificuldade em escalar ?

A priori, eu diria que há duas fontes de problemas como JPA/Hibernate:

1 - a forma que é usado: por abstrair o banco de dados, acho que um efeito colateral é programadores menos experientes pararem de pensar no banco de dados. Assim, os programadores param de pensar em JOINs, número de consultas executadas, se o cache vai ser aproveitado, etc.

2 - limitações próprias do modelo relacional: muito da onda de NoSQL veio em razão da dificuldade em se escalar horizontalmente bancos relacionais, esparsidade dos dados etc.

Enfim, acho muito difícil obter uma resposta satisfatória para essa pergunta sem contextualizá-la melhor.

ok, vou tentar melhorar essa dúvida.

Trabalho com geo-referenciamento, trabalhamos com bd postgis e temos um volume de dados muito grande…

As vezes colocamos modelagem para fazer que chega a levar dias…

mas onde o Hibernate seria utilizado não trafegam esses dados…

Quero saber como resolver pelo sim ou pelo não dos frameworks de persistência?

Desde já agradeço.

Não precisa deixar de usar Hibernate. Em casos de alta carga de dados utilize Stateless Session. Será um “JDBC” sem ter que fazer na mão a parte de popular os objetos, obviamente sem os recursos avançados do hibernate, a qual necessitaria do cache.

Referencias: