Skip to content

🏢 SaaS 多租户

  • 支持 SaaS 多租户,可个性化``自定义每个租户套餐权限
  • 支持非租户模式 NONE多租户共享数据表字段模式 COLUMN共享数据库独立数据表模式 SCHEMA独立数据源模式 DATASOURCE独立数据源+字段模式 DATASOURCE_COLUMN等多种租户模式。

租户的数据隔离方案

非租户模式 NONE

  • 租户模式:无
  • 隔离模式:无
  • 即不区分租户。

共享数据表字段模式 COLUMN

  • 租户模式:共享数据库,共享Schema,共享表模式
  • 隔离模式:表级隔离(Shared Schema)
  • 即所有租户共用一套数据库与表结构,通过表中新增 租户ID tenant_id 字段,实现行级的数据隔离。

共享数据库独立数据表模式 SCHEMA

  • 租户模式:共享数据库,独立Schema模式
  • 隔离模式:Schema 级隔离(Isolated Schema)
  • 即每个租户独立拥有一套 Schema(命名空间),每个 Schema 内有独立的表结构,但共用数据库实例。

独立数据源模式 DATASOURCE

  • 租户模式:独立数据库模式
  • 隔离模式:数据库级隔离(Dedicated Database)
  • 即每个租户拥有独立的数据库实例,包含独立的表结构、权限、存储空间和连接配置。

独立数据源+字段模式 DATASOURCE_COLUMN

  • 租户模式:混合租户模式:独立数据库模式 + 共享Schema,共享表模式
  • 隔离模式:混合隔离模型:数据库级隔离(Dedicated Database)+ 表级隔离(Shared Schema)
  • 即每个租户拥有独立的数据库实例,包含独立的表结构、权限、存储空间和连接配置,同时支持子租户共用一套主租户数据库与表结构,通过表中新增 子租户ID tenant_id 字段,实现行级的数据隔离。

租户模式区别

租户模式数据模式描述优点缺点
NONE(非租户模式)非租户模式非租户模式:没有租户简单、适合独立系统缺少租户系统的优点。
COLUMN(字段模式|列模式)共享数据库、共享数据表租户共用一个数据库,在业务表中增加租户字段来区分。成本低、扩展灵活,简单、不复杂、开发无感知。需要严格控制租户隔离逻辑,容易因代码缺陷造成数据泄露,数据隔离粒度低。数据隔离性差、安全性差、数据备份和恢复困难。
SCHEMA(表模式)共享数据库、独立数据表数据库物理共享,但逻辑结构完全隔离。各租户互不干扰,逻辑边界清晰,安全性显著提升;可独立迁移、备份、审计,更灵活的数据维护。如需跨租户统计数据,存在一定难度。
DATASOURCE(独立数据源)独立数据库每个租户独立一个 数据库(数据源),执行代码时,动态切换数据源。可独立部署数据库,数据隔离性好、扩展性高、故障影响小。用户数据隔离级别高,安全性好。相对复杂、开发需要注意切换数据源时的事务问题、需要较多的数据库,成本较高。
DATASOURCE_COLUMN(独立数据源+字段模式)独立数据库先独立数据库隔离租户,在按字段隔离门店或单位等。每个租户独立一个 数据库(数据源),执行代码时,动态切换数据源,在动态拼接 子租户ID 二次隔离。可独立部署数据库,数据隔离性好、扩展性高、故障影响小、支持大租户小|子租户形式。相对复杂、开发需要注意切换数据源时的事务问题、需要较多的数据库。

多租户方案对比

隔离模式数据隔离级别资源利用率成本复杂度适用场景
共享表最高大量小租户、成本敏感场景
独立表中高中低中小型应用、原型验证
独立 Schema中型SaaS、安全要求较高的场景
独立数据库最高企业级应用、金融/医疗行业
混合模式可变可变中高多层级服务、复杂业务需求