J'ai l'intention de développer une petite application (Java) pour gérer mes finances. Je pense que j'ai besoin d'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 n'arrive pas à décider lequel me conviendrait le mieux. H2 , HSQLDB , Derby et Berkeley DB semblent être de bons candidats, mais je ne vois toujours pas comment ils se comparent. J'apprécie votre aide pour les comparer et m'aider à décider lequel utiliser.
J'ai l'intention d'utiliser Hibernate pour mon application (à moins que vous ne recommandiez d'utiliser l'API fournie par le SGBD), mais je souhaite é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).
Je vous remercie.
la source
Réponses:
Soit
ou
Celui que vous utilisez dépend de vous, en fonction des performances et de la stabilité dont vous avez besoin.
Le développeur de H2 a mis en place une belle évaluation des performances:
http://www.h2database.com/html/performance.html
la source
J'utilise Apache Derby pour à peu près tous mes besoins en bases de données intégrées. Vous pouvez également utiliser la base de données Java de Sun basée sur Derby, mais la dernière version de Derby est beaucoup plus récente. Il prend en charge de nombreuses options prises en charge par les bases de données commerciales natives, mais il 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 lorsqu'il était en incubateur chez Apache.
la source
J'avais besoin d'utiliser une base de données intégrée Java dans l'un de mes projets et j'ai fait de nombreuses recherches pour comprendre les avantages et les inconvénients de chaque base de données. J'ai écrit un blog répertoriant les avantages et les inconvénients des bases de données Java intégrées populaires (H2, HSQLDB, Derby, ObjectDB, Neo4j, OrientDB), vous pouvez y jeter un coup d'œil. J'ai choisi H2 car je pensais qu'il correspondait le mieux à mes besoins. Lien pour le blog: http://sayrohan.blogspot.in/2012/12/choosing-light-weight-java-database.html J'espère que cela aide!
la source
J'irais avec H2, la performance est censée être bien meilleure que Derby. Lisez http://www.h2database.com/html/performance.html pour plus d'informations.
la source
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 d'objets (au lieu d'une base de données relationnelle classique)?
J'ai utilisé DB4O dans l'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 conviens que cela peut prendre un certain temps pour s'habituer à ce nouveau type de base de données, mais consultez le didacticiel DB40 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/
la source
Java DB (la distribution Sun d'Apache Derby) est désormais disponible dans le JDK 6!
J'avais envie de faire quelque chose comme Jason Cohen et j'ai pensé que cela semble être le moyen le 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.
la source
Nous utilisons HSQLDB en production comme une option «sans configuration» pour notre application. Il permet aux utilisateurs de tester sans avoir à mettre en place une véritable base de données.
Cependant, nous ne le prenons pas en charge pour une utilisation normale. Les raisons sont multiples:
Pour au moins (2) et (3), il existe des moyens de contourner le problème, mais c'est difficile; c'est beaucoup plus facile par exemple d'installer MySQL.
la source
neo4j est:
Je n'ai pas encore eu l'occasion de l'essayer, mais cela semble très prometteur. Notez qu'il ne s'agit pas d'une base de données SQL - votre graphique d'objet est conservé pour vous - il peut donc ne pas convenir à votre application existante.
la source
Un bon outil de comparaison peut être trouvé ici: http://www.jpab.org/All/All/All.html
Remarquez également les comparaisons SGBD / JPA Head to Head
la source
La plupart des choses ont déjà été dites, mais je peux simplement ajouter que j'ai utilisé HSQL, Derby et Berkely DB dans quelques-uns de mes projets familiers et qu'ils ont tous très bien fonctionné. Donc je ne pense pas que ce soit vraiment important pour être honnête. Une chose à mentionner est que HSQL s'enregistre en tant que fichier texte avec des instructions SQL, ce qui est plutôt bien. Facilite grandement le développement de tests et de configuration rapide des données. Peut également faire des modifications rapides si nécessaire. Je suppose que vous pouvez facilement transférer tout cela dans n'importe quelle base de données si vous avez besoin de changer également :)
la source
HSQLDB peut poser des problèmes pour les applications volumineuses, ce n'est pas tout à fait stable.
Le meilleur que j'ai entendu (pas une expérience de première main cependant) est berkleyDB. Mais à moins que vous ne l'ouvriez, 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.
la source
Je suis un grand fan de DB4O pour .Net et Java .
Les performances sont devenues bien meilleures depuis les premières versions. Le modèle de licence n'est pas trop mal 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.
la source
Quels critères utiliserez-vous pour les évaluer? Si vous ne le savez pas encore, vous n'avez pas besoin de vous décider maintenant. Essayez de rendre votre application aussi indépendante que possible de l'implémentation de la base de données - en fournissant les wrappers appropriés, les objets d'accès aux données, etc., et prenez cette décision lorsque vous avez tous les faits sous la main et que 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 de disposer de nombreux tests environnants afin que, lorsque vous souhaitez basculer entre les bases de données, vous puissiez 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 utiliser, donc ma première solution a utilisé Derby (ou HSQLDB?), Et j'ai pu plus tard 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.
la source
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 nombre) <--> La conversion Varchar c'est une douleur.
Ainsi, si vous prévoyez d'utiliser des conversions de type de données dans vos instructions DB, envisagez d'utiliser une autre base de données intégrée, je l'apprends trop tard.
Dernières conversions du type de données de la version Derby
la source
Personnellement, je préfère HSQLDB, mais surtout parce que c'était le premier que j'ai essayé.
On dit que H2 est plus rapide et fournit une interface graphique plus agréable (qui est générique et fonctionne avec n'importe quel pilote JDBC, d'ailleurs).
Au moins HSQLDB, H2 et Derby fournissent des modes serveur, ce qui est idéal pour le développement, car vous pouvez accéder à la base de données avec votre application et certains outils en même temps (ce que le mode intégré ne permet généralement pas).
la source
Je suppose que je suis un peu en retard (beaucoup en retard ;-)) pour ce post, mais j'aimerais ajouter Prest, une base de données embarquée open source orientée objet pour Java et .NET. pour votre considération. Prest 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 Prest Lite pour Java ME. Nous avons même construit un benchmark Android et produit un livre blanc sur le sujet ... vous pouvez jeter un œil ici: http://www.mcobject.com/index.cfm?fuseaction=download&pageid=581§ionid=133
Tout le meilleur, Chris
la source
Si j'ai raison, H2 est des mêmes gars qui ont écrit HSQLDB. C'est beaucoup mieux si vous faites confiance aux benchmarks sur leur site. En outre, il y a une certaine idée que la communauté du soleil a sauté trop rapidement dans Derby.
la source
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 de considérer également DB4O , qui est une base de données d'objets très simple .
la source