PostgreSQL多租户模式的架构和数据库之间的区别

4
我们设计了一个多租户系统(假设有数百个租户,而非数千个)。没有共享数据。数据库是PostgreSQL。是创建每个租户单独的数据库还是架构更好呢?
有什么优缺点?对文件系统、DB引擎表/视图(如锁定、对象权限等)有什么影响——在多架构解决方案中它们会更大吗?单独的数据库应该更容易备份/恢复。
我知道有很多类似的问题,但大多数都涉及共享数据的情况,这是多个数据库的主要缺点,而我们没有这样的要求。
1个回答

5
如果您不需要在单个查询中使用来自多个租户的表,则应选择单独的数据库。这不会真正影响查询的原始速度,也不会对文件系统或内存产生影响。但是,查询优化器在处理许多架构和许多表时会变得更慢(但我们谈论的是数十万张表)。在这种情况下,在psql中进行Tab键补全也不太高效。与分离的模式相比,使用单独的数据库进行pg_dump/pg_restore也稍微容易一些。但这是一个模糊的界限,实际的答案可能基于个人意见和喜好。

3
我看到的唯一问题是java中的连接池支持在同一池中使用不同的用户名,但不支持不同的数据库。由于这种限制,您需要针对每个数据库和租户选择db的情况下分别创建池。如果要保持连接保持活动状态(即使是空闲的),这似乎不是一个好主意。我正在考虑采用一些混合方法,或者根本不使用连接池,因为在大多数情况下创建连接并不费时。 - redguy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接