Wie liefere ich eine PostgreSQL DB mit meinem Programm aus?

Hi,

ich möchte in meinem Java Programm eine PostgreSQL Datenbank verwenden. Wie kann ich diese DB denn einfach mit ausliefern? Der User soll also nicht extra nochmal die DB installieren müssen, eigentlich soll er davon garnichts mitbekommen.

Weiß jemand wie ich das mache? Welche Dateien brauche ich?
Hab mir mal PostgreSQL gedownloaded, massig exe und dll files …

Danke für die hilfe!

Warum nicht? Wer konfiguriert das? Was macht der User, wenn was nicht geht und er nicht einmal weiß, welche DB dahinter steckt?

Weiß jemand wie ich das mache? Welche Dateien brauche ich?
Hab mir mal PostgreSQL gedownloaded, massig exe und dll files …

Huch, ich finde weder eine EXE noch eine DLL in meiner PG-Installation und das funktioniert dennoch. Wie kann das sein?

Andreas

Man kann die Windows Installation von PostgreSQL auf “silent” schalten, man sollte aber auch so Fälle abfangen, in denen schon eine Datenbank installiert ist …

@akretschmer:
Soll deine Ironie lustig sein?
Aber ich erklärs für dich nochmal. Natürlich soll der User eine DB erstellen können, es geht mir darum, welche Files ich zu meinem Programm hinzufügen muss, eben damit er es kann.

Es gibt einige Programme, die installiere ich und die nutzen eine Datenbank. In dem Programm kann ich dann eine DB erstellen uind nutzen. Aber die DB selbst habe ich dann nie installiert… also muss das Programm das doch mitgebracht haben.

Glaube ihr versteht nicht so ganz was ich meine …

Nein.

Aber ich erklärs für dich nochmal. Natürlich soll der User eine DB erstellen können, es geht mir darum, welche Files ich zu meinem Programm hinzufügen muss, eben damit er es kann.

Warum unterstellst Du dem Anwender ein bestimmtes OS, warum kann er die DB nicht via Netz woanders haben, warum nicht eine schon vorhandene nutzen etc.?

Es gibt einige Programme, die installiere ich und die nutzen eine Datenbank.

Genau. Einige Programme, einige, die eine DB nutzen. Soll jede für sich PG installieren? Das geht vor den Baum…

In dem Programm kann ich dann eine DB erstellen uind nutzen. Aber die DB selbst habe ich dann nie installiert… also muss das Programm das doch mitgebracht haben.

Wenn Du M$ Office kaufst, ist dann das OS schon mit enthalten?

Glaube ihr versteht nicht so ganz was ich meine …

Doch, schon. Aber Du denkst nicht über Deinen Tellerrand hinaus.

Andreas

Hm, naja ich kann das Problem schon nachvollziehen. Auch werden Java-Applikationen im reinen Windows Umfeld benutzt -> damit kann schon durchaus die .exe und .dll Dateien verwenden. Es gibt auch ein Pokerprogramm das PostgreSQL auf dem User PC installiert. Es wird auch regelmäßig auf das Forum hier verwiesen (achja Linkbacks sind schon was schönes :wink: ).

Also find ich die Frage jetzt gar nicht so dumm und das ganze wäre sicher interessant. Unter Umständen wäre halt eine Abfrage ob eine neue DB installiert werden soll oder ob ein vorhandener Server verwendet werden soll nicht schlecht. Das sollte aber jetzt mal nicht unser Problem sein.

Zurück zum Topic: Helfen kann ich dir leider nicht :frowning: Grundsätzlich sollte sowas in die Art gehen. Ich hab mal einen Newsbeitrag gehabt wo beschrieben war was da alles benötigt wird. Natürlich den Link nicht gespeichert und auch nicht mehr gefunden :wink:

cu tb.

Ich hab das schon durchaus so verstanden, kein Problem. Aber ich glaube, eine Lösung dieser Frage wirft mehr weitere Probleme auf als sie zu lösen imstande ist.

Aber ich komme halt eher aus der *NIX-Welt, wo man quasi wie bei einem Mosaik eine gewisse Anzahl an Grundelementen hat (hier: Tools, Programme, …) und sich daraus das Bild, was man sich vorstellt, bastelt. Und da ist es halt auch so, das wenn ich, wie bei einem Mosaik, wenn ich Gelb verwende, nicht zwangsläufig Grün dumherum haben muß, sondern auch Blau oder Gelb oder Rot oder sonstwas verwenden kann.
Tja, und deswegen hab ich halt was dagegen, das man sagt, wenn ich Programm X habe dann muß auch Programm Y zwingend in dieser exakt festgelegten Konfiguration dazugehören und ich packe das gleich zum Programm X dazu, damit der Anwender auch ganz sicher Y in exakt dieser Konfiguration verwendet.

