Eingebettes Java-Datenbanksystem

Hallo,

weiß vielleicht jemand von Euch, ob es irgendein Pure-Java-Datenbanksystem gibt, das auf Basis direkten Dateizugriffs arbeitet (also NICHT Client-Server) und (mehr oder weniger) gleichzeitigen schreibenden Zugriff von mehrerer Benutzern erlaubt.
Es geht in erster Linie um dieses „von mehreren Benutzern“.
Weiß ehrlich gesagt nicht mal, ob das in pure-java überhaupt geht, da mir nicht bekannt ist, wie man da dateimäßiges Block-Locking oder ähnliches bewerkstelligen sollte.
Aber vielleicht geht’s ja doch…

Also wie es z. B. aus der Nicht-Java-Welt die Microsoft Jet-Engine von MS-Access macht oder SQLite.

Ob nun kostenlos oder nicht, sei erst mal egal.

1000 Dank

PS: … und (mein ich jetzt ganz höflich) bitte keine Vorträge über die Vorteile von C/S-DBMSs oder dass native Datenbanken java-basierten überlegen sind - das weiß ich selber ;o)…

HSQLDB
Schon HSQLDB betrachtet?

http://hsqldb.sourceforge.net/index.html

/Dirk

Hi Dirk,

ja, HSQLDB kenn ich natürlich … ist aber leider im „Standalone“-Betriebsmodus nur exklusiv von einem Benutzer/Prozess zu verwenden.

Na ja, aber wenn alle Stricke reißen, bau ich in mein Programm einfach ein, dass entweder HSQLDB für Single-User-Mode oder Firebird für Multi-User-Mode verwendet wird.

Wenn man halt irgend 'ne weniger wichtige Anwendug hat, die nur recht selten verwendet wird, dann find ich 'n C/S-Datenbanksystem immer bissi 'n Overkill … für sowas ist das Jet-DBMS z. B. erste Sahne und äußerst unkompliziert (wenn auch jeder immer daran rumnörgelt).

Anyway … many thanks…

Lala

Schon HSQLDB betrachtet?

http://hsqldb.sourceforge.net/index.html

/Dirk

Hallo,

schon mal McKoi angeschaut?
Ob da mehrere Benutzer drauf zugreifen können weiß ich allerdings nicht.

Gruß
Jodus

Hi Jodus,

McKoi bietet leider - wie hsqldb - Multi-User-Funktionalität nur im Client-/Server-Modus nicht im Embedded-Mode…

Aber thanks für die Info, McKoi kannte ich bisher nicht …

Peace
Lala

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi.
Es gibt von ObjectStore eine Personal Storage Edition, die nicht als eigenständiger Serverprozess, sondern innerhalb einer Applikation läuft. Multiuser-Zugriff, bzw. der Zugriff von mehrere Applikationen gleichzeitig aus ist möglich, solange der Zugriff nur lesend ist. Soll geändert werden, während andere User lesen, gibt es sehr schnell Probleme. Allerdings wird es kaum ein datenbankähnliches System geben, welches nicht als eigenständiger Prozess, also C/S läuft, und änderdne Zugriffe zulässt.
Allerdings ist PSE Pro ein objektorientiertes „Datenbanksystem“, also kein SQL oder ähnliches… aber der Einarbeitungsaufwand ist relativ gering. Vielleicht hilft Dir das weiter.
Viel Erfolg.

Tagchen,

1000 Dank für die Info.
Aber ich hab das in dem Manual nicht wirklich verstanden:

Heißt das, dass mehrere verschiedene JVMs gleichzeitig eine Read-Write-Datenbank-Verbindung haben können (also mit ObjectStore.UPDATE geöffnet) allerdings mit der Einschränkung, dass nur eine schreibende Transaktrion gleichzeitig ablaufen kann … und die anderen eventuell solange warten müssen, bis die Transaktion abgeschlossen ist (SQLite macht das z. B. wohl so ähnlich)

… oder heißt das, dass sobald sich schon jemand 'ne Lese-Schreib-Verbindung geholt hat, der nächste, der versucht die Datenbank im Lese-Schreib-Modus zu öffnen, schon gleich bei der Anmeldung abgewiesen wird und nur noch Lese-Modi akzeptiert werden???

Dass PSE Pro objektorientiert ist ist mir relativ egal, allerdings wäre 'ne Art Query-Sprache ganz nett, die zumindest einfache Filterungen und Verknüpfungen durchführt … bietet PSEPro sowas oder muss man sich da selber drum kümmern…???

Und last but not least: Was kostet der Spaß den so ganz grob???

Thanx und Grüße
Lala

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Mit allzu vielen Details kann ich Dir leider nicht weiter helfen. Es ist schon zwei Jahre her, dass ich mir PSEPro evaluiert habe und aufgrund der eingeschränkten Funktionalität haben wir uns dann für den großen Bruder ObjectStore entschieden, der als Server läuft.

Also im Prinzip ist es möglich, dass verschiedene JVMs gleichzeitig eine Datenbankverbindung zum Schreiben öffnen,…
Properties props = System.getProperties();
props.put( „com.odi.useDatabaseLocking“, „false“ );
Session session = Session.create(null,props);
Database myDatabase = Database.open(filename, ObjectStore.UPDATE_NON_BLOCKING );

Aber ich kann mich noch dran erinnern, dass einen das in Teufels Küche gebracht hat. Es gab Probleme, sobald eine JVM Daten manipuliert hat, wenn eine zweite JVM lesend zugegriffen hat. Falls so ein Szenario vorkommt, ist Pse Pro die falsche Wahl, fürchte ich.

Dass PSE Pro objektorientiert ist ist mir relativ egal,
allerdings wäre 'ne Art Query-Sprache ganz nett, die zumindest
einfache Filterungen und Verknüpfungen durchführt … bietet
PSEPro sowas oder muss man sich da selber drum kümmern…???

Es gibt eine Query-Klasse, womit man über persistente Collections suchen kann.

Und last but not least: Was kostet der Spaß den so ganz
grob???

Da wir PSE/Pro letztendlich nicht eingesetzt haben, weiss ich das nicht. Aber wirf am besten mal einen Blick auf www.objectstore.net.

Viel Erfolg & Grüße
Dantrag

[…]
Aber ich kann mich noch dran erinnern, dass einen das in
Teufels Küche gebracht hat. Es gab Probleme, sobald eine JVM
Daten manipuliert hat, wenn eine zweite JVM lesend zugegriffen
hat. Falls so ein Szenario vorkommt, ist Pse Pro die falsche
Wahl, fürchte ich.
[…]

D’oooh, das kann man dann ja wohl absolut erden … auf irgendwelche „Solange User-1 nicht das und das macht wenn User-2 gerade bla bla macht ist alles okay“-Geschichten sollte man sich wohl kaum verlassen.

Anyway, dann doch lieber Mehrbenutzerbetrieb ausschließlich in C/S-Umgebung…

Nochmal vielen Dank für die Hilfe

Grüße von Lala