阅读文本大概需要3分钟。
公司建设一个SaaS平台,用于发布各种企业级的SaaS应用,需要新增一个多租户版本的用户管理系统,下面归纳总结下整个多租户版本的用户管理数据模型设计。
1、数据存储架构
现有的多租户用户数据存储主要分为三种方式:独立数据库、共享数据库但隔离数据、共享数据库且共享数据,这三种方式主要有以下特征:
独立数据库:主要是为不同的租户提供独立的不同的数据库,租户与租户之间从数据库层面完全隔离,互不影响。能够简化数据模型设计,且后续专有特殊需求也比较容易实现;故障修复、数据处理也相对简单。这种方式数据安全级别最高、安全性最好,但是成本太高,维护工作量太大;
共享数据库但隔离数据:是多个租户可以共享一个数据库,但不同的租户使用不同的Schema,从一定程度上隔离了用户数据,每个数据库可以支持多个租户应用。这种方式相对前面大大降低了成本,但后续如果数据库出现故障、数据恢复等操作将增加复杂度;
共享数据库且共享数据:是多个租户共享一个数据库同一个Schema,通过数据库表字段来进行区分不同的租户。这种方式成本最低,安全性最差,后续数据库故障也更复杂;
考虑到公司建设初期用户量少,且需要大力控制成本,暂定为共享数据库且共享数据的方式来实现多租户版本的用户管理系统。
2、总体业务结构
SaaS平台的用户管理系统主要是统一管理用户信息,用户通过SaaS平台统一注册、登录后,能够试用、采购各企业应用,实现各个第三方企业应用的集成。
从功能结构上大致可以分成4个业务域:租户域、租户管理域、用户域、用户权限域等;
租户域:主要描述租户的基本信息,以及租户的组织结构、租户的用户成员(成员职位)等信息;
租户管理域:主要描述租户多级管理员详情,以及管理员对应管理的企业应用权限、数据范围权限;
用户域:主要描述用户基本信息,用户登录账号、实名认证、登录的第三方账号绑定等信息;
用户权限域:主要描述用户能够使用的企业应用以及数据范围的权限信息;
3、租户域
描述了租户的基本信息、租户组织类型、租户实体认证信息,以及租户的组织结构、成员、成员职位等。
T_TENANT:租户基本信息表,主要描述了租户名称、组织类型、地址、LOGO等基本信息;
T_TENANT_CERTIFICATION:租户认证信息,需要人工审核认证;
T_TENANT_ORG:租户组织结构信息,根节点为整个租户,可以通过组织结构路径来规避MySQL数据的递归操作;
T_USER_INFO:用户基本信息表,记录了整个SaaS平台的用户基本信息;
T_TENANT_USER:租户下所有用户信息表。在SaaS平台,用户注册后是不属于具体某个租户的,需要创建租户或加入某个租户后,才存在具体的租户信息,且一个用户可以加入多个租户。
T_TENANT_ORG_2_USER:租户下所有用户和租户组织结构的关系,不在具体组织结构的租户用户统一在租户根目录下,便于后续租户管理员进行调整;
T_TENANT_POSITION:用户在某个组织结构下的职位描述,支持管理员自定义;
4、租户管理域
描述了租户的多级管理员,以及这些管理员能够管理哪些企业应用,哪些组织结构的权限范围;
T_TENANT_MANAGE:主要描述了租户的管理员清单,管理员类型等信息。现有的SaaS平台一般都只分为超级管理员和二级管理员。
T_TENANT_MANAGE_SAAS_RANGE:描述了租户管理员能够管理的企业应用清单,超级管理员为全部;
T_TENANT_MANAGE_DATA_RANGE:描述了租户管理员能够管理的组织结构清单,超级管理员为全部;
5、用户域
描述了用户的名称、性别、手机号码、用户账号、登录密码等基本信息,以及用户的实名认证信息,用户绑定的第三方账号信息;
T_USER_INFO:描述了用户的姓名、性别、手机号码、邮箱等基本信息;
T_USER_CREDENTIAL:描述了用户的账号登录信息;
T_USER_BAND_OPENID:描述第三方账号登录的绑定信息;
T_USER_CERTIFICATION:描述了用户的实名认证信息;
6、用户权限域
描述了用户所对应的企业应用、以及组织结构权限,一般的SaaS平台的用户权限分为三个维度:租户全体、组织结构全体、指定具体的个人;
T_SAAS_PERMISSION_TENANT:描述了企业级应用的租户全体的权限;
T_SAAS_PERMISSION_ORG:描述了企业级应用的组织结构全体的权限;
T_SAAS_PERMISSION_USER:描述了企业级应用指定具体的各人权限;
7、最后
整个数据模型设计框架大致就是这样,部分细节需要进行调整。订单部分和普通订单管理没有区别,只是增加了租户标识,这里不做描述。整个数据模型基本能够满足现有SaaS平台提出的各种业务场景。
☆
往期精彩
☆
01 漫谈发版哪些事,好课程推荐
02 Linux的常用最危险的命令
03 互联网支付系统整体架构详解
04 优秀的Java程序员必须了解的GC哪些
05 IT大企业有哪些病,别被这些病毁了自己?
关注我每天进步一点点
你点的在看,我都当成了喜欢