Frage

Ich brauche eine Speicherdateiformat für einige einfache Daten in tabellarischer Form zu schaffen, versuchte HDF5 zu verwenden, aber haben nur etwa aufgrund einiger Probleme gegeben, und ich möchte den Einsatz von Embedded-Datenbanken erneut zu prüfen, um zu sehen, wenn sie schnell genug für meine Anwendung.

Gibt es eine seriöse eingebettete Java-Datenbank gibt, die die Möglichkeit hat, Daten zu speichern, in einer Datei? Die einzige, die ich bin mir dessen bewusst ist SQLite (Java-Bindungen zur Verfügung). Ich habe versucht, H2 und HSQLDB aber aus der Box erscheinen sie mehrere Dateien zu erstellen, und es ist höchst wünschenswert für mich eine Datenbank in einer Datei zu haben.

Bearbeiten einigermaßen schnelle Leistung ist wichtig. Objektspeicher ist nicht; für Leistungsprobleme brauche ich nur ganze Zahlen und BLOBs zu speichern. (+ Einige Strings, aber nichts Leistung kritisch)

bearbeiten. 2: Speicherdateneffizienz ist für größere Datensätze wichtig, so XML ist aus

War es hilfreich?

Lösung 10

Ich denke, jetzt werde ich einfach weiter HDF5 für die dauerhafte Datenspeicherung verwendet werden, in Verbindung mit H2 oder einer anderen Datenbank für In-Memory-Indizierung. Ich kann nicht SQLite bekommen BLOBs zu verwenden, um mit dem Java-Treiber die ich habe, und ich kann nicht Firebird eingebettet aufstehen und laufen, und ich weiß nicht H2 Vertrauen mit PAGE_STORE noch.

Andere Tipps

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

  

NoSQL-Objekt (NO2 a.k.a Nitrite) Datenbank ist eine Open-Source-nosql   Embedded-Dokumentspeicher in Java mit MongoDB wie API geschrieben. Es   unterstützt sowohl im Speicher und einzelne Datei basierten persistente Speicher.

Wenn Sie nur Lesezugriff benötigen, dann ist H2 können lesen Zip-Datei .

Ebenso, wenn Sie Persistenz nicht brauchen ist es möglich, eine In-Memory-Version von H2 zu haben.

Wenn Sie sowohl Lese- / Schreibzugriff benötigen Zugriff und Ausdauer, dann können Sie mit Standard-SQL-Typ-Datenbanken kein Glück, da diese ziemlich alle gleichmäßig die Index- und Datendateien getrennt halten.

H2 verwendet nur eine Datei, wenn Sie die neueste H2 bauen mit der PAGE_STORE Option verwenden. Es ist eine neue Funktion, so dass es möglicherweise nicht fest sein.

Wenn ich eine Objektdatenbank verwendet, die ihre Daten in einer Datei gespeichert. Es verfügt über eine Java und .NET-Schnittstelle. Vielleicht möchten Sie es heraus überprüfen. Es heißt db4o .

Chronicle Map ist eine eingebettete reine Java-Datenbank.

  • Es speichert Daten in einer Datei, i. e.

    ChronicleMap<Integer, String> map = ChronicleMap
        .of(Integer.class, String.class)
        .averageValue("my-value")
        .entries(10_000)
        .createPersistedTo(databaseFile);
    
  • Chronik Karte ist reif (keine schwere Lagerung Bugs seit Monaten berichtet jetzt, während es im aktiven Gebrauch ist).

  • idependent Benchmarks zeigen, dass Chronicle Map die schnellste und die speichereffiziente Schlüssel-Wert-Speicher für Java.

Der große Nachteil für Ihren Anwendungsfall ist, dass Chronicle Karte nur ein einfaches Schlüssel-Wert-Modell unterstützt, jedoch komplexere Lösung auf es bauen könnte.

Disclaimer:. Ich bin der Entwickler Chronicle Karte

Wenn Sie für eine kleine und schnelle Datenbank suchen, um vielleicht mit einem anderen Programm zu versenden würde ich überprüfen Apache Derby ich weiß nicht, wie Sie embedded-Datenbank definieren würden, aber ich verwende, um dieses in einigen Projekten als Debugging-Datenbank, die mit der Quelle eingecheckt und sofort auf jeder Entwicklermaschine zur Verfügung steht werden kann.

Dies ist keine SQL-Engine, aber Wenn Sie Prevayler mit

Sie können wollen, um zu überprüfen JDBM - wir es an mehreren Projekten verwenden, und es ist ziemlich schnell . Es nicht verwendet 2-Dateien (eine Datenbankdatei und eine Protokolldatei), wenn Sie es für ACID-Typ-Anwendungen verwenden, aber Sie können direkt auf direkten Datenbankzugriff (keine Log-Datei) fallen, wenn Sie keine feste Säure benötigen.

JDBM leicht unterstützen ganze Zahlen und Blobs (alles, was Sie wollen), und ist ziemlich schnell. Es ist nicht wirklich für die Parallelität ausgelegt, so dass Sie sich die selbst Sperren verwalten, wenn Sie mehrere Threads haben, aber wenn Sie für eine einfache, solide eingebettete Datenbank suchen, ist es eine gute Option.

Da Sie SQLite erwähnt, gehe ich davon aus, dass Sie (solange gute Java-Bindungen sind vorhanden) nicht über eine native db ausmachen. Firebird gut mit Java arbeitet, und zwar einzelne Dateispeicher standardmäßig aktiviert.

Sowohl H2 und HSQLDB wäre eine ausgezeichnete Wahl sein, wenn Sie nicht die einzigen Datei Anforderung hatte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top