对于拥有30万个帐户(并且还在不断增长)的大型SAAS应用程序(由PostgreSql 9.4支持),每个帐户使用模式对数据进行分区与将所有数据置于一个模式中并使用外键进行数据交换的利弊是什么?在查询中将其分区?
我知道过去使用许多模式时pg_dump的速度很慢,但不确定今天是否是如此。我也知道数据库结构的任何更改都必须在所有模式上进行。而且我知道,从正面来看,将模式从一台物理服务器移动到另一台物理服务器很容易,并且可以从备份中还原模式,更不用说以这种方式分区数据了。
那么,我缺少哪些利弊?
看起来都不好。单个巨大的表(“垂直增长”)很难管理,而大量的架构(“水平增长”)也很难管理。
—
DanielVérité15年
我正在重建一个具有该帐户数量(甚至更多用户)的旧系统。它使用一种共享方法(使用mySql),并且就性能而言可以正常工作。我关心的是保持该性能水平,但要增加其可维护性。
—
Harel'3
@Harel我很好奇,您是否尝试过使用400k架构或切换到其他架构/技术?
—
sthzg
在深入研究之后,我放弃了这个想法。我要创建的模式数量会击败任何对此的实际使用。我在每条记录中都使用了良好的旧帐户ID字段。不过,我所做的就是放弃数字自动增量ID取而代之的是UUID,这意味着我可以很容易地将整个帐户从一个数据库转移到另一个数据库,而不必担心破坏完整性。
—
哈雷尔