[TOC]
1. 每个租户提供独立的数据库系统
这种方案的实现方式是所有租户共享同一个应用,但应用后端会连接多个数据库系统,一个租户单独使用一个数据库系统。这种方案的用户数据隔离级别最高,安全性最好,租户间的数据能够实现物理隔离。但成本较高。
2. 每个租户提供独立的表空间
这种方案的实现方式,就是所有租户共享同一个应用,应用后端只连接一个数据库系统,所有租户共享这个数据库系统,每个租户在数据库系统中拥有一个独立的表空间。
3. 按租户id字段区分租户
这种方案是多租户方案中最简单的设计方式,即在每张表中都添加一个用于区分租户的字段(如租户id或租户代码)来标识每条数据属于哪个租户,其作用很像外键。当进行查询的时候每条语句都要添加该字段作为过滤条件,其特点是所有租户的数据全都存放在同一个表中,数据的隔离性是最低的,完全是通过字段来区分的。
三种数据隔离方案的优劣势分析
隔离方案 | 成本 | 支持租户数量 | 优点 | 不足 |
---|---|---|---|---|
独立数据库系统 | 高 | 少 | 隔离级别最高,安全性最好,能够满足不同租户的独特需求,出现故障时恢复数据比较容易 | 维护成本和购置成本高, 数据收集分析成本高 |
共享数据库,独立表空间 | 中 | 较多 | 提供了一定程度的逻辑数据隔离,一个数据库系统可支持多个租户 | 统一数据库支持的Schema有限, 夸租户统计数据复杂 |
按租户id字段区分 | 低 | 非常多 | 维护和购置成本最低,每个数据库能够支持的租户数量最多 | 隔离级别最低,安全性也最低,数据备份和恢复非常复杂,需要逐表逐条备份和还原 |