Postgres in ein Programm einbinden?

Hallo Forum,

ich habe eine mal eine sehr spezielle Frage und hoffe es kann mir jemand weiterhelfen.

Für ein Programm, das ich geschrieben habe, möchte ich gern Postgres mit in das Programm einbinden. D.h. es soll mit dem Programm ausgeliefert werden, sich installieren und dabei eine möglicherweise bereits installierte Version von Postgres nicht beinflussen dürfen.

Ich habe auf den Seiten von Postgres nichts entsprechendes gefunden.

Vielen Dank im Vorraus
Gruß
Happygod

Also erstens einmal, wenn du solche Fragen stellst, wird dir keiner was vernünftiges antworten können. Glaskugeln müssen erst erfunden werden.

Zweitens: Du möchtest nicht Postgres in dein Programm einbinden, das hast du vermutlich schion getan. Du möchtest lediglich in einem Zuge dein Programm incl. Postgres installieren und in PG die entsprechende Datenbank mit Startdaten befüllt zur Verfügung haben.

Drittens: Du solltest mal ein wenig präziser werden! Was willst du installieren? Auf welchem System willst du installieren (Unix/Linux/Windows)? Womit installierst du?

Unter Linux gibts für dein Anliegen je nach Distribution verschiedene Möglichkeiten. Unter Windows sieht das schon etwas anders aus, da bleibt eigentlich nur die Möglichkeit, in deinen Installer den Aufruf des Postgres-Installers einzubinden.

Insgesamt weiss ich aber nicht, wie sich das lizenzrechtlich verhält, wenn du Postgres zu einem essentiellen Bestandteil deiner Software machen willst. Ich kann mich an eine Diskussion über MySQL zu dem Problem erinnern, da ist die Lizenz aber auch komplett anders.


Domski

Nun, die Lizenzfrage ist einfach zu klären: PostgreSQL steht unter BSD Lizenz, du kannst es also beliebig in eigene Projekte einbinden.

Bei Mysql war das Problem, das es eine Doppellizenz gibt, die kommerzielle für Anwendungen, bei denen du den Source nicht herausgeben möchtest und die GPL, dann musst du deine Anwendung aber auch unter die GPL stellen und den Sourcecode mitgeben.
Also Geld zahlen und Geld einnehmen oder nichts bekommen.

zu erstens:
Wieso Galskugeln?


zu zweitens:
Das stimmt nicht ganz. Um es Klartext zu fomrulieren. Es soll schon mein Programm und Postgres zusammen installiert werden, und die Datenbank befüllt, etc. Das ist nicht das Problem. Sowas lässt sich relative einfach lösen. Aber:

Gehen wir davon aus, dass der Nutzer schon Postgres installiert hat und eine Datenbank schon benutzt. Und gehen wir weiter davon aus, dass die Version von Postgres die der Nutzer schon auf dem System hat eine andere ist, als die die ich installiere. Wie kann ich mein Postgres unabhängig von diesem vorhanden Postgres installieren? Ist ein wenig kompliziert. :wink:

Der Nutzer soll quasi ein Komplettpaket erhalten, ohne dass vorhandene Versionen upgedated oder downgegradet werden. Das Postgres für das Programm soll auch nur für dieses Programm da sein.

Am liebsten wäre es mir sogar, wenn der Nutzer überhaupt nicht einmal mitbekommt, dass das Programm die Datenbank mitinstalliert, bzw. dass eine benutzt wird.

Warum das ganze … keine Sorge über eine aktuelle Version, der User muss sich um nichts einen Kopf machen.


zu drittens:
Installieren möchte ich ein Storage Management System, dabei werden die Storage Daten in einer Datenbank hinterlegt. Dafür soll Postgres benutzt werden.
Um zu verhindern, dass Nutzer kommen und sagen: “Ich möchte aber MySQL benutzen” oder Oracle. Deshalb möchte ich die Datenbank einbinden, wie oben beschrieben, um diesem aus dem Weg zu gehen.

