¿Cuál es mejor H2 o HSQLDB? [cerrado]

85

Pronto se lanzará HSQLDB 2.0. Me pregunto si superará al H2 ya que, hasta donde yo sé, la mayoría de los usuarios prefieren H2 que HSQLDB. Estoy interesado en el soporte MVCC de HSQLDB 2.0. He aprendido que MVCC en H2 todavía es experimental. Con respecto al soporte / documentación, concurrencia, rendimiento, ¿cuál es mejor entre los dos?

diestro
fuente
6
¿Cuál es tu caso de uso? ¿Qué consultas realizarás contra tus datos? ¿Qué tamaño tienen sus datos? ¿Su aplicación es pesada para leer o escribir?
Matt
27
Otra pregunta perfectamente buena cerrada.
rtcarlson
Me parece fascinante que el enfoque en las respuestas parezca ser desempeño, a pesar de que la pregunta solo lo menciona como uno de los aspectos. Estaría mucho más interesado en otras áreas de soporte / documentación, usabilidad (facilidad de uso, intuición, conjunto de características), confiabilidad y demás.
StaxMan

Respuestas:

61

Tenga en cuenta que proporcioné esta respuesta en 2011. Puede que esté desactualizada

Mi empresa desarrolla una biblioteca de abstracción de bases de datos ( jOOQ ), que admite ambas bases de datos. Nuestras pruebas de integración cubren una gran cantidad de funcionalidad, incluida la llamada de procedimientos y funciones almacenados, matrices, selecciones anidadas, etc. Experimento HSQLDB 2.1que es un poco más rápido que H2 1.3para bases de datos pequeñas en lo que respecta a DML.

Sin embargo, HSQLDB supera con creces a H2 en operaciones DDL, así como al iniciar / cerrar la instancia, incluso para una base de datos pequeña (¡debido a que H2 compila funciones almacenadas de nuevo con javac en cada inicio de la base de datos!) . Esto depende de la forma en que almacena las funciones almacenadas. Aparentemente, ese es un "problema" bastante específico de jOOQ, ver también el comentario de Thomas Mueller.

Por otro lado, estoy de acuerdo con el usuario trashgod, debes probar el rendimiento contra un esquema y un caso de uso razonables por ti mismo.

Lukas Eder
fuente
7
Las funciones almacenadas solo se vuelven a compilar si se almacenan "como código fuente", que es una característica que no está disponible en HSQLDB (que yo sepa). Si utiliza funciones almacenadas precompiladas, no existe tal sobrecarga.
Thomas Mueller
2
@ThomasMueller: Gracias, no lo sabía. Eso ayudará a acelerar mis pruebas de integración de forma masiva. Adaptaré mi respuesta en consecuencia. HSQLDB tiene un lenguaje de procedimiento similar a PL / SQL, que es más potente en mi opinión. Sin embargo, no estoy seguro, si ese lenguaje está precompilado o interpretado ...
Lukas Eder
45

Ambos HyperSQLy H2 Databaseson bastante transparentes, por lo que las pruebas pueden ser el mejor enfoque para determinar cuál es más adecuado para un uso particular. Hay disponibles comparaciones entre uno y otro . Comparten una herencia común y ambos son de código abierto .

basurero
fuente
10
"el bote de basura es una herramienta de diseño importante" - loc. cit.
trashgod
3
Gracias por ese enlace de "herencia". Ellos resumen la historia maravillosamente. Primero vino HSQLDB (SQL hipersónico) y luego H2, pero HSQLDB y H2 no comparten el mismo código y son proyectos separados a partir de hoy.
specialk 1 de
1
@ specialk1st: Correcto, la herencia en este caso es un autor común, no un código común.
trashgod