Maison >Java >javaDidacticiel >Développement local, données distantes: accéder à fly.io postgresql depuis votre API Java

Développement local, données distantes: accéder à fly.io postgresql depuis votre API Java

DDD
DDDoriginal
2025-01-27 06:08:10841parcourir

Connexion de bases de données postgresql distantes à votre application Java locale: un guide pratique

L'accès aux données des bases de données externes pendant le développement local est un défi commun. Cet article détaille une solution à l'aide de PostgreSQL Foreign Data Wrapper (FDW) et Fly Proxy pour connecter une API Java locale (en utilisant Springboot) à une base de données postgresql distante hébergée sur Fly.io.

Local Development, Remote Data: Accessing Fly.io PostgreSQL from Your Java API

Le problème: combler l'écart

Le projet a nécessité la récupération des données d'une table PostgreSQL résidant sur une application hébergée Fly.io. L'accès direct à partir de l'environnement de développement local a été bloqué en raison des restrictions de réseau. Cela a présenté deux obstacles clés:

  1. établissant une connexion sécurisée de la machine locale à la base de données Fly.io.
  2. Accéder aux données de la base de données distantes dans l'application Java locale.

La solution: Proxy Fly et PostgreSQL FDW

La solution exploite le proxy de mouches pour créer un tunnel sécurisé et PostgreSQL FDW pour traiter la base de données distante comme une source de données locale.

Local Development, Remote Data: Accessing Fly.io PostgreSQL from Your Java API

Comprendre PostgreSQL FDW

L'emballage de données étranger de PostgreSQL (FDW) permet d'interroger des sources de données externes comme si elles étaient locales. L'extension postgres_fdw facilite cette connexion.

Configuration du proxy de la mouche

Avant de démarrer, assurez-vous que flyctl est installé. Fly Proxy crée un tunnel sécurisé. La structure de commande est:

<code class="language-bash">fly proxy <remote> [remote_host] [flags]</code>

Pour ce scénario, la commande ressemblait:

<code class="language-bash">fly proxy 5433:5432 -a db_app_name</code>

Cela établit un tunnel local (port 5433) dans la base de données Fly.io (db_app_name).

Configuration de PostgreSQL FDW

  1. Installez l'extension: Installez postgres_fdw dans votre base de données PostgreSQL locale:

    <code class="language-sql">CREATE EXTENSION IF NOT EXISTS postgres_fdw;</code>
  2. Créer un serveur étranger: Définissez la connexion à la base de données distante:

    <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>
  3. MAP UTILISATIONS: Créer des mappages d'utilisateurs pour accorder l'accès:

    <code class="language-sql">CREATE USER MAPPING FOR local_user SERVER fly_server
    OPTIONS (
        user 'remote_user',
        password 'remote_password'
    );</code>
  4. Importez la table externe: Importez la table distante nécessaire:

    <code class="language-sql">IMPORT FOREIGN SCHEMA foreign_schema_name
    LIMIT TO (remote_table)
    FROM SERVER fly_server
    INTO local_schema_name;</code>

    (Remarque: si le tableau distant dépend des types d'énumération, ceux-ci doivent également être créés localement.)

  5. Vue matérialisée (facultative): Pour les opérations lourdes en lecture, une vue matérialisée peut améliorer les performances.

intégrer avec l'API Java

avec FDW et configuré par proxy, l'application Springboot peut interroger les données externes via la connexion de la base de données locale, en utilisant la table étrangère ou la vue matérialisée.

Les plats clés

  • FDW est puissant mais nécessite une configuration minutieuse.
  • Le proxy FlyCTL simplifie l'accès à la base de données distante sécurisée.
  • Cette approche favorise le découplage des services, même avec les dépendances des données.

Conclusion

Cette méthode a intégré avec succès les données distantes dans l'application Java locale, offrant une solution flexible pour gérer les données distribuées. Considérez FDW pour des défis similaires! Connectez-vous sur LinkedIn pour une discussion plus approfondie.

<code class="language-bash">fly proxy <remote> [remote_host] [flags]</code>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn