PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Welches Datenbanksystem?



p3lotud0
24-01-2007, 21:39
Hallo,

ich bin dabei ein Verwaltungsprogramm in Java zu schreiben und weiss nicht, welches Datenbanksystem ich dafür jetzt eigentlich verwenden soll?!?

Habe in dem Zusammenhang den Begriff "Eingebettetes Datenbanksystem" gelesen. Wenn dieses das ist, was ich meine, dann wäre sowas nicht schlecht.
Möchte nämlich auf jeden Fall die Installation auf anderen Rechnern so einfach wie möglich gestalten. Die Datenbank sollte allerdings auch über Netzwerk von anderen Rechnern verfügbar sein.

Was würde sich da anbieten?
MySQL kenne ich bisher nur im Zusammenhang mit dem Xampp-Paket. Wie sieht da die Installation bzw. das Aufsetzen der Datenbank aus, wenn man das alleine betreiben möchte?

Weiss nicht, ob ich mich jetzt klar ausgedrückt habe, was ich eigentlich suche und wo meine Probleme liegen, deswegen wäre ich über Fragen Eurerseits dankbar.

Doofe Frage: Gibt es übrigens Datenbanklösungen, wo das alles lokal in einer Datei oder so ablaufen kann?

Vielen Dank schon mal im Voraus.

Molaf
24-01-2007, 21:47
SQLite ist so ein System, wo alles in lokalen Dateien landet.

Perl hat zudem noch einen Datenbanktreiber, der ebenfalls eine Datenbank emuliert und alles lokal in Flatfiles speichert - das sollte es für Java auch geben.

Beides ist aber nicht übers Netzwerk ansprechbar, da ja keine echte DB-Engine auf Anfragen lauscht, sondern die Anwendungen nur über einen Zwischenschicht Daten speichert. Den Netzwerkkrams müsstest Du dann selber bereitstellen.

Das war erstmal alles was ich dazu weiß.
Gruß

Waxolunist
24-01-2007, 21:56
HSQL ist für diese Sachen prädestiniert.
http://www.hsqldb.org/

mfg, christian

p3lotud0
25-01-2007, 13:39
@Waxolunist: Danke für den Tipp mit HSQLDB.

"fast database engine which offers both in-memory and disk-based tables and supports embedded and server modes."

Das hört sich gut an :)

@Molaf
Wenn man das lokal mit Flat Files betreibt, dann könnte man diese ja einfach im Netzwerk freigeben und die Programme dann auf den anderen Rechnern darauf verweisen oder geht das so sind?

mamue
25-01-2007, 13:51
Wenn man das lokal mit Flat Files betreibt, dann könnte man diese ja einfach im Netzwerk freigeben und die Programme dann auf den anderen Rechnern darauf verweisen oder geht das so sind?

Das geht eher nicht. Access (MS seine Desktop-Datenbank) macht so etwas und erfahrungsgemäß läuft das suboptimal. Das Problem ist das locking. Wer soll denn verhindern, dass zwei clients gleichzeitig die selben Daten verändern? Das können zwar sicherlich die Clients untereinander aushandeln, zum Beispiel über das Dateisystem, aber auf so etwas würde ich mich nicht freiwillig einlassen.

mamue

p3lotud0
25-01-2007, 14:59
Also bei mehreren Clients auf jeden Fall mit Hilfe eines Datenbankserversystems arbeiten? "Embedded Modes" werden dann automatisch ausgeschlossen?

mamue
25-01-2007, 15:45
Das würde ich so sehen, ja. Es sei denn, Du sorgst dafür, dass nur eine Programminstanz darauf zugreifen kann, arbeitest also mit RMI, Servlets oder Ähnlichem.
So schlimm ist aber ja auch nun wieder nicht, einen MySQL Server zu installieren.

mamue

Waxolunist
25-01-2007, 16:40
Ich glaube unter Eingebettetes DB-System, hast du was falsches verstanden.

Oder erklär mir lieber noch mal, was du genau brauchst.

Du brauchst ein DB-System, dass sowohl lokal arbeitet als auch übers Netzwerk? Oder müssen sich die Clients nur zu einer DB verbinden?

