Comparaison des bases de données Embarquées Java [fermé]


J'ai l'intention de développer une petite application (Java) pour gérer mes finances. Je crois que je dois utiliser une base de données intégrée, mais je n'ai aucune expérience concernant ce problème. J'ai essayé de regarder certains des produits disponibles, mais je ne peux pas décider lequel me conviendrait le mieux. H2, BSQDB, Derby et Berkeley DB semblent être de bons candidats, mais je ne vois toujours pas comment ils se comparent les uns aux autres. J'apprécie votre aide en les comparant et de m'aider à décider lequel utiliser.

J'ai l'intention d'utiliser Hibernate pour mon application (sauf si vous recommanderiez d'utiliser l'API fournie par le SGBD), mais je veux également avoir la possibilité de modifier facilement la base de données à l'aide d'un outil de navigation SQL (modification du schéma et modification des données).

Merci.

Author: Hosam Aly, 2009-01-20

18 answers

Soit

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

Ou

  • H2 - Dit plus rapide (par le développeur, qui a également conçu hsqldb)

Celui que vous utilisez dépend de vous, en fonction de la performance et de la stabilité dont vous avez besoin.

Le développeur de H2 a mis en place un joli évaluation du rendement:
http://www.h2database.com/html/performance.html

 55
Author: Sven Lilienthal, 2009-01-20 22:12:47

J'utilise Apache Derby pour à peu près tous mes besoins en base de données embarquée. Vous pouvez également utiliser Java DB de Sun qui est basé sur Derby mais la dernière version de Derby est beaucoup plus récente. Il prend en charge de nombreuses options que les bases de données natives commerciales prennent en charge, mais est beaucoup plus petit et plus facile à intégrer. J'ai eu des tables de base de données avec plus d'un million d'enregistrements sans problème.

J'utilisais HSQLDB et Hypersonic il y a environ 3 ans. Il a quelques problèmes de performances majeurs à l'époque et Je passe à Derby à cause de ces problèmes. Derby a été solide même quand il était en incubateur chez Apache.

 33
Author: Chris Dail, 2008-09-11 19:03:59

J'avais besoin d'utiliser Java embedded database dans l'un de mes projets et j'ai fait beaucoup de recherches pour comprendre les avantages et les inconvénients de chaque base de données. J'ai écrit un blog listant les avantages et les inconvénients des bases de données java embarquées populaires (H2, HSQLDB, Derby, ObjectDB, Neo4j, OrientDB), vous pouvez y jeter un oeil. J'ai choisi H2 car je pensais qu'il convenait le mieux à mes besoins. Lien pour le blog: http://sayrohan.blogspot.in/2012/12/choosing-light-weight-java-database.html Espérons que cela aide!

 25
Author: Rohan Karwa, 2013-02-03 22:57:52

J'irais avec H2, la performance est destinée à beaucoup mieux que Derby. Lire http://www.h2database.com/html/performance.html pour plus d'informations.

 20
Author: K2J, 2009-02-25 15:57:33

