Question

Je compte développer une petite application (Java) pour la gestion de mes finances. Je pense que je dois utiliser une base de données intégrée, mais je n'ai aucune expérience de ce problème. J'ai essayé de regarder certains des produits disponibles , mais je ne peux pas décider. lequel me conviendrait mieux. H2 , HSQLDB , Derby et Berkeley DB semble ê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.

Je souhaite utiliser Hibernate pour mon application (sauf si vous recommandez d'utiliser une API fournie par un SGBD), mais je souhaite également pouvoir 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.

Était-ce utile?

La solution

Soit

  • HSQLDB - Utilisé par OpenOffice, testé et stable. C'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 d'insertion.

ou

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

Le choix que vous utilisez dépend de vos performances et de votre stabilité.

Le développeur de H2 a réalisé une belle évaluation des performances:
http://www.h2database.com/html/performance.html

Autres conseils

J'utilise Apache Derby pour la quasi-totalité des besoins de ma base de données intégrée. 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. Certaines tables de base de données contenant plus d'un million d'enregistrements ne posent aucun problème.

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

J'avais besoin d'utiliser la base de données Java intégrée dans l'un de mes projets et j'ai effectué de nombreuses recherches pour comprendre les avantages et les inconvénients de chaque base de données. J'ai écrit un blog énumérant les avantages et les inconvénients des bases de données Java intégrées (H2, HSQLDB, Derby, ObjectDB, Neo4j, OrientDB), vous pouvez y jeter un coup d'œil. J'ai choisi H2 car je pensais que cela répondait le mieux à mes besoins. Lien vers le blog: http://sayrohan.blogspot.in/2012/12 /choosing-light-weight-java-database.html J'espère que ça aide!

Je choisirais H2, la performance est bien meilleure que Derby. Lisez http://www.h2database.com/html/performance.html pour plus d'informations. .

HSQLDB est un bon candidat (son utilisation dans OpenOffice peut convaincre certains d'entre vous), mais 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 l'un de mes projets et j'en suis très satisfait. Étant orienté objet, vous n'avez pas besoin de l'intégralité de 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 qu'il faudra peut-être un peu de temps pour s'habituer à ce nouveau type de base de données, mais vérifiez 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 versions les plus récentes 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/

base de données Java (distribution d'Apache Derby de Sun) expédie dans JDK 6!

Je voulais faire quelque chose comme Jason Cohen et je pensais que cela semblait être le moyen le plus simple d’être dans la distribution JDK (ce qui est maintenant une exigence de mon application). Ou peut-être que je suis juste paresseux de cette façon.

Nous utilisons HSQLDB en production comme " no-configuration " option pour notre application. Il permet aux utilisateurs de faire des essais sans avoir à configurer une véritable base de données.

Toutefois, nous ne le supportons pas pour une utilisation normale. Les raisons sont multiples:

  1. ralentit proportionnellement à la taille des données.
  2. Difficile d'accéder en dehors de notre application (par exemple, pour les rapports personnalisés).
  3. Les transactions / synchronisation de disque sont difficiles à obtenir, il est donc facile de perdre des données.

Pour au moins (2) et (3), il existe des solutions, mais c’est difficile; c'est beaucoup plus facile de, par exemple installez MySQL.

neo4j est:

  

un moteur de persistance Java intégré, 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 qu'il ne s'agit pas d'une base de données SQL - votre graphe d'objets est conservé pour vous - il est donc peut-être inapproprié pour votre application existante.

Un bon outil de comparaison est disponible ici: http://www.jpab.org/All/All/All .html

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

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

Les performances sont 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. Interroger par exemple est très puissant et facile à utiliser.

Quels critères utiliserez-vous pour les évaluer? Si vous ne le savez pas encore, vous n'avez pas besoin de décider maintenant. Essayez de rendre votre application aussi indépendante que possible de la base de données - en fournissant les wrappers, objets d'accès aux données appropriés, etc., et prenez cette décision lorsque vous avez tous les faits en main et que vous devez décider.

Si vous utilisez des bases de données relationnelles et SQL, la procédure ci-dessus ne devrait pas être trop difficile (utilisation de JDBC, etc.). Assurez-vous de disposer de nombreux tests afin que, lorsque vous souhaitez passer d'une base de données à une autre, 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 choisir, ma première solution utilisait donc Derby (ou HSQLDB?), Et j'ai ensuite été en mesure de passer à HSQLDB (ou Derby? Je ne me souviens plus de la solution qui fonctionnait) une fois que j'avais déterminé où J'avais des problèmes (liés à la performance) et quelle solution fonctionnerait vraiment pour moi.

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 pour animaux de compagnie et qu'ils ont tous bien fonctionné. Donc, je ne pense pas que cela soit vraiment important pour être honnête. Une chose à noter est que HSQL se conserve comme un fichier texte avec des instructions SQL, ce qui est très bon. Il est très facile pour les développeurs de faire rapidement des tests et des données de configuration. Peut également faire des modifications rapides si nécessaire. Je suppose que vous pourriez facilement transférer tout cela dans n’importe quelle base de données si vous aviez besoin de changer aussi:)

HSQLDB peut poser des problèmes pour les grandes applications, ce n’est pas aussi stable.

Le meilleur que j'ai entendu parler (pas l'expérience de première main cependant) est berkleyDB. Mais à moins que vous ne l'utilisiez en open source, cela vous coûtera un bras et une jambe à utiliser en raison de la licence ... voyez 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.

J'ai utilisé Derby et je déteste vraiment ses fonctions de conversion de type de données, en particulier les fonctions de date / heure. (Type de numéro) & Lt; - & Gt; La conversion de Varchar est une douleur.

Pour que, si vous envisagez d'utiliser des conversions de types de données dans vos instructions de base de données, envisagez l'utilisation de la base de données intégrée, je l'apprends trop tard.

dernières conversions de types de données de la version Derby

Personnellement, je préfère HSQLDB, mais surtout parce que c’est le premier que j’ai essayé.

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

Au moins HSQLDB, H2 et Derby fournissent des modes serveur, ce qui est excellent 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).

Je suppose que je suis un peu en retard (beaucoup en retard ;-)), mais j'aimerais ajouter Prest, une base de données intégrée open source et 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 inclut également Prest Lite pour Java ME. Nous avons même mis au point un test de performance sur Android et produit un livre blanc sur le sujet. Vous pouvez y jeter un coup d'œil ici: http://www.mcobject.com/index.cfm?fuseaction=download & amp; pageid = 581 & amp; sectionid = 133

Tout le meilleur, Chris

Si je ne me trompe pas, H2 appartient aux mêmes auteurs de HSQLDB. C'est beaucoup mieux si vous faites confiance aux tests de performance sur leur site. De plus, certains pensent que la communauté du soleil est entrée trop rapidement dans Derby.

Je me rends compte que vous avez parlé de la navigation SQL, mais tout le reste de votre question me donne envie de vous suggérer d’envisager également de DB4O , qui est une base de données d'objet simple et géniale .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top