Question

Je dois créer un format de fichier de stockage pour des données simples dans un format tabulaire, a été d'essayer d'utiliser HDF5 mais ont à peu près abandonné en raison de problèmes, et je voudrais revoir l'utilisation des bases de données embarquées pour voir si elles sont assez rapides pour mon application.

Y at-il une base de données Java fiable intégrée qui il a la possibilité de stocker des données dans un fichier? Le seul que je suis au courant est (bindings Java disponibles) SQLite. J'ai essayé H2 et HSQLDB mais hors de la boîte, ils semblent créer plusieurs fichiers, et il me est hautement souhaitable d'avoir une base de données dans un fichier.

modifier performances assez rapide est important. stockage d'objets n'est pas; pour des raisons de performances, je ne dois stocker des entiers et BLOBs. (+ Quelques chaînes, mais les performances de rien critique)

modifier 2:. Efficacité de données de stockage est important pour grands ensembles de données, de sorte que XML est sur

Était-ce utile?

La solution 10

Je pense que pour l'instant je vais juste continuer à utiliser HDF5 pour le stockage de données persistantes, en conjonction avec H2 ou d'une autre base de données pour l'indexation en mémoire. Je ne peux pas SQLite à utiliser avec le pilote BLOBs Java je l'ai, et je ne peux pas intégré Firebird et en cours d'exécution, et je ne fais pas confiance H2 avec PAGE_STORE encore.

Autres conseils

http://www.dizitart.org/nitrite-database.html

  

nosql objet (NO2 a.k.a Nitrite) est une base de données nosql Open Source   magasin de documents intégré écrit en Java avec MongoDB comme API. Il   soutient aussi bien en mémoire et unique magasin persistant à base de fichiers.

Si vous avez seulement besoin d'accès en lecture alors H2 est capable de lire les fichiers de base de données à partir d'un fichier zip .

De même si vous n'avez pas besoin persistance, il est possible d'avoir une seule version de H2 en mémoire.

Si vous avez besoin à la fois en lecture / écriture d'accès et de la persévérance, alors vous pouvez être hors de la chance avec les bases de données standards de type SQL, car ceux-ci à peu près tous les maintenir uniformément les fichiers d'index et de données séparément.

H2 utilise un seul fichier, si vous utilisez la dernière H2 construire avec l'option PAGE_STORE. Il est une nouvelle fonctionnalité, il pourrait ne pas être solide.

Une fois que je l'ai utilisé une base de données d'objet qui a sauvé ses données dans un fichier. Il a une Java et une interface .NET. Vous pouvez le vérifier. Il est appelé db4o .

Chronicle Carte est une base de données Java pur intégré.

  • Il stocke les données dans un fichier, i. e.

    ChronicleMap<Integer, String> map = ChronicleMap
        .of(Integer.class, String.class)
        .averageValue("my-value")
        .entries(10_000)
        .createPersistedTo(databaseFile);
    
  • Chronique carte est mature (pas de bugs de stockage signalés pendant des mois sévères maintenant, alors qu'il est en cours d'utilisation active).

  • repères de idependent montrent que Chronicle La carte est le plus rapide et la plus efficace de la mémoire magasin valeur clé pour Java.

L'inconvénient majeur pour votre cas d'utilisation est que Chronicle carte ne supporte qu'un modèle simple clé-valeur, mais une solution plus complexe pourrait être construit au-dessus de celui-ci.

Disclaimer:. Je suis le développeur de Chronicle Carte

Si vous êtes à la recherche d'une petite base de données rapide pour expédier peut-être avec un autre programme que je vérifierais Apache Derby Je ne sais pas comment vous définiriez-base de données intégrée, mais je présente dans certains projets en tant que base de données de débogage qui peut être vérifié avec la source et est disponible sur chaque machine de développeur instantanée.

Ce n'est pas un moteur SQL, mais si vous utilisez Prevayler avec

Vous pouvez consulter JDBM - nous l'utilisons sur plusieurs projets, et il est assez rapide . Il n'utilise 2 fichiers (un fichier de base de données et un fichier journal) si vous utilisez pour des applications de type ACID, mais vous pouvez déposer directement à l'accès directe à la base (pas de fichier journal) si vous n'avez pas besoin acide solide.

JDBM soutiendra facilement les entiers et les blobs (tout ce que vous voulez), et est assez rapide. Il est pas vraiment conçu pour la concurrence, donc vous devez gérer le verrouillage vous si vous avez plusieurs threads, mais si vous êtes à la recherche d'une base de données simple, intégré solide, il est une bonne option.

Puisque vous avez mentionné sqlite, je suppose que ça ne vous dérange pas un db natif (aussi longtemps que de bonnes liaisons java sont disponibles). Firebird fonctionne bien avec java, et ne le stockage de fichiers unique par défaut.

Les deux H2 et HSQLDB seraient d'excellents choix, si vous n'avez pas l'exigence d'un seul fichier.

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