Hallo,
ist es möglich eine Datenbank anzulegen ohne einen Server? Ich möchte
ein Java Programm schreiben, um Kunden Datensätze zu speichern. Die
Datenbank müsste für ca. 6 Personen im Büro kleichzeitig erreichbar
sein. Standort der Datenbank wäre auf einem externen PC der für alle
erreichbar ist.
Bitte um Vorschläge!
Dieter schrieb:> ist es möglich eine Datenbank anzulegen ohne einen Server? Ich möchte> ein Java Programm schreiben, um Kunden Datensätze zu speichern. Die> Datenbank müsste für ca. 6 Personen im Büro kleichzeitig erreichbar> sein. Standort der Datenbank wäre auf einem externen PC der für alle> erreichbar ist.
Prinzipiell ist das machbar, wenn du den Begriff "gleichzeitig" nicht
peinlich genau verstehst. Denn während es kein Problem ist, 6 PCs
gleichzeitig auf Files lesend zugreifen zu lassen, klappt es nicht
wirklich gut, wenn mehr als einer davon die Datenbank-Files verändert.
Du musst also ein entsprechendes Locking implementieren.
Andererseits stellt sich natürlich die Frage nach dem tieferen Grund
deiner Aversion gegen einen Datenbank-Server wenn du ohnehin schon einen
externen PC als Fileserver vorsiehst, der wohl ebensogut statt dessen
einen Datenbankserver abgeben könnte. Wobei ich mal davon ausgehe, dass
du kein 1TB CRM realisieren willst.
Ich arbeiter in einer großen Firma und für diese geringe Menge von Daten
wird mir kein Server genehmigt. Die beste möglichkeit wäre eine Datei
für alle erreichbar irgendwo abzulegen.
Der Begriff "Server" ist sehr relativ. Es gibt bereits NAS-Laufwerke,
auf denen ein MySQL läuft, so ab 150,- Euro ... das sollte doch wohl
machbar sein.
"Standort der Datenbank wäre auf einem externen PC der für alle
erreichbar ist."
Damit ist es aus Sicht des Programmierers ein Server, auch wenn dieser
weder ausschliesslich Serveraufgaben übernimmt noch in einen
Serverschrank eingebaut wird. Dazu benötigst Du eine
Datenbank-Server-Software (zB Mysql, entsprechende HSQLDB-Variante..).
Evtl lässt Du sie auch auf einem bereits vorhandenen "richtigen" Server
mitlaufen wenn es im Büro einen gibt*
Von Versuchen, wirklich für Einzelplatzbetrieb gedachte Datenbankformate
(SQLite, Access MDB, Paradox...) via Fileserver/"Freigaben" verteilt zu
nutzen, sei jedem kategorisch abgeraten der noch fragen muss warum das
zu Problemen führen kann.
Wäre HSQLDB nicht evtl das richtige, wenn das Programm eh in Java
geschrieben ist?
Wenn mit "externem PC" ein Rechner gemeint ist der direkt offen im
Internet steht, dann solltest Du sehr sorgfältig sicherstellen dass die
Sicherheitseinstellungen der gewählten Datenbanksoftware korrekt und
verstanden sind.
"wird mir kein Server genehmigt"
Hatte gepostet bevor Du das geschrieben hast.
Das braucht auch keinen dedizierten Server. Aber Dienste jeglicher Art
auf Arbeitsplatzrechner zu legen ist, sobald es irgendeine Alternative
dazu gibt, die pessimale Lösung.
Dieter schrieb:> ich meinte eine externe Festplatte, bei der man nichts aussführen kann.
viele Festplatten (NAS) können aber etwas auführen - was ist das denn
für eine Festplatte?
mit firebird embedded geht das (angeblich) inzwischen
Embedded Server Notes
The embedded server in the Windows library, fbembed.dll, now uses
Superclassic, not Superserver as previously, thus unifying its model
with that of local connection to Superclassic on POSIX. The database
file-lock that previously restricted connections to a single application
space is replaced by a global lock table that allows simultaneous access
to the same database from different embedded server modules. This
facilitates concurrent debugging of applications and use of native
utility tools like gbak, gstat and so on.
jdbc und firebird ist jetzt ansich auch kein problem
wie/ob man jetzt den embedded server mit jdbc verwenden kann, ist mir
unbekannt
aber google sagt es geht:
http://www.firebirdfaq.org/faq350/
Eine Netzwerk Festplatte ist schon ein Server. Ein Server bedeutet, die
Maschine, resp ein Port, wartet auf Anfragen und arbeitet die ab. Ein
Server macht nie was von selbst. Die Rechner, die die Anfragen absenden
nennen sich Clients. Fuer was Guenstiges, wuerd ich die Synology
empfehlen.
Hier ging es wohl eher darum ob auf dem NAS eine beliebige Software, die
auf eben solche Anfragen horcht (und das macht sie von selbst :),
eingerichtet werden kann. Und/Oder ob sich dort ein vorinstallierter
MySQL-Server befindet den man nutzen kann.
PS: "grosse" Datenbankserver (Mysql, Oracle, Postgres...) können auf
einem Host viele Datenbanken für viele Anwendungen gleichzeitig
bereitstellen. Frag doch mal euren Admin ob er deine DB nicht auf einem
solchen System mit unter bringen kann. Rechne allerdings mit Fragen die
Du als Entwickler auch beantworten können solltest (erwartete Größe und
Last usw.).
Hallo Dieter,
ich hab ein Java Programm geschrieben, dass HSQLDB benutzt.
Die Datenbank ist im Prinzip nur ein einziges File + eins für die
Konfiguration.
Bei meinem Programm wird die Datenbank zwar beim ersten Zugriff
"gelockt". Aber ich meine, man kann die auch so öffnen, dass mehrere
gleichzeitig drauf zugreifen können.
Hier der Link zu meinem Programm:
http://fakturama.sebulli.com/
Gerd
Mit HSQLDB habe ich schon mal gearbeitet. Das beutet ich kann das
Datenbank-File irgendwo ablegen und es können auch mehrere Anwender die
Datenbank benutzten. Könntest du mir vielleicht den entsprechenden
Ausschnitt aus deinem Programm zeigen?