在 PostgreSQL 中使用多种模式而不是只使用一种模式的利弊?

Har*_*rel 9 schema postgresql database-design multi-tenant

对于拥有超过 300,000 个帐户(并且还在增长)的大型 SAAS 应用程序(由 PostgreSql 9.4 提供支持),使用每个帐户的模式对数据进行分区与将所有数据放在一个模式中并使用外键进行分区的优缺点是什么?在查询中对其进行分区?

我知道过去 pg_dump 在处理许多模式时非常缓慢,但不确定今天是否如此。我也知道必须对所有模式进行数据库结构的任何更改。而且我知道从好的方面来说,将模式从一个物理服务器移动到另一个很容易,以及从备份中恢复模式,更不用说以这种方式对数据进行分区是有意义的。

那么我缺少的优点和缺点是什么?

Erw*_*ter 4

显然,您正在处理每个用户模式中的相同表。你有考虑过继承吗?对于某些用例,它可以为您提供两全其美的效果。也有一些限制。您可以为每个用户拥有单独的模式,并且仍然可以非常方便地立即搜索所有用户表。

有关的:

除此之外,至少必须提及授予/撤销权限,这对于单独的模式来说要简单得多。

  • 我会研究继承。然而,我担心的是这里的规模。我在任何地方读到人们都在谈论多租户模式策略,但指的是数十、数百或数千个模式。一处提到了 20K 模式。问题是 - 400K 模式是否太多了?它会导致文件描述符疯狂并杀死服务器吗?我在推它吗? (3认同)