[TOC]

1. 每个租户提供独立的数据库系统

这种方案的实现方式是所有租户共享同一个应用,但应用后端会连接多个数据库系统,一个租户单独使用一个数据库系统。这种方案的用户数据隔离级别最高,安全性最好,租户间的数据能够实现物理隔离。但成本较高。

img

2. 每个租户提供独立的表空间

这种方案的实现方式,就是所有租户共享同一个应用,应用后端只连接一个数据库系统,所有租户共享这个数据库系统,每个租户在数据库系统中拥有一个独立的表空间。

img

3. 按租户id字段区分租户

这种方案是多租户方案中最简单的设计方式,即在每张表中都添加一个用于区分租户的字段(如租户id或租户代码)来标识每条数据属于哪个租户,其作用很像外键。当进行查询的时候每条语句都要添加该字段作为过滤条件,其特点是所有租户的数据全都存放在同一个表中,数据的隔离性是最低的,完全是通过字段来区分的。

img

三种数据隔离方案的优劣势分析

隔离方案成本支持租户数量优点不足
独立数据库系统隔离级别最高,安全性最好,能够满足不同租户的独特需求,出现故障时恢复数据比较容易维护成本和购置成本高, 数据收集分析成本高
共享数据库,独立表空间较多提供了一定程度的逻辑数据隔离,一个数据库系统可支持多个租户统一数据库支持的Schema有限, 夸租户统计数据复杂
按租户id字段区分非常多维护和购置成本最低,每个数据库能够支持的租户数量最多隔离级别最低,安全性也最低,数据备份和恢复非常复杂,需要逐表逐条备份和还原

saas系统多租户数据隔离的实现(一)数据隔离方案 - 湖畔清茶杨柳飘 - 博客园 (cnblogs.com)

SAAS服务多租户数据隔离架构 - 知乎 (zhihu.com)