Auf Windows und auf SuSe soll es erstmal installiert werden. (später auch RedHat).
Installiert wird es unter Windows durch eine .msi und unter SuSe mit einer .rpm.

Lizenztechnisch habe ich es geprüft, weshalb sich Postgres auch am besten anbieten.
http://www.postgresql.org/docs/faqs.FAQ.html
unter 1.3.
sehr locker diese Lizenz.


Vielen Dank für eure schnelle Antwort. Sorry nochmal, dass ich nicht gleich so detailiert war.

Gruß
Happygod

Gehen wir davon aus, dass der Nutzer schon Postgres installiert hat und eine Datenbank schon benutzt. Und gehen wir weiter davon aus, dass die Version von Postgres die der Nutzer schon auf dem System hat eine andere ist, als die die ich installiere. Wie kann ich mein Postgres unabhängig von diesem vorhanden Postgres installieren? Ist ein wenig kompliziert.

Naja, prinzipiell lassen sich mehrere Services auf einem Rechner parallel installieren - soweit kein Problem. Prinzipiell muss allerdings der Installpfad sowie der Port auf dem der Service lauscht anders sein, d.h. du musst einen freien Port ermitteln. Wenn das gegeben ist, kannst du problemlos 2 postgres nebeneinander laufen lassen (zugegben habe ich es noch nicht ausprobiert, aber von der Sache her sollte das eigentlich kein Problem sein :wink: - allerdings sehe ich keinen Sinn darin, wenn bereits ein DB Server läuft, auf der gleichen Maschine einen 2ten aufzusetzen ?! Das grenzt schon verdammt nah an Ressourcenverschwendung.

Am liebsten wäre es mir sogar, wenn der Nutzer überhaupt nicht einmal mitbekommt, dass das Programm die Datenbank mitinstalliert, bzw. dass eine benutzt wird.

Da der installierende User Admin-Rechte braucht halte ich dies für recht ungünstig. Postgres ist nun nicht gerade das kleinste DBMS der Welt und mir würde die Krawatte platzen, wenn ich plötzlich feststelle, dass ein kompletter Datenbankserver auf meinem Rechner läuft, welcher sogar noch einen eigenen User eingerichtet hat und ich dies alles nicht mitbekommen habe :wink:

Um was für eine Art von Anwendung handelt es sich denn, wenn ich fragen darf? Hast du mal geprüft, ob es prinzipiell nicht einfacher ist, einer alternativen Datenhaltungsmethode den Vorzug zu geben? Wenn das beispielsweise nur ein “kleines Tool” ist, schießt du hier sicher mit Kanonen auf Spatzen (und das macht mir etwas den Eindruck). Sollte die Anwendung komplexer sein, dann halte ich es für nicht verkehrt, die Datenbank auf einen anderen Rechner zu “outsourcen” und diesen dann auch vernünftig vom Installierenden konfigurieren zu lassen. Mit Skripten lässt sich da ja auch die komplette Tabllen-Struktur automatisch erzeugen. Zudem kann der User dann den Datenbankserver wählen und man braucht nix doppelt und dreifach laufen zu lassen.

Vielleicht kannst du noch ein klein wenig konkreter werden…

Gruß,
PepperBob

Gründe gegen Dein geplantes Vorgehen sind ja bereits geliefert worden (und es ist natürlich stets fraglich, in wie fern man dem Endanwender wichtige Informationen vorenthalten darf), jedoch nicht mein Thema.

Soweit ich mich erinnere, existieren für die DB Firebird 3 Varianten (classic, superserver, embedded :idea :slight_smile: , wobei die 3. (embedded) aus einer einzigen DLL besteht, welche die komplette Serverfunktionalität liefert. Da kommst Du natürlich völlig ohne zusätzliche Installation aus und kannst die DB vollständig in Deine Applikation integrieren.

:!: Natürlich ist Firebird bei weitem nicht mit Postgres zu vergleichen.
Aber für Deine Zwecke wäre Postgres wohl auch zu schade :lol: