2 votes

La base de données la plus rapide librement redistribuable pour Java

Je suis à la recherche du meilleur logiciel de base de données pour une nouvelle application open source. Le critère principal est qu'il doit être rapide comme l'éclair pour effectuer des recherches parmi des dizaines de milliers d'entrées. L'idéal serait qu'il soit entièrement basé sur Java, mais une simple API Java est acceptable. Je cherche à obtenir une licence sous GPL et le projet doit donc être compatible avec cette licence. Jusqu'à présent, SQLite semble être la solution la plus répandue, mais je ne veux pas négliger une autre solution qui pourrait s'avérer meilleure.

Lorsque je fais des recherches sur l'internet en général, la plupart des résultats semblent concerner des bases de données d'objets. Je ne me soucie pas de savoir si la base de données est basée sur l'objet ou relationnelle, et je ne pensez à Je me soucie de savoir si c'est "NoSQL". J'ai beaucoup d'expérience avec MySQL mais je n'ai pas peur d'apprendre un nouveau langage de requête ou une nouvelle interface si c'est plus rapide. Le principal type de données à gérer est le nom des fichiers avec au moins 20 champs de métadonnées ; je voudrais avoir plusieurs ensembles de données avec les mêmes champs, et il serait bien de stocker également certaines préférences d'application dans la base de données.

Je constate, d'après certaines réponses, qu'il peut y avoir une certaine confusion quant à mon (ancienne) utilisation du terme "intégré" dans le titre. Je tiens à préciser que je veux dire "intégré dans l'application et redistribué" et non "utilisé sur un dispositif intégré". L'application vise actuellement les ordinateurs de grande taille, même si l'une des raisons pour lesquelles "l'idéal serait qu'elle soit entièrement basée sur Java" est une aspiration rêvée de créer une version Android.

3voto

tkeE2036 Points 3778

En fin de compte, cela dépend vraiment de votre application. SQLite n'est pas conçu pour être aussi robuste qu'un client standard. \server des bases de données comme Oracle et MySQL. Dans la FAQ de SQLite, on peut lire ce qui suit à ce sujet :

Toutefois, les moteurs de bases de données client/serveur (tels que PostgreSQL, MySQL ou Oracle) prennent généralement en charge un niveau de concurrence plus élevé et permettent à plusieurs processus d'écrire simultanément dans la même base de données. Cela est possible dans une base de données client/serveur car il y a toujours un seul processus serveur bien contrôlé disponible pour coordonner l'accès. Si votre application a besoin de beaucoup de concurrence, vous devriez envisager d'utiliser une base de données client/serveur. Mais l'expérience montre que la plupart des applications ont besoin de beaucoup moins de concurrence que ne l'imaginent leurs concepteurs.

Cela dit, SQLite est très rapide, mais là encore, cela dépend de la façon dont vous l'utiliserez et des plates-formes. Si vous l'utilisez sur un appareil embarqué, vous pouvez constater des différences de performances significatives par rapport à un ordinateur de bureau ordinaire. \server C'est pourquoi il est difficile de donner une réponse exacte. SQlite voit des gains de performance significatifs à partir de no en respectant la norme client \server modèle.

Le mieux est d'en choisir quelques-uns, comme SQLite, PostgreSQL, MySQL, et de voir les implications en termes de performances de chacun d'eux en effectuant des tests qui simulent des scénarios courants que vous rencontrerez dans votre application.

2voto

Omnaest Points 2511

Jetez un coup d'œil à http://www.polepos.org/ il existe un repère qui indique que http://www.db4o.com/ est l'une des bases de données embarquées les plus rapides.

J'ai personnellement travaillé avec db4o et c'est très bien. Il est sous licence GPL et devrait donc répondre à vos besoins.

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