# HSQLDB Mehrbenutzerbetrieb



## peppermint (25. Jan 2005)

Hi Leute

Ich hab ne Frage zu HSQLDB

Und zwar hab ich die Datenbankdateien auf nem Server liegen und möchte aber die Datenbank selber (also HSQLDB) erst bei Programmstart starten.
Auf dem Server selbst soll also keine Datenbank an sich laufen, sondern dort sollen nur die Dateien liegen, damit alle angeschlossenen PC Zugriff drauf haben.

Mit HSQLDB an sich kein Problem, so weit ich informiert bin. Man kann dort die Datenbanksoftware, also das JAR, so in sein Programm einbinden, dass diese automatisch bei Programmstart gestartet wird und sich bei Programende wieder beendet.

Nun meine Frage:

Sperrt HSQLDB dann Datensätze, auf die es gerade zugreift, da es passieren kann, dass von mehreren PC gleichzeitig auf die Daten auf dem Server zugegriffen wird. Immer mit dem selben Programm, aber halt jedes Programm hat seine eigene HSQLDB...
Wenn dies nicht der Fall wäre, könnte sich nämlich das gesamte Ding aufhängen, oder die Daten könnten inkosistent werden.

Oder kann man wenigstens verhindern, dass 2 oder mehr Programme gleichzeitig auf die Daten auf dem Server zugreifen...

Hoff hab mein Problem so früh am morgen einigermaßen verstädlich ausgedrückt


----------



## Grizzly (25. Jan 2005)

Ich würde an Deiner Stelle nicht probieren mit 2 Programmen gleichzeitig auf die Datenbank-Dateien zuzugreifen. Die Wahrscheinlichkeit, dass das schief geht, liegt bei 99,999%. Der einzige Umstand, unter dem das funktionieren könnte, wäre, wenn die Datenbank nur zum Lesen geöffnet werden würde.

Warum startest Du die HSQLDB Datenbank nicht auf dem Server als Server? Einen Server bringt HSQLDB nämlich schon mit. Dann können allen Clients ganz normal, wie bei jedem anderen Datenbank-Server, zum Server eine Verbindung aufbauen. Zugriffsüberschneidungen würden dann vom Server gelöst werden.


----------



## AlArenal (25. Jan 2005)

Wenn du HSQLDB in dein Programm integrierst, kann nur eine Verbindung aufgebaut werden. Wenn ich mich recht entsinne hatte ich nämlich auch mal entsprechende Fehler, ehe mir klar wurde, das man immer nur eine Connection aufmachen kann.

D.h. du kannst die DB-Dateien auch nicht zwischen mehreren Instanzen sharen, weil die sich dann gegenseitig die Daten zerwürfeln, bzw. evtl auch gar keinen Zugriff bekommen, weil die Dateien bereits geöffnet (und gesperrt) sind.

Lass HSQLDB im Server-Modus laufen, dann kannste mit mehreren Clients parallel zugreifen. Ansonsten würde ich passenderweise deine Fragen mal im Scourceforge-Support-Forum von HSQLDB stellen


----------



## peppermint (25. Jan 2005)

Dass mit dem Server is ne gute Idee... die ja auch nahe liegt, nur hat der SysAdmin der Firma was dagegen, auf dem Server das zu installieren...  :bahnhof: 

Drum wärs mir halt lieber, wenns anderst geht, aber trotzdem schon mal danke für eure Tipps.

Dass mit dem SupportForum in SourceForge is ne gute Idee... werd ich mal machen.

Aber falls noch jemand was weiß :

Nur zu


----------



## AlArenal (25. Jan 2005)

Der will auf dem Server nichts installieren, aber auf den Clients? SysAdmins muss m an manchmal etwas treten. Oft nehmen sie sich wichtiger als sie sind. Entweder will man eine Software haben oder nicht. Seit wann entscheidet das der SysAdmin?


----------



## peppermint (25. Jan 2005)

Schon klar... seh ich genauso...  :roll: 

Aber er will halt net...
Wenns keine andere Möglichkeit gibt, dann muss ichs auf dem Server installieren. Aber im Prinzip reichts auch, wenn die komplette Datenbank gesperrt ist, und nur ein Programm darauf zugreifen kann, also kein wirklicher Mehrbenutzerbetrieb... vielleicht ist ja wenigstens dass möglich  :?:
(So weit ich deinen Post oben verstanden hab, müsste dass doch gehen..., auch wenn aufm Server kein Server läuft... also dort nur die Dateien liegen)


----------



## AlArenal (25. Jan 2005)

Wenn auf dem Server nur die Daten liegen, der Server also nur als File-Server arbeitet, dann müsstest du die ANwendung im Grunde so schreiben, dass dein Programm das erkennt und entsprechend ne Fehlermeldung an den Benutzer ausgibt, wenn die Daten bereits in Benutzung sind. Vielleicht wäre es sinnvoll dazu eine Lock-Datei zusätzlich in ddas Verzeichnis zu schreiben, wenn dein Programm läuft, so dasss andere, wenn sie das Programm starten wollen, aus dieser Datei auslesen können, wer da gerade dran arbeitet. Sonst sucht man unter Umständen ewig, welcher Bräsi da über die Mittagspause das Programm nicht geschlossen hat #

Dennoch würde ich mir einen suchen, der was zu sagen hat und der solltem dem Sysadmin mal ne Ansage erteilen. Er ist schließlich Sysstem-Administrator und nicht Geschäftsführer


----------



## peppermint (25. Jan 2005)

OK, danke für deine Hilfe...

Mal schaun, wie ich das ganze jetzt lös...  :?


----------

