Je dois créer un format de fichier de stockage pour certaines données simples dans un format tabulaire, essayait d'utiliser HDF5 mais d'avoir à peu près remis en raison de quelques problèmes, et je voudrais réexaminer l'utilisation de bases de données intégrées à voir S'ils sont assez rapides pour mon application. P>
Y a-t-il une base de données Java embarquée réputée qui a la possibilité de stocker des données dans un fichier? Le seul que je suis au courant est SQLite (Java Bindings disponible). J'ai essayé H2 et HSQLDB, mais hors de la boîte, ils semblent créer plusieurs fichiers, et il est hautement souhaitable pour moi d'avoir une base de données dans un fichier. P>
edit 2: strong> L'efficacité des données de stockage est importante pour les jeux de données plus importants, de sorte que XML est sorti. P>
10 Réponses :
Une fois que j'ai utilisé une base de données d'objet qui a enregistré ses données dans un fichier. Il a une interface Java et une interface .NET. Vous voudrez peut-être vérifier. C'est ce qu'on appelle DB4O . P>
+1: Pour mentionner DB4O, puisque je l'aurais posté si vous n'aviez pas
Si vous recherchez une base de données petite et rapide pour que vous navier avec un autre programme, je vérifierais Apache Derby < / a> Je ne sais pas comment vous définissez la base de données embarquée, mais j'ai utilisé cela dans certains projets en tant que base de données de débogage pouvant être vérifiée avec la source et est disponible sur chaque machine de développeur instantanée. P>
Apache Derby est maintenant le Java DB. En tant que tel, il est bien documenté et soutenu, et est probablement venu avec votre IDE.
Depuis que vous avez mentionné SQLite, je suppose que cela ne vous dérange pas de DB natif (tant que de bonnes liaisons Java sont disponibles). Firebird fonctionne bien avec Java et enregistre un seul fichier de fichiers par défaut. P>
H2 et HSQLDB serait d'excellents choix, si vous n'aviez pas l'exigence de fichier unique. P>
Utilisez-vous le pilote Jaybird?
Ce n'est pas un moteur SQL, mais si vous utilisez Prevayler avec XStream , vous pouvez facilement créer un seul fichier XML avec toutes vos données. (Prevayler appelle cela un fichier instantané.) P>
Bien que ce ne soit pas basé sur SQL, et nécessite donc une petite graisse au coude, sa nature autonome rend le développement (et en particulier des tests particulièrement) beaucoup plus facilement. De plus, il est incroyablement rapide et fiable. P>
Si vous n'avez besoin que d'un accès en lecture, H2 est capable de Lire les fichiers de la base de données d'un Fichier zip . P>
De même si vous n'avez pas besoin de persévérance, il est possible d'avoir une version en mémoire en mémoire de H2. P>
Si vous avez besoin d'un accès en lecture / écriture et de persistance, vous risquez de perdre de la chance avec des bases de données standard SQL-Type, car elles gagnent tous uniformément les fichiers d'index et de données séparément. P>
H2 utilise un seul fichier, si vous utilisez la dernière version H2 avec l'option Page_Store. C'est une nouvelle fonctionnalité, donc cela pourrait ne pas être solide. P>
Je pense que pour l'instant je vais continuer à utiliser HDF5 pour le stockage de données persistantes, conjointement avec H2 ou une autre base de données pour l'indexation en mémoire. Je ne peux pas obtenir SQLite d'utiliser des blobs avec le pilote Java que j'ai, et je ne peux pas me procurer Firebird intégré et courir, et je ne fais pas confiance à H2 avec page_store. P>
Vous voudrez peut-être consulter JDBM - Nous l'utilisons sur plusieurs projets, et il est assez rapide . Il utilise 2 fichiers (un fichier de base de données et un fichier journal) si vous l'utilisez pour les applications de type acide, mais vous pouvez déposer directement sur l'accès à la base de données directe (sans fichier journal) si vous n'avez pas besoin d'acide solide. P >
JDBM prendra facilement en charge les entiers et les blobs (tout ce que vous voulez), et est assez rapide. Il n'est pas vraiment conçu pour la concurrence, vous devez donc gérer le verrouillage de vous-même si vous avez plusieurs threads, mais si vous recherchez une base de données intégrée simple et solide, c'est une bonne option. P>
Un peu d'histoire amusante: Jan Kotek - L'un des derniers contributeurs JDBM, mais ce n'est certainement pas l'auteur original - a forcé le projet dans MAPDB et a fait un travail incroyable avec elle. MapDB n'est plus même à distance comme JDBM - il est préférable de tout concevable, et Jan continue d'impressionner. Mérite de vérifier.
carte de chronique est une base de données pure java intégrée.
Il stocke des données dans un fichier, i. e. p>
La carte de chronique est mature (aucun bogue de stockage sévère signalé depuis des mois maintenant, alors qu'il est actif). P> Li>
Les repères idéatiques montrent que la carte chronique est le plus rapide et Le plus efficace de la mémoire magasin de valeur de clé pour Java. P> Li>
ul> L'inconvénient majeur de votre cas d'utilisation est que la carte Chronicle ne prend en charge qu'un simple modèle de valeur de clé, mais une solution plus complexe pourrait être construite sur le dessus. P> Disclaimer: I ' m le développeur de la carte Chronicle. P> p>
Avez-vous essayé Apache Derby / Javadb? Je ne sais pas comment cela stocke des données dans les coulisses, mais c'est une autre chose que vous pouvez regarder.
Firebird rencontre définitivement l'exigence raisonnablement rapide. :)
Essayez github.com/jankotek/mapdb