使用外部数据包装器进行转发
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。很简单。
如下架构:服务器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。很简单。