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?
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.
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.
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 .
“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.
Respostas:
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.1
pouco mais rápido do queH2 1.3
bancos 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.
fonte
Ambos
HyperSQL
eH2 Database
sã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 .fonte