在PostgreSQL安装中拆分客户端网站的最佳方式是什么?

我需要使用一个PostgreSQL安装来托pipe多个客户站点。 什么是最好的方式来分裂他们 – 通过架构或实例?

这些因素将使pipe理员更容易(特别是个别站点的备份/恢复),站点的性能以及内存使用的整体效率。

感谢Jason

“最好”的方式很大程度上取决于你的用例,但是在我的托pipedate间,我们只是给每个客户端自己的数据库用户,这是他们的数据库上的DBO,具有适当的权限和login限制(在Postgres和pg_hba.conf ),所以他们不能混淆别人的数据。

可以使用pg_dump来处理备份/恢复(单独转储每个数据库,这样就可以轻松恢复,而无需select转储文件),性能/调优与任何大中型Postgres实例相同。


按模式拆分(在同一个数据库中)也是一种select,但是它并不像一个单独的数据库那样执行相同的分离级别,而且显然不能让客户创build自己的模式(或者做其他任何需要DBO的模式)如果你这样做。


通过实例拆分(为每个客户端分离Postgres服务器)是最终的分离级别,但是真正需要每个客户端都有一个单独的OS用户(所以Postgres在完全独立的用户下运行)。 这也是一个巨大的内存/资源汇:Postgres(像大多数数据库系统)理想情况下应该是唯一的一个服务器上运行,只有一个实例。