假设我有两个db1和db2,模式
- db1.public.orders
- db1.public.accounts
- db2.public.orders
- db2.public.accounts
如果我希望访问两个数据库,是否建议使用fdw将整个模式导入db1,以便使用一个客户端:
- db1.public.orders
- db1.public.accounts
- db1.shard02.orders (fdw linked to db2.public.orders)
- db1.shard02.accounts (fdw linked to db2.public.accounts)
还是应该简单地维护两个客户机dbClient1和dbClient2?
我想知道当两个数据库驻留在不同的数据中心,考虑使用连接池的客户机时,哪种方法在连接健壮性和性能方面更好。
使用fdw,池中的每个连接还将建立到远程db的tcp连接,并且所有查询都需要下推,因此将产生性能成本。既然可以使用两个独立的客户机,为什么还要麻烦呢?
如果需要独立访问两个数据库,请使用两个数据库连接。如果需要跨两个数据库协调事务,请使用带有两阶段提交协议的两个数据库连接。如果您需要连接来自不同数据库的表,出于性能考虑,请使用postgres_fdw解决方案。