mfg, christian

p3lotud0
25-01-2007, 18:12
Generell soll das Programm auf einem Rechner mit entsprechender Datenbank laufen. Darüber hinaus soll das dieses Programm auf auf anderen Rechnern im Netzwerk zu installieren und betreiben sein (Clients) und mit Angabe der IP-Adresse des Server-Rechners dann auf der gleichen Datenbank arbeiten.
Das Programm soll halt mehrbenutzfähig sein.

Ratman
26-01-2007, 07:19
Vielleicht hilft Dir das hier: http://www.codebase.com/products/Java/

Waxolunist
26-01-2007, 08:21
Also suchst du eine ganz normale DB, die du mit JDBC anbindest und kein Embedded DBMS.

Da kannst du jede DB nehmen.

Je nach Geld und Gebrauch.

mfg, christian

p3lotud0
26-01-2007, 15:50
Ja das stimmt natürlich.
Wichtig war mir aber: Wenn das Programm später wer-weiss-wo als Server-Version von jemand Unversiertem installiert werden soll, dass dieser dann sich nicht mit einem zuvor "umständlichen" Aufsetzen eines Datenbanksystems rumärgern soll.
Also eine vereinfachte Inbetriebnahme von jemand, der sich da nicht wirklich auskennt.
Inwieweit man jetzt z.B. die Installation eines MySQL-DB-Servers im Zusammenhang mit dem Anlegen der erforderlichen Datenbank automatisieren kann, weiss ich leider nicht.
Bis jetzt habe ich Installationen immer nur selber ausgeführt, aber nie selber erstellt. Ggf. müsste z.B. auch die JAVA VM auf dem entsprechenden Rechner installiert werden, da ich ja das Programm in JAVA schreibe.

Sonst würde ich natürlich ohne weiteres gerne auf MySQL zurückgreifen...

mamue
26-01-2007, 19:55
Bis jetzt habe ich Installationen immer nur selber ausgeführt, aber nie selber erstellt. Ggf. müsste z.B. auch die JAVA VM auf dem entsprechenden Rechner installiert werden, da ich ja das Programm in JAVA schreibe.

Nach meiner Erfahrung kann man die JVM auch mitliefern. Im primitivsten Fall kann man dann das gesamte Verzeichnis von einer CD-ROM irgendwo auf die festplatte kopieren. Dann ist natürlich ein Startscript (shell oder batch) nötig, dass den Interpreter lädt - das JAR-File per Doppelklick starten geht dann halt nicht mehr.
Du brauchst aber auch nicht zwingend zu MySQL zu greifen, wenn Du einen Server in Java erstellst, auf den die Clients zugreifen (RMI, Servlets etc), denn dann greift nur Dein Serverprozess auf die embedded Datenbank zu.

mamue

comrad
31-01-2007, 13:31
In Java 6 gibt es bereits eine embeddable Datenbank anbei: JavaDB. Im Prinzip eine Cloudscape von IBM, oder auch wie sie neuerdings heisst Apache Derby.

Gruss,
comrad

p3lotud0
31-01-2007, 13:50
Ja, das Apache Derby ist mir auch im Rahmen meiner "Orientierungsphase" über den Weg gelaufen.
Habe mich jetzt dank deinem Beitrag noch mal umgeschaut und bin in dem Zusammenhang auf diesen Link gestoßen:

http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javadb/

Wahrscheinlich werde ich jetzt doch wieder von MySQL darauf umschwenken. Viel Fortschritt datenbanktechnisch gab es bei mir nämlich noch nicht bezüglich meines Programmes, so dass das kein Problem wäre...

Turbohummel
31-01-2007, 15:14
Das sollte sowieso kein Problem darstellen. Stichwort SQL99.

Derby ist was die Technik angeht recht gut, aber noch langsamer als PostGres.Für Embedded-Anwendungen unter Java auf jeden Fall zu empfehlen.

p3lotud0
31-01-2007, 18:51
Hi,

danke für die Tipps, aber habe mich jetzt für die H2 entschieden!!
Die erfüllt so ziemlich genau das, was ich mir so vorstelle.

http://www.h2database.com/html/frame.html