多租戶用戶管理數據模型設計

閱讀文本大概需要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大企業有哪些病,別被這些病毀了自己?

關注我每天進步一點點

你點的在看,我都當成了喜歡

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章