Link,
não quero criar um flame, mas com relação a banco de dados para web a primeira questão a ser considerada é quais recursos o seu provedor permite utilizar. A maioria permite o MySQL, SQL Server e PostgreSQL. Não conheço nenhum que utilize o JavaDB.
Também em relação ao provedor é importante observar que:
- Maquina dedicada ou maquina virtual dedicada - nenhum problema.
- Máquina não dedicada - verificar se a VM será exclusiva sua, caso isso não ocorra, é mais do que recomendável não utilizar banco de dados puro java, tais como JavaDB (Derby), HSQLDB, H2 etc.
com relação a performance existe vários benchmarks no mercado e cada qual puxa a sardinha para o seu lado, mas tem alguns links que você pode levar em consideração:
Comparações feita MySQL AB com outros SGBD:
http://dev.mysql.com/tech-resources/crash-me.php
H2, na página inicial existe um comparativo de performance:
http://www.h2database.com/
O HSQLDB é um dos mais utilizados atualmente, é mantido pelo grupo do JBoss e foi a ferramenta escolhida pelo grupo do OpenOffice para embutir na suite.
Acho que cabe observar que o H2 foi feito pelo criador do HSQLDB e está (na minha opinião) mais maduro, eu fiquei sabendo dele mais recentemente e estou fazendo vários testes, ele é simplesmente fantástico, em apenas um jar de 1.143Kb tem tudo. E, utiliza o ODBC do postgresql o que facilita para migração de aplicações legadas (MS).
Outra técnica muito boa do H2 chama-se linked table que permite criar uma tabela virtual que na realidade está em outro banco de dados (equivalente a tabela vinculada do Access), veja um exemplo:
CREATE LINKED TABLE test_link('com.mysql.jdbc.Driver',
'jdbc:mysql://localhost/test', 'sa', 'sa', 'TEST');
select * from test_link;
Para aplicações embarcadas, ou em três camadas (para LANs ou WANs), os bancos puro java são bons. Para aplicações web, eu não tenho nenhuma experiência de uso real (em função do citado acima - problemas com os provedores).
A maior parte das aplicações web que trabalho são em Oracle, um pouco por causa de tradição, um pouco por causa de contratos (depois que você comprou a licença da Oracle, mantê-la a um custo de 7% ou 15% é muito mais fácil que migrar aplicações).
No javadb, uma coisa que não me agrada é o parse (ele é feito com o javacc), ele é mais pesado que os dos concorrentes (puro java), tanto em consumo de memória quanto a tempo de processamento.
Outro aspecto que considero relevante:
Eu já vi e participei de equipe que perderam dados em bancos:
- Sybase
- SQL Server
- Informix
- Progress
- MySQL
- PostgreSQL e
- Oracle
De todos os incidentes, os casos com Oracle sempre foram causados por falhas humanas, não que o Oracle não tenha problema, mas é muito mais fácil recuperar uma base de dados Oracle quando você segue o manual do que com os outros SGBDs.
Pessoalmente, quando o projeto não tem problemas de recursos financeiros, para escolha de hardware e banco, a minha escolha é Oracle. Mas veja o que eu disse, recursos para o banco e hardware, a gente normalmente consegue melhores custos/beneficios com os concorrentes, apesar de não ter os mesmos recursos, segurança etc.
Eu não sei a confiabilidade do cluster do MySQL, mas o recurso RAC ou mesmo o GRID da Oracle são muito bons.
Para aplicações menores eu estou utilizando:
- Inscrições para cursos, sistemas web da Escola Técnica da UFPR, comprovantes de matrículas e etc os bancos MySQL.
- Para o banco do moodle, utilizamos o Postgresql.
- Para o sistema de workflow de processos utilizamos o Oracle.
- No Núcleo de Concursos da UFPR, utiliza-se o Oracle a mais de 15 anos.
Com relação ao HSQLDB recomendo o uso com muito cuidado, ele é rápido e simples, mas tem que ser muito bem configurado para não perder informações, os modos defaults dele são para situações ideais em que não ocorrem falhas de luz, usuários descuidados etc.
qualquer dúvida pergunte aí e tentamos ajudá-lo.
até mais,
Dieval