Qual é o melhor H2 ou HSQLDB? [fechadas]

85

HSQLDB 2.0 será lançado em breve. Eu me pergunto se ele irá superar o H2, já que, pelo que eu sei, a maioria dos usuários prefere H2 do que HSQLDB. Estou interessado no suporte MVCC do HSQLDB 2.0. Eu aprendi que MVCC em H2 ainda é experimental. Com relação a suporte / documentação, simultaneidade, desempenho, o que é melhor entre os dois?

Dexter
fonte
6
Qual é o seu caso de uso? Que consultas você executará em seus dados? Qual é o tamanho dos seus dados? Seu aplicativo é pesado para leitura ou gravação?
Matt de
28
Outra pergunta perfeitamente boa encerrada.
rtcarlson,
Acho fascinante que o foco nas respostas pareça ser o desempenho, apesar de a pergunta apenas mencioná-lo como um dos aspectos. Eu estaria muito mais interessado em outras áreas de suporte / doc, usabilidade (facilidade de uso, intuitividade, conjunto de recursos), confiabilidade e tal.
StaxMan

Respostas:

61

Observe que eu forneci esta resposta em 2011. Ela pode estar desatualizada

Minha empresa desenvolve uma biblioteca de abstração de banco de dados ( jOOQ ), que suporta os dois bancos de dados. Nossos testes de integração cobrem muitas funcionalidades, incluindo a chamada de stored procedures e funções, arrays, aninhados selects, etc. Acho que sou um HSQLDB 2.1pouco mais rápido do que H2 1.3bancos de dados pequenos no que diz respeito a DML.

No entanto, HSQLDB altamente supera H2 em operações DDL, bem como ao iniciar / encerrar a instância, mesmo para um pequeno banco de dados (devido a compilação funções armazenadas de H2 de novo com javac a cada inicialização do banco de dados!) . Isso depende da maneira como você armazena as funções armazenadas. Aparentemente, esse é um "problema" específico do JOOQ, veja também o comentário de Thomas Mueller.

Por outro lado, concordo com o trashgod do usuário, você deve testar o desempenho em um esquema e caso de uso razoáveis.

Lukas Eder
fonte
7
As funções armazenadas são recompiladas apenas se forem armazenadas "como código-fonte", que é um recurso que não está disponível no HSQLDB (até onde eu sei). Se você usar funções armazenadas pré-compiladas, não haverá tal sobrecarga.
Thomas Mueller
2
@ThomasMueller: Obrigado, não sabia disso. Isso ajudará a acelerar meus testes de integração, maciçamente. Vou adaptar minha resposta de acordo. HSQLDB tem uma linguagem procedural semelhante a PL / SQL, que é IMO mais poderosa. Não tenho certeza, porém, se essa linguagem é pré-compilada ou interpretada ...
Lukas Eder
45

Ambos HyperSQLe H2 Databasesão bastante transparentes, portanto, o teste pode ser a melhor abordagem para determinar qual é mais adequado para um uso específico. Comparações envolvendo um e outro estão disponíveis. Eles compartilham uma herança comum e ambos são de código aberto .

deus do lixo
fonte
10
“a lata de lixo é uma importante ferramenta de design” - loc. cit.
trashgod
3
Obrigado por esse link de "herança". Eles resumem a história de maneira maravilhosa. Primeiro veio o HSQLDB (Hypersonic SQL), depois veio o H2, mas o HSQLDB e o H2 não compartilham o mesmo código e são projetos separados a partir de hoje.
specialk1st
1
@ specialk1st: Certo, a herança neste caso é um autor comum, não um código comum.
trashgod