使用外部数据包装器进行转发

Use foreign data wrapper for forwarding

如下架构:服务器A可以访问服务器B,服务器B可以访问服务器C,但是服务器A不能直接访问服务器C。

我可以像这样在服务器 B 上创建一个外部服务器:

CREATE SERVER foreign_server_b_to_c
    FOREIGN DATA WRAPPER postgres_fdw
    OPTIONS (dbname 'db_on_server_c', host 'serverc', port '5432', fetch_size '100000');

我可以像这样在服务器 A 上创建一个外部服务器:

CREATE SERVER foreign_server_a_to_b
    FOREIGN DATA WRAPPER postgres_fdw
    OPTIONS (dbname 'db_on_server_b', host 'serverb', port '5432', fetch_size '100000');

是否有可能将服务器 B 上的外部数据包装器用作从服务器 A 直接访问服务器 C 的代理?

我更喜欢数据库架构内的解决方案,但如果可行,可能会考虑在此之外的解决方案。

是的,这是可能的。在B上定义一个外来的table访问C上的一个table,在A上定义一个外来的table访问B上的外来的table。很简单。