具有多个模式和用户的连接池 Postgres

Connection pooling Postgres with multiple schemas and users

使用 Postgres 和每个客户的模式。为了隔离和安全。每个模式不同的用户来限制访问。寻找一种有效地跨模式汇集连接的方法。

已尝试使用应用程序级连接池 (Hikari),但我认为它无法有效地跨模式进行池化。不想通过增加每个 schema/user 的连接数来达到 Postgress 连接数的限制。通常,如果连接作为模式的一个因素增长,那么它似乎不是最有效的连接池连接方式。

也尝试了 pgbouncer 但不确定如何为此目的有效地配置它。尝试在每个客户的应用程序端使用 Hikari,并使用 pgbouncer 将它们映射到更少的 postgres 连接。在会话模式下,pgbouncer 似乎只是充当代理,连接数量随着来自 Hikari 的每个连接而增长。在事务模式下,pgbouncer 和 Hikari 似乎以某种方式不同步,我从 Postgres 收到协议错误消息。

这个问题似乎与 this 几年前的问题非常相似。不幸的是,我没有看到关于如何有效管理这种类型的连接池的明确答案。

因此,根据客户的说法,可能有很多模式,问题是在使用多个模式和用户时如何正确地为 Postgres 建立连接池?

A different user per schema to limit access.

这个真的有效吗?您的应用程序服务器不需要知道如何作为每个用户进行连接以完成其工作吗?如果我可以欺骗应用服务器向我显示来自错误模式的数据,我难道不能在这样做之前像错误的用户一样轻松地欺骗它连接吗?

如果是这样,我认为这两个 "layers" 安全性并不是真正相互独立的,因此它们不是真正的两层。