SaaS的多租户数据隔离有哪几种?

saas多租户系统总结下来基本有三种数据隔离方案,分别是:

1、物理数据库隔离
2、单数据库表空间隔离
3、单表内租户id字段隔离

三种方案的对比图如下:

隔离方案 成本  安全 优点 缺点
物理数据库隔离 数据隔离级别高,而且也可以针对租户开发个性化需求,而且也可以支持更大的数据量。 支持的租户数量较少,同时数据库独立安装带来的运维成本比较高
物理数据库隔离 一个数据库可支撑多个租户,同时成本也相对较低,而且也有一定程度的数据隔离,属于中规中矩的方案。 数据库的表空间过多,管理比较困难,同时数据修复稍微复杂。
单表内租户id字段隔离 维护成本和购置成本都是最低,而且能够容纳的租户数量最多。适用于每个租户的数据量都不大的情况。 隔离级别最低,一旦出现数据库问题,所有租户的数据都不可避免的出问题。

1. 成本角度因素
隔离性越好,设计和实现的难度和成本越高,初始成本越高。共享性越好,同一运营成本下支持的用户越多,运营成本越低。

2、安全角度因素
要考虑业务和客户的安全方面的要求。安全性要求越高,越要倾向于隔离。

3、从租户数量角度考虑
系统要支持多少租户?上百?上千还是上万?可能的租户越多,越倾向于共享。
平均每个租户要存储数据需要的空间大小。存贮的数据越多,越倾向于隔离。
每个租户的同时访问系统的最终用户数量。需要支持的越多,越倾向于隔离。
是否想针对每一租户提供附加的服务,例如数据的备份和恢复等。这方面的需求越多, 越倾向于隔离。

最后关于使用租户id字段区分租户的问题:

每张表都存储一个租户ID字段,每一个租户ID代表一个租户,开发所有的增删改查的功能时都要带上租户ID,关于如何方便的携带租户ID可以参考mybatisPlus的租户设置。

其次是安全性较低,如果泄露了租户的租户ID,那么就很容易推测或暴漏出其他的数据。

单个表的数据量会随着租户数量变的越来越大,以至于最后不得不进行数据拆分。

定制化需求实现比较复杂且麻烦。

你可能感兴趣的:(数据库)