Frage

Derzeit habe ich eine Anwendung, die Firebird in Embedded-Modus verwendet, um eine relativ einfache Datenbank als Datei auf meiner Festplatte gespeichert zu verbinden. Ich möchte mit PostgreSQL wechseln, das Gleiche zu tun (Ja, ich weiß, es ist übertrieben). Ich weiß, dass PostgreSQL kann nicht in Embedded-Modus betrieben werden, und das ist in Ordnung - ich kann die Server-Prozess laufen lassen und das ist in Ordnung mit mir

.

Ich versuche, eine Verbindungszeichenfolge, um herauszufinden, dass dies zu erreichen, aber erfolglos geblieben war. Ich habe versucht, Variationen über den folgenden:

jdbc: postgresql: C: \ myDB.fdb
jdbc: postgresql: // C: \ myDB.fdb
jdbc: postgresql: // localhost: [Anschluss] /C:\myDB.fdb

, aber nichts scheint zu funktionieren. PostgreSQL Richtungen nicht ein Beispiel für diesen Fall schließen. Ist das überhaupt möglich?

War es hilfreich?

Lösung

Postgres-Datenbanken sind nicht eine einzige Datei. Es wird für jede Tabelle und jeder Index im Datenverzeichnis eine Datei sein, in einem Verzeichnis für die Datenbank. Alle Dateien werden mit der Objekt-ID (OID) von db / Tabelle / Index genannt werden.

Der JDBC-URLs verweist auf die Datenbanknamen, keine bestimmte Datei: jdbc: postgresql: foodb (localhost wird angedeutet)

Wenn von „Datenträger, wie Speicher verhält“, meinen Sie, dass die db existiert nur für die Lebensdauer Ihres Programms, gibt es keinen Grund, warum Sie nicht ein DB bei Programmstart erstellen und legen Sie es beim Beenden des Programms. Beachten Sie, dass dies nur DDL ist die DB zu erstellen, die Daten nicht dir über das init-db-Programm zu erstellen. Sie könnten auf den Standard ‚postgres‘ db verbinden, erstellen Sie Ihre db dann mit ihm verbinden.

Andere Tipps

Sie können es betrügen. Wenn Sie PostGRESQL auf einem Unixoides System System ausgeführt wird, dann sollten Sie in der Lage sein, eine RAMDISK zu schaffen und die Speicher für die Datenbank zu verwenden. Hier ist ein ziemlich guter Schritt für Schritt Leitfaden für RAM-Disks unter Linux .

Im Allgemeinen jedoch würde ich vorschlagen, SQLITE für eine SQL-DB im RAM Art der Anwendung verwendet wird.

Firebird 2.1 ab unterstützt globale temporäre Tabellen, die nur für die Dauer existieren der Datenbankverbindung.

Syntax geht so etwas GLOBAL TEMPORARY CREATE TABLE ... ON ROWS COMMIT PRESERVE

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top