模式介绍
# 模式介绍
《灯灯》是一个基于SpringCloud+vue3的基础开发框架,支持租户模式、非租户模式,其中租户模式有3种常见的数据存储方式:
独立数据库
一个租户独享一个独立的数据库,可以是物理数据库或云数据库,隔离级别最高、最安全、同时成本也更高。本系统中将此模式称为:DATASOURCE模式 或 数据源模式
共享数据库,隔离数据架构
多个租户共享一个数据库,但一个租户独立使用一个SCHEMA。本系统中将此模式称为:SCHEMA模式 或 数据库模式
共享数据库,共享数据架构
一个租户共享一个数据库、共享一个SCHEMA,通过在表中增加tenant_id字段来区分租户的数据。本系统中将此模式称为:COLUMN模式、列模式 或 字段模式
本系统将非租户模式称为:NONE模式、非租户模式。
# 模式区别
租户模式 | 描述 | 优点 | 缺点 |
---|---|---|---|
NONE(非租户模式) | 非租户模式:没有租户 | 简单、适合独立系统 | 缺少租户系统的优点 |
COLUMN(字段模式) | 共享数据库,共享数据架构:租户共用一个数据库,在业务表中增加字段来区分 | 简单、不复杂、开发无感知 | 数据隔离性差、安全性差、数据备份和恢复困难、 |
SCHEMA(独立schema) | 共享数据库,隔离数据架构:每个租户独立一个 数据库(schema),执行sql时,动态在表名前增加schema | 简单、开发无感知、数据隔离性好 | 配置文件中必须配置数据库的root账号、不支持复杂sql和 sql嵌套自定义函数 |
DATASOURCE(独立数据源) | 独立数据库:每个租户独立一个 数据库(数据源),执行代码时,动态切换数据源 | 可独立部署数据库,数据隔离性好、扩展性高、故障影响小 | 相对复杂、开发需要注意切换数据源时的事务问题、需要较多的数据库 |
先独立数据库隔离租户,在按字段隔离门店等:每个租户独立一个 数据库(数据源),执行代码时,动态切换数据源,在动态拼接 子租户id 二次隔离 | 可独立部署数据库,数据隔离性好、扩展性高、故障影响小、支持大租户小门店形式 | 相对复杂、开发需要注意切换数据源时的事务问题、需要较多的数据库 |
# 《灯灯》实现的特点
- 通过注解 + 拦截器的方式实现租户数据的隔离
- 程序员sql编码完全无需拼接租户相关的sql
- 通过启动配置决定启用何种模式的插件,程序就能按照何种模式来隔离数据。
上次更新: 2022/05/16, 03:33:03