首页 >Java >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 表中获取数据。由于网络限制,从本地开发环境的直接访问被阻止。 这带来了两个关键障碍:

  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 Proxy 简化了安全的远程数据库访问。
  • 这种方法促进了服务解耦,即使存在数据依赖性。

结论

该方法成功地将远程数据集成到本地Java应用程序中,为管理分布式数据提供了灵活的解决方案。 考虑使用 FDW 来应对类似的挑战! 在 LinkedIn 上连接以进行进一步讨论。

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

以上是本地开发,远程数据:从 Java API 访问 Fly.io PostgreSQL的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn