租户模式介绍
2023年3月26日大约 3 分钟
多租户传统实现方案
《灯灯》是一个基于SpringCloud+vue3的基础开发框架,支持租户模式、非租户模式,其中租户模式有3种常见的数据存储方式:
独立数据库
提示
《灯灯》中将此模式称为:DATASOURCE模式 或 数据源模式
一个租户独享一个独立的数据库,可以是物理数据库或云数据库,隔离级别最高、最安全、同时成本也更高。
共享数据库,隔离数据架构
4.x模式已经弃用此模式。
提示
《灯灯》中将此模式称为:SCHEMA模式 或 数据库模式。
4.x版本已经弃用该模式多个租户共享一个数据库,但一个租户独立使用一个SCHEMA。
共享数据库,共享数据架构
提示
《灯灯》中将此模式称为:COLUMN模式、列模式 或 字段模式
一个租户共享一个数据库、共享一个SCHEMA,通过在表中增加tenant_id字段来区分租户的数据。
《灯灯》扩展方案
本系统除了已实现上述3种模式,还额外支持2种模式
非租户模式
提示
《灯灯》将非租户模式称为:NONE模式、非租户模式。
即没有租户的概念,跟普通的web项目一样。
大租户+小租户模式
提示
《灯灯》将大租户+小租户模式 称为:独立数据源+字段模式、DATASOURCE_COLUMN模式、大租户小门店模式。
大租户 独享一个独立的数据库(可以是物理数据库或云数据库), 小租户在大租户 的数据库中通过 tenant_id 字段来隔离数据。 即大租户采用DATASOURCE模式隔离后,小租户在采用COLUMN模式隔离,大租户可以查询小租户的数据。
模式区别
租户模式 | 描述 | 优点 | 缺点 |
---|---|---|---|
NONE(非租户模式) | 非租户模式:没有租户 | 简单、适合独立系统 | 缺少租户系统的优点 |
COLUMN(字段模式) | 共享数据库,共享数据架构:租户共用一个数据库,在业务表中增加字段来区分 | 简单、不复杂、开发无感知 | 数据隔离性差、安全性差、数据备份和恢复困难、 |
DATASOURCE(独立数据源) | 独立数据库:每个租户独立一个 数据库(数据源),执行代码时,动态切换数据源 | 可独立部署数据库,数据隔离性好、扩展性高、故障影响小 | 相对复杂、开发需要注意切换数据源时的事务问题、需要较多的数据库 |
DATASOURCE_COLUMN(独立数据源+字段模式) | 先独立数据库隔离租户,在按字段隔离门店或单位等:每个租户独立一个 数据库(数据源),执行代码时,动态切换数据源,在动态拼接 子租户id 二次隔离 | 可独立部署数据库,数据隔离性好、扩展性高、故障影响小、支持大租户小门店形式 | 相对复杂、开发需要注意切换数据源时的事务问题、需要较多的数据库 |
《灯灯》实现不同租户模式的方式
- 通过注解 + 拦截器的方式实现租户数据的隔离
- 程序员sql编码完全无需拼接租户相关的sql(一套业务代码,可以通用所有模式)
- 通过启动配置决定启用何种模式的插件,程序就能按照何种模式来隔离数据。
👆🏻👆🏻👆🏻上面是评论区,对系统、本页文档什么疑问,可以在评论区留言。
❗️❗️❗️若评论区无法显示,请使用"手机热点"或"科学上网"。
❗️❗️❗️若评论区无法显示,请使用"手机热点"或"科学上网"。