Java eingebettete Datenbank w / Fähigkeit, als eine Datei zu speichern

8

Ich muss ein Speicherdateiformat für einige einfache Daten in einem Tabellenformat erstellen, habe versucht, HDF5 zu verwenden, aber habe wegen einiger Probleme gerade aufgegeben, und ich möchte die Verwendung von eingebetteten Datenbanken überprüfen, um zu sehen wenn sie schnell genug für meine Anwendung sind.

Gibt es eine seriöse eingebettete Java-Datenbank, die Daten in einer Datei speichern kann? Die einzige, die mir bekannt ist, ist SQLite (Java-Bindungen verfügbar). Ich habe H2 und HSQLDB ausprobiert, aber aus der Box scheinen sie mehrere Dateien zu erstellen, und es ist sehr wünschenswert für mich, eine Datenbank in einer Datei zu haben.

edit: halbwegs schnelle Leistung ist wichtig. Objektspeicher ist nicht; Für Performance-Probleme muss ich nur ganze Zahlen und BLOBs speichern. (+ einige Zeichenfolgen, aber nichts Leistungskritisches)

2: Die Speicherdateneffizienz ist für größere Datenmengen wichtig, daher ist XML out.

    
Jason S 21.07.2009, 17:00
quelle

10 Antworten

0

Ich denke, für den Moment werde ich weiterhin HDF5 für den persistenten Datenspeicher verwenden, in Verbindung mit H2 oder einer anderen Datenbank für In-Memory-Indizierung. Ich kann SQLite nicht dazu bringen, BLOBs mit dem Java-Treiber zu benutzen, den ich habe, und ich kann Firebird nicht embedded laufen lassen, und ich vertraue H2 mit PAGE_STORE noch nicht.

    
Jason S 21.07.2009, 18:48
quelle
3

Wenn Sie nur Lesezugriff benötigen, kann H2 die Datenbankdateien aus einer Zip-Datei lesen .

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

Wenn Sie sowohl Lese- / Schreibzugriff als auch Persistenz benötigen, können Sie mit Datenbanken vom Standard-SQL-Typ keinen Erfolg haben, da diese die Index- und Datendateien weitgehend einheitlich verwalten.

    
toluju 21.07.2009 18:24
quelle
3

H2 verwendet nur eine Datei, wenn Sie den neuesten H2-Build mit der Option PAGE_STORE verwenden. Es ist ein neues Feature, daher ist es möglicherweise nicht solide.

    
Steve McLeod 21.07.2009 18:28
quelle
2

Ich habe einmal eine Objektdatenbank verwendet, die ihre Daten in einer Datei gespeichert hat. Es hat eine Java- und eine .NET-Schnittstelle. Vielleicht möchten Sie es überprüfen. Es heißt db4o .

    
Savvas Dalkitsis 21.07.2009 17:03
quelle
1

Wenn Sie nach einer kleinen und schnellen Datenbank suchen, die vielleicht mit einem anderen Programm geliefert wird, würde ich Apache Derby überprüfen Ich weiß, wie Sie Embedded-Datenbank definieren würden, aber ich habe dies in einigen Projekten als Debugging-Datenbank verwendet, die mit der Quelle eingecheckt werden kann und sofort auf jeder Entwickler-Maschine verfügbar ist.

    
Janusz 21.07.2009 17:06
quelle
1

Dies ist keine SQL-Engine, aber wenn Sie Prevayler mit XStream , können Sie einfach eine einzige XML-Datei mit all Ihren Daten erstellen. (Prevayler nennt es eine Snapshot-Datei.)

Obwohl es nicht SQL-basiert ist und daher ein wenig Ellenbogenfett benötigt, macht seine in sich geschlossene Natur die Entwicklung (und besonders das Testen) viel einfacher. Außerdem ist es unglaublich schnell und zuverlässig.

    
William Pietri 21.07.2009 17:12
quelle
1

Vielleicht möchten Sie jdbm auschecken - wir verwenden es für mehrere Projekte und es ist ziemlich schnell. Es verwendet 2 Dateien (eine Datenbankdatei und eine Protokolldatei), wenn Sie es für Apps vom Typ ACID verwenden. Sie können jedoch direkt auf den Datenbankzugriff zugreifen (keine Protokolldatei), wenn Sie keine feste ACID benötigen.

>

JDBM unterstützt ganz einfach Integer und Blobs (alles, was Sie wollen) und ist ziemlich schnell. Es ist nicht wirklich auf Parallelität ausgelegt, daher müssen Sie die Sperre selbst verwalten, wenn Sie mehrere Threads haben. Wenn Sie jedoch nach einer einfachen, soliden eingebetteten Datenbank suchen, ist dies eine gute Option.

    
Kevin Day 22.07.2009 03:19
quelle
1

Chronikkarte ist eine eingebettete reine Java-Datenbank.

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

    %Vor%
  • Die Chronikkarte ist ausgereift (keine schwerwiegenden Speicherfehler, die seit Monaten gemeldet werden, solange sie aktiv sind).

  • Indiedative Benchmarks zeigen, dass die Chronikkarte die schnellste und der speichereffizienteste Schlüsselwertspeicher für Java.

Der Hauptnachteil für Ihren Anwendungsfall ist, dass die Chronikkarte nur ein einfaches Schlüsselwertmodell unterstützt, jedoch könnte eine komplexere Lösung darauf aufgebaut werden.

Haftungsausschluss: Ich bin der Entwickler der Chronicle Map.

    
leventov 08.07.2016 11:58
quelle
1

Nitrit-Datenbank Ссылка

  

NOsql-Objekt (NO2 a.k.a Nitrit) -Datenbank ist eine Open-Source-Nosql   Embedded-Dokumentspeicher in Java mit MongoDB wie API geschrieben. Es   unterstützt sowohl den speicherinternen als auch den einzelnen Datei-basierten persistenten Speicher.

    
Doua Beri 24.11.2017 15:43
quelle
0

Da Sie sqlite erwähnt haben, nehme ich an, dass Sie nichts gegen eine native db haben (solange gute Java-Bindings verfügbar sind). Firebird funktioniert gut mit Java und speichert standardmäßig einzelne Dateien.

Sowohl H2 als auch HSQLDB wären eine ausgezeichnete Wahl, wenn Sie nicht die einzige Dateianforderung hätten.

    
jsight 21.07.2009 17:06
quelle

Tags und Links