Rumah >Java >javaTutorial >Pembangunan Tempatan, Data Jauh: Mengakses Fly.io PostgreSQL daripada API Java Anda

Pembangunan Tempatan, Data Jauh: Mengakses Fly.io PostgreSQL daripada API Java Anda

DDD
DDDasal
2025-01-27 06:08:10808semak imbas

Menyambung Pangkalan Data PostgreSQL Jauh ke Aplikasi Java Setempat Anda: Panduan Praktikal

Mengakses data daripada pangkalan data luaran semasa pembangunan tempatan adalah cabaran biasa. Artikel ini memperincikan penyelesaian menggunakan PostgreSQL Foreign Data Wrapper (FDW) dan Fly Proxy untuk menyambungkan API Java setempat (menggunakan SpringBoot) ke pangkalan data PostgreSQL jauh yang dihoskan di Fly.io.

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

Masalahnya: Merapatkan Jurang

Projek ini memerlukan pengambilan data daripada jadual PostgreSQL yang berada pada aplikasi yang dihoskan oleh Fly.io. Akses terus daripada persekitaran pembangunan tempatan telah disekat kerana sekatan rangkaian. Ini membentangkan dua halangan utama:

  1. Mewujudkan sambungan selamat daripada mesin tempatan ke pangkalan data Fly.io.
  2. Mengakses data pangkalan data jauh dalam aplikasi Java tempatan.

Penyelesaian: Fly Proxy dan PostgreSQL FDW

Penyelesaian itu memanfaatkan Fly Proxy untuk mencipta terowong selamat dan PostgreSQL FDW untuk menganggap pangkalan data jauh sebagai sumber data setempat.

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

Memahami PostgreSQL FDW

Pembungkus Data Asing (FDW) PostgreSQL membenarkan pertanyaan sumber data luaran seolah-olah ia adalah tempatan. Sambungan postgres_fdw memudahkan sambungan ini.

Menyediakan Proksi Lalat

Sebelum bermula, pastikan flyctl dipasang. Fly Proxy mencipta terowong selamat. Struktur arahan ialah:

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

Untuk senario ini, perintahnya menyerupai:

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

Ini mewujudkan terowong tempatan (port 5433) ke pangkalan data Fly.io (db_app_name).

Mengkonfigurasi PostgreSQL FDW

  1. Pasang Sambungan: Pasang postgres_fdw dalam pangkalan data PostgreSQL setempat anda:

    <code class="language-sql">CREATE EXTENSION IF NOT EXISTS postgres_fdw;</code>
  2. Buat Pelayan Asing: Tentukan sambungan ke pangkalan data jauh:

    <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. Pengguna Peta: Cipta pemetaan pengguna untuk memberikan akses:

    <code class="language-sql">CREATE USER MAPPING FOR local_user SERVER fly_server
    OPTIONS (
        user 'remote_user',
        password 'remote_password'
    );</code>
  4. Import Jadual Luar: Import jadual jauh yang diperlukan:

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

    (Nota: Jika jadual jauh bergantung pada jenis ENUM, ini juga mesti dibuat secara setempat.)

  5. Materialized View (Pilihan): Untuk operasi baca-berat, paparan terwujud boleh meningkatkan prestasi.

Menyepadukan dengan API Java

Dengan FDW dan proksi yang dikonfigurasikan, aplikasi SpringBoot boleh menanyakan data luaran melalui sambungan pangkalan data tempatan, menggunakan sama ada jadual asing atau paparan terwujud.

Pengambilan Utama

  • FDW berkuasa tetapi memerlukan konfigurasi yang teliti.
  • flyctl proksi memudahkan akses pangkalan data jauh selamat.
  • Pendekatan ini menggalakkan decoupling perkhidmatan, walaupun dengan ketergantungan data.

Kesimpulan

Kaedah ini berjaya mengintegrasikan data jauh ke dalam aplikasi Java tempatan, yang menawarkan penyelesaian yang fleksibel untuk menguruskan data yang diedarkan. Pertimbangkan FDW untuk cabaran yang sama! Sambungkan pada LinkedIn untuk perbincangan lanjut.

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

Atas ialah kandungan terperinci Pembangunan Tempatan, Data Jauh: Mengakses Fly.io PostgreSQL daripada API Java Anda. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn