PostgreSQL ohne Installation benutzen: Welche Dateien sind zwingend erforderlich?

Ich schreibe gerade eine Anwendung, welche auf eine Datenbank mit echter Unterstützung für parallele Zugriffe daher kommt. Natürlich gibt es auch z.B. SQLite oder Firebird Embedded, hier ist aber das Problem der parallelen Zugriffe von unterschiedlichen Instanzen. Nach langer Lektüre der Lizenzvereinbarungen verschiedener Datenbanken und ihrerer Connectoren, blieb allein PostgreSQL mit dem Npgsql Connector übrig.

Meiner Anwendung kann man über eine Konfiguration sagen, wie sie welche PostgreSQL-Datenbank ansprechen soll. Der Nutzer kann also selbst entscheiden, ob er eine eigene (richtig installierte) PostgreSQL-Datenbank nutzt, oder die mitgelieferte Datenbank, welche als Standardziel konfiguriert ist. Der Nutzer kann also eine eigene Datenbank konfigurieren, muss es aber nicht (Standardmäßig wird die “embedded” PostgreSQL Datenbank genutzt). Sofern die “embedded” PostgreSQL-Datenbank genutzt werden soll, startet die Anwendung selbst die PostgreSQL Instanz auf einem zufälligen Port und nutzt diesen in den Verbindungsparametern des Connectors. Soviel zum Intro.

Nun zu meiner Frage: Welche Windows 32-Bit Dateien aus dem “Installations”-ZIP-Archiv sind für die korrekte Ausführung von PostgreSQL zwingend erforderlich? Und zwar technisch (Binaries) und rechtlich (Lizenztext, etc.). Ich möchte so wenig Dateien mitliefern bzw. zusätzlichen Speicherplatz belegen wie möglich ist.
Kann man vielleicht einige Dateien (Feature-Bibliotheken) weglassen, wenn man deren Funktionen nicht nutzt und PostgreSQL startet trotzdem?

Noch mal zusammenfassend: Ich möchte mit meiner Anwendung ein Unterordner ausliefern, in welchem PostgreSQL Binaries drin liegen. Diese werden dann durch meine Anwendung kontrolliert (gestartet/beendet). Der Unterordner soll so wenig Dateien wie möglich beinhalten bzw. so wenig wie möglich Speicherplatz verbrauchen.

Letztendlich sind nur die “bin”, “lib” und “share” Verzeichnisse notwendig.

Die aktuelle Postgres Version 11 gibt es übrigens nicht mehr als 32bit Version - und ich sehe auch keinen Grund warum man in 2019 noch eine 32bit Version davon installieren wollte. Vermutlich könnte man ein wenig Platz sparen, wenn man nicht alle Extensions mit ausliefert. Aber um 2 oder 3MB zu sparen, würde ich mir die Mühe nicht machen.

Du musst aber dann auch (automatisiert) dafür sorgen, dass vor/bei der ersten Verwendung ein Datenverzeichnis via initdb angelegt wird.

Postgres benötigt noch die Visual C++ Runtime DLLs die nicht auf allen Rechner unbedingt vorhanden sind. Also solltest Du die auch noch in das bin Verzeichnis kopieren falls Du die nicht anderweitig auf dem System installierst.

Hallo castorp, vielen Dank für deine Antwort.

Ich habe noch einen großen Teil von Benutzern mit Windows XP SP3 32-Bit Systemen; deswegen die 32-Bit Anforderung. Außerdem plane ich die Nutzung der Version 9.6, da diese Version im Debian Repository ist (Debian ist nur auf meinem Server). So habe ich für allen Anwendungen und auf dem Server eine Datenbank(versions)basis.

Bevor ich das jetzt versuche und es aus unglücklichen [sic] Zufall bei mir klappt [sic] (weil zufällig nicht auf die Bibliothek zugegriffen wurde)…
Sind PostgreSQLs Bibliotheken komplett dynamisch, sprich es gibt die Funktion der Bibliothek nicht mehr (wird nicht mehr angeboten), oder steht sie (virtuell) noch zur “Verfügung” und PostgreSQL crashed beim Versuch auf die Funktion der nicht mehr vorhandenen Bibliothek zuzugreifen?

Hallo burnersk,

ich habe ebenfalls eine Anwendung, in dessen Auslieferung sich die Dateien für den Betrieb eines PostgreSQL Servers befinden und ich habe mir die Mühe gemacht, aus einer 9.5.12er Version (diese habe ich bewusst gewählt, weil der Installationsumfang ab einer bestimmten 9er Version und erst Recht ab der 10er Version deutlich größer geworden ist) alle nötigen Dateien herauszukramen. So konnte ich den Umfang aus unter 20 MB eindampfen.
Man benötigt, wie castrop bereits geschrieben hat, einige Dateien aus den Verzeichnissen bin, lib, share und StackBuilder. Und -vollkommen richtig- zwei VC Runtime Libraries.

Wenn Du Interesse hast, schicke ich Dir das Paket gerne irgendwie zu.Mit 7Zip lässt sich das Ganze auf unter 5MB packen.

einige Probleme, die ich sehe:

  • 9.5 ist arg alt, 9.5.12 von 1. März 2018, also auch schon arg alt. Da fehlen einige z.T. wichtige Updates.
  • wenn das auf Windows läuft, dann sind da in der Regel um die 42 verschiedene Virenscanner und Tischbrandschutzmauern installiert und aktiv. Bei den wenigen Kunden, die wir mit Windows als OS haben, kommt es wegen solcher Grütze regelmäßig zu Problemen bis hin inkonsistente Daten. Will sagen:wenn Eure Kunden gar keine Ahnung von den Details haben UND solche Grüzue, dann ist Ärger vorprogrammiert.
  • wie werden Updates gehandelt?

tl;dr
Ich würde empfehlen, PG richtig zu installieren.