ホームページ >Java >&#&チュートリアル >ローカル開発、リモート データ: Java API から Fly.io PostgreSQL にアクセスする

ローカル開発、リモート データ: Java API から Fly.io PostgreSQL にアクセスする

DDD
DDDオリジナル
2025-01-27 06:08:10841ブラウズ

リモート PostgreSQL データベースをローカル Java アプリケーションに接続する: 実践ガイド

ローカル開発中に外部データベースのデータにアクセスするのは一般的な課題です。 この記事では、PostgreSQL 外部データ ラッパー (FDW) と Fly Proxy を使用して、ローカル Java API (SpringBoot を使用) を Fly.io でホストされているリモート PostgreSQL データベースに接続するソリューションについて詳しく説明します。

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

問題: ギャップを埋める

このプロジェクトでは、Fly.io でホストされるアプリケーション上にある PostgreSQL テーブルからデータをフェッチする必要がありました。ネットワーク制限のため、ローカル開発環境からの直接アクセスがブロックされました。 これには 2 つの重要なハードルがありました:

  1. ローカル マシンから Fly.io データベースへの安全な接続を確立します。
  2. ローカル Java アプリケーション内のリモート データベース データへのアクセス。

解決策: Fly Proxy と PostgreSQL FDW

このソリューションは、Fly Proxy を利用して安全なトンネルを作成し、PostgreSQL FDW を利用してリモート データベースをローカル データ ソースとして扱います。

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

PostgreSQL FDW について

PostgreSQL の外部データ ラッパー (FDW) を使用すると、外部データ ソースをローカルであるかのようにクエリできます。 postgres_fdw 拡張機能により、この接続が容易になります。

Fly プロキシのセットアップ

開始する前に、flyctl がインストールされていることを確認してください。 Fly Proxy は安全なトンネルを作成します。コマンド構造は次のとおりです:

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

このシナリオでは、コマンドは次のようになります:

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

これにより、Fly.io データベース (db_app_name) へのローカル トンネル (ポート 5433) が確立されます。

PostgreSQL FDW の構成

  1. 拡張機能をインストールします: ローカル PostgreSQL データベースに postgres_fdw をインストールします:

    <code class="language-sql">CREATE EXTENSION IF NOT EXISTS postgres_fdw;</code>
  2. 外部サーバーを作成します: リモート データベースへの接続を定義します:

    <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. ユーザーのマップ: アクセスを許可するユーザー マッピングの作成:

    <code class="language-sql">CREATE USER MAPPING FOR local_user SERVER fly_server
    OPTIONS (
        user 'remote_user',
        password 'remote_password'
    );</code>
  4. 外部テーブルをインポートします: 必要なリモート テーブルをインポートします:

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

    (注: リモート テーブルが ENUM タイプに依存する場合、これらもローカルに作成する必要があります。)

  5. マテリアライズド ビュー (オプション): 読み取り負荷の高い操作の場合、マテリアライズド ビューを使用するとパフォーマンスを向上させることができます。

Java API との統合

FDW とプロキシが構成されている場合、SpringBoot アプリケーションは、外部テーブルまたはマテリアライズド ビューのいずれかを使用して、ローカル データベース接続を通じて外部データをクエリできます。

重要なポイント

  • fdwは強力ですが、慎重な構成が必要です。
  • flyctlプロキシは、安全なリモートデータベースアクセスを簡素化します
  • このアプローチは、データの依存関係があっても、サービス分離を促進します
  • 結論
この方法は、リモートデータをローカルJavaアプリケーションに正常に統合し、分散データを管理するための柔軟なソリューションを提供しました。 同様の課題については、FDWを検討してください! 詳細については、LinkedInに接続してください。

以上がローカル開発、リモート データ: Java API から Fly.io PostgreSQL にアクセスするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。