多租户的几种实现方式

671 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第29天,点击查看活动详情

多租户的几种实现方式

介绍

多租户方案我们一般在Saas软件模型中经常提及,Sass软件全称是"Software as a service",意思是"软件及服务"。那什么是多租户,多租户简单点讲,就是我们一个软件系统,可以服务多个组织,每个组织的数据是隔离的,例如集团公司购买了一套业务系统,该业务系统同时为旗下3家子公司服务,每家公司数据全部隔离,这里面一个子公司就可以理解为一个租户。今天我们就来聊一聊这里面的多租户方案。

独立数据库

第一种方式独立数据库,每个租户使用独立的数据库,这种方式数据隔离级别最高、安全性最好,对与数据故障等等都不会影响到其他租户,并且数据恢复等等都比较简单,对于数据模型结构的扩展也比较方便,但是每个租户都需要独立安装数据库,部署成本高,并且业务代码需要调整,针对不同的租户切换到不同的数据库上。

共享数据库,独立Schema

该方式是所有的租户共用一个数据库服务,但是每个租户使用数据库不同的Schema进行隔离,逻辑上的数据隔离,并不是完全的物理上的隔离,可以支持较多的租户,但是由于使用的是一个数据库服务,一旦出现故障,恢复比较困难,并且会影响到其他租户的数据。

共享数据库,共享Schema,共享业务数据表

该方式是共享一个数据库、共享一个Schema,并且共享一个业务表,在表中添加tenant_id字段进行区分租户信息,该方式数据隔离级别最低,共享程度最高,数据库维护和安装成本较低,支持较多的租户数量,但是安全性较低,在业务设计是需要多考虑数据隔离和安全性方面的设计,数据备份和恢复较为困难,后期业务数据量大,对于备份和恢复难度更大,并且会影响到其他租户。