101 votes

Comparaison des bases de données Java incorporées

J'ai l'intention de développer un petit (Java) application pour la gestion de mes finances. Je crois que j'ai besoin d'utiliser une base de données intégrée, mais je n'ai aucune expérience sur cette question. J'ai essayé de regarder certains des produits disponibles, mais je ne peux pas décider lequel serait le plus adapté pour moi. H2, HSQLDB, Derby et Berkeley DB semblent être de bons candidats, mais je ne vois pas comment ils se comparent les uns aux autres. Je vous remercie de votre aide à les comparer et de m'aider à décider lequel utiliser.

J'ai l'intention d'utiliser Hibernate pour mon application (à moins que vous ne vous recommandons d'utiliser des SGBD fournis par l'API), mais je veux aussi avoir la possibilité de modifier la base de données facilement à l'aide de SQL outil de navigation (modification du schéma et de modification des données).

Je vous remercie.

57voto

Sven Lilienthal Points 2654

Soit

  • HSQLDB - Utilisé par OpenOffice, testé et stable. Il est facile à utiliser. Si vous souhaitez modifier votre base de données-données, vous pouvez simplement ouvrir le fichier et de modifier les instructions d'insertion.

ou

  • H2 - Dit pour être plus rapide (par le développeur, qui à l'origine conçu hsqldb, trop)

Celle que vous utilisez est à vous, en fonction de combien de performance et de la façon dont beaucoup de stabilité dont vous avez besoin.

Le développeur de H2 a mis en place une belle évaluation de la performance:
http://www.h2database.com/html/performance.html

14voto

Wookai Points 8647

HSQLDB est un bon candidat (le fait qu'il est utilisé dans OpenOffice peut convaincu certains d'entre vous), mais pour un si petit personnel de l'application, pourquoi ne pas utiliser un objet de base de données (au lieu d'un classique relationnal base de données) ?

J'ai utilisé DB4O dans un de mes projets, et j'en suis très satisfait. Étant orientée objet, vous n'avez pas besoin de tout Hibernate couche, et peut directement insérer/mettre à jour/supprimer/objets de requête ! En outre, vous n'avez pas besoin de s'inquiéter sur le schéma, vous travailler directement avec les objets et les DB4O fait le reste !

Je suis d'accord qu'il peut prendre un certain temps pour s'habituer à ce nouveau type de base de données, mais de vérifier la DB40 tutoriel pour voir comment facile il vous permet de travailler avec la DB !

EDIT: Comme dit dans les commentaires, DB4O gère automatiquement les versions plus récentes des classes. En outre, un outil pour la navigation et la mise à jour de la base de données en dehors de l'application est disponible ici : http://code.google.com/p/db4o-om/

6voto

Uros Majeric Points 122

Un bon outil de comparaison peut être trouvé ici: http://www.jpab.org/All/All/All.html

Notez également les comparaisons entre les SGBD / JPA

4voto

Brian Agnew Points 143181

Quels critères allez-vous utiliser pour évaluer ces ? Si vous ne connaissez pas encore, alors vous n'avez pas besoin de décider maintenant. Essayez de faire de votre application de base de données-mise en œuvre-agnostique comme vous l'avez peut - fournir les emballages, objets d'accès aux données, etc., et cette décision, c'est quand vous avez tous les faits à la main et vous aurez à décider.

Si vous êtes à l'aide de bases de données relationnelles et SQL puis le ci-dessus ne devrait pas être trop dur (à l'aide de JDBC, etc). Assurez-vous que vous avez beaucoup environnant les tests, donc que lorsque vous souhaitez basculer entre les bases de données, vous pouvez déterminer que les fonctionnalités de votre application reste le même.

J'ai rencontré le même problème il y a quelques temps. Je ne sais pas qui de la base de données, donc ma première solution utilisée Derby (ou HSQLDB?), et j'ai été plus tard en mesure de passer à HSQLDB (ou Derby ? Ne peut pas se souvenir de la solution de travail) une fois que j'ai déterminé l'endroit où j'ai eu des problèmes (liés à la performance) et de la solution qui serait vraiment travailler pour moi.

4voto

Chii Points 7798

HSQLDB peut causer des problèmes pour les applications de grande taille, ce n'est pas tout à fait stable.

Le meilleur que j'ai entendu (pas l'expérience de première main) est berkleyDB. Mais à moins que vous opensource, ça va vous coûter un bras et une jambe à utiliser grâce à des licences...voir cette http://www.oracle.com/technology/software/products/berkeley-db/htdocs/licensing.html pour plus de détails.

ps. berkleyDB n'est pas une base de données relationnelle dans le cas où vous n'avez pas le savoir.

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