Remote-PostgreSQL-Datenbanken mit Ihrer lokalen Java-Anwendung verbinden: Ein praktischer Leitfaden
Der Zugriff auf Daten aus externen Datenbanken während der lokalen Entwicklung ist eine häufige Herausforderung. In diesem Artikel wird eine Lösung beschrieben, die PostgreSQL Foreign Data Wrapper (FDW) und Fly Proxy verwendet, um eine lokale Java-API (mit SpringBoot) mit einer entfernten PostgreSQL-Datenbank zu verbinden, die auf Fly.io gehostet wird.
Das Problem: Die Lücke schließen
Das Projekt erforderte das Abrufen von Daten aus einer PostgreSQL-Tabelle, die sich in einer von Fly.io gehosteten Anwendung befindet. Der direkte Zugriff aus der lokalen Entwicklungsumgebung wurde aufgrund von Netzwerkbeschränkungen blockiert. Dies stellte zwei wesentliche Hürden dar:
Die Lösung: Fly Proxy und PostgreSQL FDW
Die Lösung nutzt Fly Proxy, um einen sicheren Tunnel zu erstellen, und PostgreSQL FDW, um die Remote-Datenbank als lokale Datenquelle zu behandeln.
PostgreSQL FDW verstehen
Der Foreign Data Wrapper (FDW) von PostgreSQL ermöglicht die Abfrage externer Datenquellen, als wären sie lokal. Die Erweiterung postgres_fdw
erleichtert diese Verbindung.
Einrichten des Fly Proxy
Bevor Sie beginnen, stellen Sie sicher, dass flyctl
installiert ist. Fly Proxy erstellt einen sicheren Tunnel. Die Befehlsstruktur ist:
<code class="language-bash">fly proxy <remote> [remote_host] [flags]</code>
Für dieses Szenario sah der Befehl wie folgt aus:
<code class="language-bash">fly proxy 5433:5432 -a db_app_name</code>
Dadurch wird ein lokaler Tunnel (Port 5433) zur Fly.io-Datenbank (db_app_name
) eingerichtet.
PostgreSQL FDW konfigurieren
Installieren Sie die Erweiterung: Installieren Sie postgres_fdw
in Ihrer lokalen PostgreSQL-Datenbank:
<code class="language-sql">CREATE EXTENSION IF NOT EXISTS postgres_fdw;</code>
Erstellen Sie einen fremden Server: Definieren Sie die Verbindung zur Remote-Datenbank:
<code class="language-sql">CREATE SERVER fly_server FOREIGN DATA WRAPPER postgres_fdw OPTIONS ( host '127.0.0.1', port '5433', dbname 'db_name' );</code>
Benutzer zuordnen:Benutzerzuordnungen erstellen, um Zugriff zu gewähren:
<code class="language-sql">CREATE USER MAPPING FOR local_user SERVER fly_server OPTIONS ( user 'remote_user', password 'remote_password' );</code>
Externe Tabelle importieren:Die erforderliche Remote-Tabelle importieren:
<code class="language-sql">IMPORT FOREIGN SCHEMA foreign_schema_name LIMIT TO (remote_table) FROM SERVER fly_server INTO local_schema_name;</code>
(Hinweis: Wenn die Remote-Tabelle von ENUM-Typen abhängt, müssen diese auch lokal erstellt werden.)
Materialisierte Ansicht (optional): Bei leseintensiven Vorgängen kann eine materialisierte Ansicht die Leistung verbessern.
Integration mit der Java-API
Wenn FDW und der Proxy konfiguriert sind, kann die SpringBoot-Anwendung die externen Daten über die lokale Datenbankverbindung abfragen, indem sie entweder die Fremdtabelle oder die materialisierte Ansicht verwendet.
Wichtige Erkenntnisse
Fazit
Diese Methode hat Remote-Daten erfolgreich in die lokale Java-Anwendung integriert und bietet eine flexible Lösung für die Verwaltung verteilter Daten. Ziehen Sie FDW für ähnliche Herausforderungen in Betracht! Verbinden Sie sich auf LinkedIn für weitere Diskussionen.
<code class="language-bash">fly proxy <remote> [remote_host] [flags]</code>
Das obige ist der detaillierte Inhalt vonLokale Entwicklung, Remotedaten: Zugriff auf fly.io postgresql von Ihrer Java -API. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!