88 votes

Lequel est le meilleur H2 ou HSQLDB ?

HSQLDB 2.0 sera bientôt disponible. Je me demande s'il sera plus performant que H2 puisque, pour autant que je sache, la plupart des utilisateurs préfèrent H2 à HSQLDB. Je suis intéressé par le support MVCC de HSQLDB 2.0. J'ai appris que MVCC sur H2 est encore expérimental. En ce qui concerne le support/documentation, la concurrence, les performances, lequel des deux est le meilleur ?

6 votes

Quel est votre cas d'utilisation ? Quelles requêtes allez-vous effectuer sur vos données ? Quelle est la taille de vos données ? Votre application est-elle lourde en lecture ou en écriture ?

30 votes

Une autre excellente question fermée.

0 votes

Je trouve fascinant que l'accent mis sur les réponses semble être la performance, bien que la question ne la mentionne que comme l'un des aspects. Je serais beaucoup plus intéressé par d'autres aspects tels que le support/documentation, la convivialité (facilité d'utilisation, intuitivité, ensemble de fonctionnalités), la fiabilité, etc.

62voto

Lukas Eder Points 48046

Veuillez noter que j'avais fourni cette réponse en 2011. Elle peut être périmée

Ma société développe une bibliothèque d'abstraction de base de données ( jOOQ ), qui prend en charge les deux bases de données. Nos tests d'intégration couvrent un grand nombre de fonctionnalités, notamment l'appel de procédures et de fonctions stockées, les tableaux, les sélections imbriquées, etc. Je connais HSQLDB 2.1 pour être légèrement plus rapide que H2 1.3 pour les petites bases de données en ce qui concerne le DML.

Cependant, HSQLDB surpasse largement H2 dans les opérations DDL ainsi que lors du démarrage/arrêt de l'instance, même pour une petite base de données (en raison de la compilation des fonctions stockées par H2 avec javac à chaque démarrage de la base de données !) . Cela dépend de la façon dont vous stockez les fonctions stockées. Apparemment, c'est un problème spécifique à jOOQ, voir aussi le commentaire de Thomas Mueller.

D'autre part, je suis d'accord avec l'utilisateur trashgod, vous devriez tester les performances par rapport à un schéma et un cas d'utilisation raisonnables pour vous-même.

7 votes

Les fonctions stockées ne sont recompilées que si elles sont stockées "en tant que code source", ce qui est une fonctionnalité qui n'est pas disponible dans HSQLDB (pour autant que je sache). Si vous utilisez des fonctions stockées pré-compilées, alors il n'y a pas cette surcharge.

2 votes

Thomas Mueller : Merci, je ne le savais pas. Ça va m'aider à accélérer mes tests d'intégration, massivement. Je vais adapter ma réponse en conséquence. HSQLDB possède un langage procédural de type PL/SQL, qui est plus puissant, selon moi. Je ne suis pas sûr cependant, si ce langage est pré-compilé ou interprété...

45voto

trashgod Points 136305

Les deux sites HyperSQL y H2 Database sont assez transparents, de sorte que l'essai peut être la meilleure approche pour déterminer lequel est le plus adapté à un usage particulier. Les comparaisons impliquant un et le autre sont disponibles. Ils ont un point commun patrimoine et les deux sont ouvrir source .

10 votes

"la poubelle est un outil de conception important" - loc. cit.

3 votes

Merci pour ce lien "héritage". Ils résument assez bien l'histoire. Il y a d'abord eu HSQLDB (Hypersonic SQL) puis H2, mais HSQLDB et H2 ne partagent pas le même code et sont des projets séparés à ce jour.

1 votes

@specialk1st : C'est vrai, le patrimoine dans ce cas est un auteur commun, pas un code commun.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X