HSQLDB 2.0 sera bientôt disponible. Je me demande s'il surpassera H2 car, pour autant que je sache, la plupart des utilisateurs préfèrent H2 que HSQLDB. Je suis intéressé par le support MVCC de HSQLDB 2.0. J'ai appris que MVCC sur H2 est encore expérimental. Concernant le support / documentation, la concurrence, les performances, quel est le meilleur entre les deux?
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?
Matt
27
Une autre parfaitement bonne question close.
rtcarlson
Je trouve fascinant que se concentrer sur les réponses semble être une performance, même si la question ne le mentionne que comme l'un des aspects. Je serais beaucoup plus intéressé par d'autres domaines tels que le support / la documentation, la convivialité (facilité d'utilisation, intuitivité, ensemble de fonctionnalités), la fiabilité, etc.
Veuillez noter que j'avais fourni cette réponse en 2011. Elle est peut-être obsolète
Mon entreprise 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 de nombreuses fonctionnalités, y compris l'appel de procédures et de fonctions stockées, de tableaux, de sélections imbriquées, etc. J'ai l'expérience HSQLDB 2.1d'être légèrement plus rapide que H2 1.3pour les petites bases de données en ce qui concerne DML.
Cependant, HSQLDB surpasse fortement 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 par H2 des fonctions stockées à nouveau 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" plutôt spécifique à jOOQ, voir aussi le commentaire de Thomas Mueller.
D'un autre côté, 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.
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, il n'y a pas de surcharge.
Thomas Mueller
2
@ThomasMueller: Merci, je ne le savais pas. Cela aidera à accélérer mes tests d'intégration, massivement. J'adapterai ma réponse en conséquence. HSQLDB a un langage procédural de type PL / SQL, qui est IMO plus puissant. Je ne sais pas si ce langage est pré-compilé ou interprété ...
Lukas Eder
45
Les deux HyperSQLet H2 Databasesont assez transparents, de sorte que les tests peuvent être la meilleure approche pour déterminer laquelle est la plus appropriée pour une utilisation particulière. Des comparaisons entre l' un et l' autre sont disponibles. Ils partagent un héritage commun et sont tous deux open source .
"la poubelle est un outil de conception important" - loc. cit.
trashgod
3
Merci pour ce lien «héritage». Ils résument l'histoire à merveille. D'abord est venu 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.
specialk1st
1
@ specialk1st: C'est vrai, l' héritage dans ce cas est un auteur commun, pas un code commun.
Réponses:
Veuillez noter que j'avais fourni cette réponse en 2011. Elle est peut-être obsolète
Mon entreprise 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 de nombreuses fonctionnalités, y compris l'appel de procédures et de fonctions stockées, de tableaux, de sélections imbriquées, etc. J'ai l'expérience
HSQLDB 2.1
d'être légèrement plus rapide queH2 1.3
pour les petites bases de données en ce qui concerne DML.Cependant, HSQLDB surpasse fortement 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 par H2 des fonctions stockées à nouveau 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" plutôt spécifique à jOOQ, voir aussi le commentaire de Thomas Mueller.D'un autre côté, 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.
la source
Les deux
HyperSQL
etH2 Database
sont assez transparents, de sorte que les tests peuvent être la meilleure approche pour déterminer laquelle est la plus appropriée pour une utilisation particulière. Des comparaisons entre l' un et l' autre sont disponibles. Ils partagent un héritage commun et sont tous deux open source .la source