Oder anders:

Ich liebe halt diese *NIX-Philosophie der universellen Schnittstellen. Ich habe eine Handvoll Tools wie awk oder sed oder grep oder ein paar andere und schalte die halt via Pipe zusammen und mache damit, was ICH will. Ein Stückchen Freiheit, sozusagen, was ich nicht aufgeben möchte.

Andreas

@akretschmer
Da du aus der unix Welt kommst kannst du wohl mein Anliegen nicht verstehen, aber wieso du mein Problem dann so kleinredest und rumprovizierst verstehst wohl nur du alleine, aber is mir auch egal. Es geht einfach darum, dass mein Programm GENAU diese db nutzen will und der user nicht mal weiß (sollte) dass da überhaupt ne DB im hintergrund läuft. Ich könnt den ganzen Quatsch auch in ne XML Datei reinmachen und immer parsen aber das ist doch viel zu lahm, da nehm ich lieber ne SQL DB. Und da ich z.B. bei der XML Datei EINFACH die Datei in mein package reinamche wollte ich wissen, wie ich das GLEICHE mit einer db mache.

Aber eigentlich hat sich das ganze schon erledigt, da ich jetzt “Derby” von Apache nutze. Die ist komplett in Java geschrieben und reicht für meine Bedürfnisse vollkommen aus. Bei der DB ist es z.B. so, dass ich einfach eine jar Datei (2MB) in mein Classpath aufnehme und schon steht mir die DB zur verfügung, das ist genau das was ich gesucht habe.

Schon klar. Aber morgen kommt der nächste, der das auch so macht wie Du. Und Dein User will auch das Programm des anderen nutzen. Sowohl Du als auch der andere ‘verstecken’ PG vor dem User. Und das knallt dann. Und der User weiß nicht warum nun gar nix mehr geht. Willst Du das so?

Aber eigentlich hat sich das ganze schon erledigt, da ich jetzt “Derby” von Apache nutze. Die ist komplett in Java geschrieben und reicht für meine Bedürfnisse vollkommen aus.

Dann ist das doch okay.Es gibt doch auch noch andere kleine DB-Systeme, die man als embedded DB nutzen kann. PG ist für DIESEN Zweck nicht wirklich geeignet.

Andreas

Nun im Prinzip ist es doch egal ob wir es für sinnvoll halten oder nicht. Ich hab schon lange aufgegeben mir da groß gedanken zu machen. Ich weiße zwar mal kurz darauf hin aber in der Realität ist es so, das es einfach Anforderungen gibt die zu erfüllen sind und wenn die heißen “Installation der DB bei der Programminstallation” dann ist das halt so. Ich habe ja auch eine Weg genannt um dsa Problem mit einer bestehenden DB zu umgehen…

ELV vertreibt ja z. B. Wetterstationen mit einen Analyseprogramm das auch im Hintergrund eine PostgreSQL-DB installiert. Ich bezweifle mal, das mehr als 1 % der User weiß, was eine Datenbank, geschweige den das PostgreSQL ist und garantiert auch nicht die Muhse haben, sich da einzuarbeiten.

Inzwischen hat sich das Problem ja gelöst und er hat mit “Derby” eine entsprechende Alternative gefunden. Diese *NIX Philosopie ist schon schön ABER das ist nicht für jeden User optimal und für einen Verwaltungsangestellten der einfach das Programm installieren und verwenden muss (weil kein Geld für einen richtigen EDVler da ist- und so schaut es bei vielen (kleinen) Firmen nun leider in der Realität mal aus) ist diese Stückelei nichts.

Wir werden gerade Off-Topic und ich würde sagen wenn nicht jmd noch eine direkte Lösung für das Einbinden von PostgreSQL in die Installationsroutine zu bieten hat, lassen wir das Thema und den Thread ruhen…

cu tb.

Postgres ist für diesen Anwendungszweck wirklich nicht geeignet.
Nimm z.B. sqlite, das ist ausgewachsene SQL-DB, designed für eine eingebettete Verteilung.

Gruß, Holgi