将Postgres与每个客户一起使用。为了隔离和安全。每个架构都有一个不同的用户来限制访问。寻找一种有效地跨架构池化连接的方法。
曾尝试使用应用程序级连接池(Hikari),但我看不到它能够有效地跨模式进行池化。不想通过增加每个架构/用户的连接数来达到Postgress连接数的限制。通常,如果连接增长为架构的一种因素,则似乎不是最有效的池连接方式。
[也尝试过pgbouncer,但不确定如何为此有效地配置它。尝试在每个客户的应用程序端使用Hikari,并尝试使用pgbouncer将其映射到更少的postgres连接。在会话模式下,pgbouncer似乎只是充当代理,并且连接数与来自Hikari的每个连接一致。在事务模式下,pgbouncer和Hikari似乎不同步,我从Postgres收到协议错误消息。
[该问题似乎与几年前的this问题非常相似。不幸的是,对于如何有效管理这种类型的连接池,我没有一个明确的答案。
因此,对于每个客户来说,可能有很多模式,问题是当使用多个模式和用户时,如何为Postgres正确建立连接池?
每个架构使用不同的用户来限制访问。
这实际上有效吗?您的应用程序服务器是否不需要知道如何以每个用户身份进行连接以完成其工作?如果我可以诱使应用服务器显示来自错误架构的数据,那么在执行此操作之前,我不能像诱因的用户一样轻易地诱使它连接吗?
如果是这样,我认为这两个安全“层”并不是真正相互独立的,因此它们并不是真正的两层。