2010-04-30 14 views
73

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

+6

¿Cuál es su caso de uso? ¿Qué consultas realizará contra sus datos? ¿Qué tan grande es tu información? ¿Su aplicación es de lectura o escritura pesada? – Matt

+14

Otra pregunta perfectamente buena cerrada. – rtcarlson

+0

Me parece fascinante que el enfoque en las respuestas parezca ser el rendimiento, a pesar de que la pregunta solo lo menciona como uno de los aspectos. Estaría mucho más interesado en otras áreas, desde soporte/documentación, usabilidad (facilidad de uso, intuitividad, conjunto de características), confiabilidad y demás. – StaxMan

Respuesta

41

Ambos HyperSQL y H2 Database son bastante transparentes, por lo que las pruebas pueden ser el mejor enfoque para determinar cuál es más adecuado para un uso particular. Las comparaciones que implican one y other están disponibles. Comparten un heritage común, y ambos son opensource.

+7

"la papelera es una herramienta de diseño importante" - [_ loc. cit._] (http://stackoverflow.com/a/22259102/230513) – trashgod

+2

Gracias por ese enlace "patrimonio". Ellos resumen la historia maravillosamente. Primero vino HSQLDB (Hypersonic SQL) luego vino H2, pero HSQLDB y H2 no comparten el mismo código y son proyectos separados a partir de hoy. – specialk1st

+1

@ specialk1st: Derecha, el _heritage_ en este caso es un autor común, código no común. – trashgod

53

Soy el desarrollador de una biblioteca de abstracción de base de datos (jOOQ), que admite ambas bases de datos. Mis más de 130 pruebas de integración cubren una gran cantidad de funcionalidades, incluida la llamada de procedimientos y funciones almacenados, matrices, selecciones anidadas, etc. Experimento HSQLDB 2.1 para ser ligeramente más rápido que H2 1.3 para bases de datos pequeñas en lo que respecta a DML.

Sin embargo, HSQLDB altamente supera a H2 en operaciones DDL, así como al iniciar/cerrar la instancia, incluso para una pequeña base de datos (debido a las funciones de compilación almacenada de H2 de nuevo con javac en cada inicio de base de datos!). Esto depende de la forma en que almacene 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, debe probar el rendimiento contra un esquema razonable y un caso de uso para usted.

+5

Las funciones almacenadas solo se vuelven a compilar si están almacenadas "como código fuente", que es una función que no está disponible en HSQLDB (hasta donde yo sé). Si usa funciones almacenadas precompiladas, entonces no hay tal sobrecarga. –

+1

@ThomasMueller: Gracias, no lo sabía. Eso ayudará a acelerar mis pruebas de integración masivamente. Adaptaré mi respuesta en consecuencia. HSQLDB tiene un lenguaje de procedimiento similar a PL/SQL, que es más poderoso IMO. Aunque no estoy seguro, si ese lenguaje está precompilado o interpretado ... –

Cuestiones relacionadas