HSQLDB est un bon candidat (le fait qu'il soit utilisé dans OpenOffice peut en convaincre certains d'entre vous), mais pour une si petite application personnelle, pourquoi ne pas utiliser une base de données objet (au lieu d'une base de données relationnelle classique) ?

J'ai utilisé DB4O dans un de mes projets, et j'en suis très satisfait. Étant orienté objet, vous n'avez pas besoin de toute la couche Hibernate et pouvez directement insérer/mettre à jour/supprimer/interroger des objets ! De plus, vous n'avez pas à vous soucier du schéma, vous travaillez directement avec les objets et DB4O fait le reste !

Je suis d'accord que cela peut prendre un certain temps pour s'habituer à ce nouveau type de base de données, mais vérifiez le DB40 tutorial pour voir à quel point il est facile de travailler avec la base de données !

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

 14
Author: Wookai, 2009-01-20 22:03:11

Java DB (distribution de Sun d'Apache Derby) est maintenant livré dans JDK 6!

J'ai voulu faire quelque chose comme Jason Cohen et j'ai pensé que cela ressemblait à la façon la plus simple d'être dans la distribution JDK (qui de la semaine dernière est maintenant une exigence pour mon application). Ou peut-être que je suis juste paresseux de cette façon.

 11
Author: Stu Thompson, 2013-02-06 19:46:58

Nous utilisons HSQLDB en production comme une option "sans configuration" pour notre application. Il permet aux gens de tester sans les tracas de la mise en place d'une base de données réelle.

Cependant, nous ne le prenons pas en charge pour une utilisation normale. Les raisons sont multiples:

  1. Ralentit proportionnellement à la taille des données.
  2. Difficile d'accès en dehors de notre application (par exemple, pour les rapports personnalisés).
  3. Transactions / disk-sync est difficile à obtenir, il est donc facile de perdre données.

Pour au moins (2) et (3), il existe des moyens de le contourner mais c'est difficile; il est beaucoup plus facile d'installer MySQL, par exemple.

 7
Author: Jason Cohen, 2008-09-11 17:26:52

Neo4j est:

Un moteur de persistance Java intégré, basé sur disque et entièrement transactionnel qui stocke les données structurées dans des graphiques plutôt que dans des tableaux

Je n'ai pas encore eu l'occasion de l'essayer - mais cela semble très prometteur. Notez que ce n'est pas une base de données SQL - votre graphique d'objet est persisté pour vous - il peut donc ne pas être approprié pour votre application existante.

 7
Author: devstopfix, 2008-09-12 11:03:14

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

Notez également les comparaisons Tête à tête SGBD/JPA

 5
Author: Uros Majeric, 2013-11-13 22:16:10

Je suis un grand fan de DB4O pour.Net et Java.

Les performances sont devenues beaucoup meilleures depuis les premières versions. Le modèle de licence n'est pas trop mauvais non plus. J'aime particulièrement les options disponibles pour interroger vos objets. La requête par exemple est très puissante et facile à utiliser.

 4
Author: Kilhoffer, 2008-09-11 17:26:43

Quels critères utiliserez-vous pour les évaluer ? Si vous ne connaissez pas encore, alors vous n'avez pas besoin de décider maintenant. Essayez de rendre votre application aussi agnostique que possible - en fournissant les wrappers appropriés, les objets d'accès aux données, etc., et prendre cette décision quand vous avez tous les faits à portée de main et vous devez décider.

Si vous utilisez des bases de données relationnelles et SQL, ce qui précède ne devrait pas être trop difficile (en utilisant JDBC, etc.). Assurez - vous d'avoir beaucoup de tests environnants de sorte que lorsque vous souhaitez basculer entre les bases de données, vous pouvez déterminer que les fonctionnalités de votre application restent les mêmes.

J'ai rencontré le même problème il y a quelque temps. Je ne savais pas quelle base de données choisir, donc ma première solution a utilisé Derby (ou HSQLDB?), et j'ai ensuite pu passer à HSQLDB (ou Derby ? Je ne me souviens pas quelle solution fonctionnait) une fois que j'avais déterminé où j'avais des problèmes (liés aux performances) et quelle solution fonctionnerait vraiment pour moi.

 4
Author: Brian Agnew, 2009-01-20 22:23:33

La plupart des choses ont déjà été dites, mais je peux juste ajouter que j'ai utilisé HSQL, Derby et Berkely DB dans quelques-uns de mes projets pet et ils ont tous très bien fonctionné. Donc, je ne pense pas que cela compte vraiment beaucoup pour être honnête. Une chose à mentionner est que HSQL s'enregistre sous forme de fichier texte avec des instructions SQL, ce qui est assez bon. Il est vraiment facile lorsque vous développez de faire des tests et de configurer rapidement les données. Peut également faire des modifications rapides si nécessaire. Devinez que vous pourriez facilement transférer tout cela à n'importe quel base de données si vous avez besoin de changer aussi:)

 4
Author: willcodejavaforfood, 2009-01-20 22:41:32

HSQLDB peut causer des problèmes pour les grandes applications, ce n'est pas si stable.

Le meilleur que j'ai entendu (pas d'expérience de première main cependant) est berkleyDB. Mais à moins que vous l'opensource, cela vous coûtera un bras et une jambe à utiliser en raison de la licence...voir ceci 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 au cas où vous ne le sauriez pas.

 4
Author: Chii, 2009-01-21 10:00:50

J'ai utilisé Derby et je déteste vraiment ses fonctions de conversion de type de données, en particulier les fonctions date/heure. (Type de numéro) > Conversion Varchar c'est une douleur.

De sorte que si vous prévoyez d'utiliser des conversions de type de données dans vos instructions DB, considérez l'utilisation d'othe embedded DB, je l'apprends trop tard.

Dernière version Derby conversions de type de données

 3
Author: Telcontar, 2008-09-12 10:19:01

Si je suis correct, H2 provient des mêmes gars qui ont écrit HSQLDB. C'est beaucoup mieux si vous faites confiance aux repères sur leur site. En outre, il y a une certaine idée que la communauté sun a sauté trop rapidement dans Derby.

 3
Author: smartnut007, 2010-11-02 03:43:18

Personnellement, je suis favorable à HSQLDB, mais surtout parce que c'était le premier que j'ai essayé.

H2 est dit être plus rapide et fournit une interface GRAPHIQUE plus agréable (qui est générique et fonctionne avec n'importe quel pilote JDBC, en passant).

Au moins HSQLDB, H2 et Derby fournissent des modes serveur qui sont parfaits pour le développement, car vous pouvez accéder à la BASE de données avec votre application et un outil en même temps (ce que le mode intégré ne permet généralement pas).

 2
Author: Joachim Sauer, 2009-01-20 20:39:47

Je me rends compte que vous avez mentionné la navigation SQL, mais tout le reste dans votre question me donne envie de vous suggérer également de considérer DB4O, qui est un grand objet simple DB.

 2
Author: Fabian Steeg, 2009-01-20 21:42:42

Je suppose que je suis un peu en retard (beaucoup en retard;-)) à ce post, mais j'aimerais ajouter Perst, une base de données intégrée open source et orientée objet pour Java &.NET. pour votre considération. Perst est une base de données intégrée open source / double licence pour Java. La distribution est compatible avec la plate-forme Android de Google, et comprend également Perst Lite pour Java ME. Nous avons même construit un benchmark Android et produit un livre blanc sur le sujet...vous pouvez prendre un coup d'oeil ici: http://www.mcobject.com/index.cfm?fuseaction=download&pageid=581&sectionid=133

Tout le meilleur, Chris

 2
Author: , 2009-09-15 14:05:23