公司建設(shè)一個(gè)SaaS平臺(tái),用于發(fā)布各種企業(yè)級(jí)的SaaS應(yīng)用,需要新增一個(gè)多租戶版本的用戶管理系統(tǒng),下面歸納總結(jié)下整個(gè)多租戶版本的用戶管理數(shù)據(jù)模型設(shè)計(jì)。
1、數(shù)據(jù)存儲(chǔ)架構(gòu)
現(xiàn)有的多租戶用戶數(shù)據(jù)存儲(chǔ)主要分為三種方式:獨(dú)立數(shù)據(jù)庫、共享數(shù)據(jù)庫但隔離數(shù)據(jù)、共享數(shù)據(jù)庫且共享數(shù)據(jù),這三種方式主要有以下特征:
獨(dú)立數(shù)據(jù)庫:主要是為不同的租戶提供獨(dú)立的不同的數(shù)據(jù)庫,租戶與租戶之間從數(shù)據(jù)庫層面完全隔離,互不影響。能夠簡(jiǎn)化數(shù)據(jù)模型設(shè)計(jì),且后續(xù)專有特殊需求也比較容易實(shí)現(xiàn);故障修復(fù)、數(shù)據(jù)處理也相對(duì)簡(jiǎn)單。這種方式數(shù)據(jù)安全級(jí)別最高、安全性最好,但是成本太高,維護(hù)工作量太大;
共享數(shù)據(jù)庫但隔離數(shù)據(jù):是多個(gè)租戶可以共享一個(gè)數(shù)據(jù)庫,但不同的租戶使用不同的Schema,從一定程度上隔離了用戶數(shù)據(jù),每個(gè)數(shù)據(jù)庫可以支持多個(gè)租戶應(yīng)用。這種方式相對(duì)前面大大降低了成本,但后續(xù)如果數(shù)據(jù)庫出現(xiàn)故障、數(shù)據(jù)恢復(fù)等操作將增加復(fù)雜度;
共享數(shù)據(jù)庫且共享數(shù)據(jù):是多個(gè)租戶共享一個(gè)數(shù)據(jù)庫同一個(gè)Schema,通過數(shù)據(jù)庫表字段來進(jìn)行區(qū)分不同的租戶。這種方式成本最低,安全性最差,后續(xù)數(shù)據(jù)庫故障也更復(fù)雜;
考慮到公司建設(shè)初期用戶量少,且需要大力控制成本,暫定為共享數(shù)據(jù)庫且共享數(shù)據(jù)的方式來實(shí)現(xiàn)多租戶版本的用戶管理系統(tǒng)。
2、總體業(yè)務(wù)結(jié)構(gòu)
SaaS平臺(tái)的用戶管理系統(tǒng)主要是統(tǒng)一管理用戶信息,用戶通過SaaS平臺(tái)統(tǒng)一注冊(cè)、登錄后,能夠試用、采購(gòu)各企業(yè)應(yīng)用,實(shí)現(xiàn)各個(gè)第三方企業(yè)應(yīng)用的集成。
從功能結(jié)構(gòu)上大致可以分成4個(gè)業(yè)務(wù)域:租戶域、租戶管理域、用戶域、用戶權(quán)限域等;
租戶域:主要描述租戶的基本信息,以及租戶的組織結(jié)構(gòu)、租戶的用戶成員(成員職位)等信息;
租戶管理域:主要描述租戶多級(jí)管理員詳情,以及管理員對(duì)應(yīng)管理的企業(yè)應(yīng)用權(quán)限、數(shù)據(jù)范圍權(quán)限;
用戶域:主要描述用戶基本信息,用戶登錄賬號(hào)、實(shí)名認(rèn)證、登錄的第三方賬號(hào)綁定等信息;
用戶權(quán)限域:主要描述用戶能夠使用的企業(yè)應(yīng)用以及數(shù)據(jù)范圍的權(quán)限信息;
3、租戶域
描述了租戶的基本信息、租戶組織類型、租戶實(shí)體認(rèn)證信息,以及租戶的組織結(jié)構(gòu)、成員、成員職位等。
T_TENANT:租戶基本信息表,主要描述了租戶名稱、組織類型、地址、LOGO等基本信息;
T_TENANT_CERTIFICATION:租戶認(rèn)證信息,需要人工審核認(rèn)證;
T_TENANT_ORG:租戶組織結(jié)構(gòu)信息,根節(jié)點(diǎn)為整個(gè)租戶,可以通過組織結(jié)構(gòu)路徑來規(guī)避MySQL數(shù)據(jù)的遞歸操作;
T_USER_INFO:用戶基本信息表,記錄了整個(gè)SaaS平臺(tái)的用戶基本信息;
T_TENANT_USER:租戶下所有用戶信息表。在SaaS平臺(tái),用戶注冊(cè)后是不屬于具體某個(gè)租戶的,需要?jiǎng)?chuàng)建租戶或加入某個(gè)租戶后,才存在具體的租戶信息,且一個(gè)用戶可以加入多個(gè)租戶。
T_TENANT_ORG_2_USER:租戶下所有用戶和租戶組織結(jié)構(gòu)的關(guān)系,不在具體組織結(jié)構(gòu)的租戶用戶統(tǒng)一在租戶根目錄下,便于后續(xù)租戶管理員進(jìn)行調(diào)整;
T_TENANT_POSITION:用戶在某個(gè)組織結(jié)構(gòu)下的職位描述,支持管理員自定義;
4、租戶管理域
描述了租戶的多級(jí)管理員,以及這些管理員能夠管理哪些企業(yè)應(yīng)用,哪些組織結(jié)構(gòu)的權(quán)限范圍;
T_TENANT_MANAGE:主要描述了租戶的管理員清單,管理員類型等信息?,F(xiàn)有的SaaS平臺(tái)一般都只分為超級(jí)管理員和二級(jí)管理員。
T_TENANT_MANAGE_SAAS_RANGE:描述了租戶管理員能夠管理的企業(yè)應(yīng)用清單,超級(jí)管理員為全部;
T_TENANT_MANAGE_DATA_RANGE:描述了租戶管理員能夠管理的組織結(jié)構(gòu)清單,超級(jí)管理員為全部;
5、用戶域
描述了用戶的名稱、性別、手機(jī)號(hào)碼、用戶賬號(hào)、登錄密碼等基本信息,以及用戶的實(shí)名認(rèn)證信息,用戶綁定的第三方賬號(hào)信息;
T_USER_INFO:描述了用戶的姓名、性別、手機(jī)號(hào)碼、郵箱等基本信息;
T_USER_CREDENTIAL:描述了用戶的賬號(hào)登錄信息;
T_USER_BAND_OPENID:描述第三方賬號(hào)登錄的綁定信息;
T_USER_CERTIFICATION:描述了用戶的實(shí)名認(rèn)證信息;
6、用戶權(quán)限域
描述了用戶所對(duì)應(yīng)的企業(yè)應(yīng)用、以及組織結(jié)構(gòu)權(quán)限,一般的SaaS平臺(tái)的用戶權(quán)限分為三個(gè)維度:租戶全體、組織結(jié)構(gòu)全體、指定具體的個(gè)人;
T_SAAS_PERMISSION_TENANT:描述了企業(yè)級(jí)應(yīng)用的租戶全體的權(quán)限;
T_SAAS_PERMISSION_ORG:描述了企業(yè)級(jí)應(yīng)用的組織結(jié)構(gòu)全體的權(quán)限;
T_SAAS_PERMISSION_USER:描述了企業(yè)級(jí)應(yīng)用指定具體的各人權(quán)限;
7、最后
整個(gè)數(shù)據(jù)模型設(shè)計(jì)框架大致就是這樣,部分細(xì)節(jié)需要進(jìn)行調(diào)整。訂單部分和普通訂單管理沒有區(qū)別,只是增加了租戶標(biāo)識(shí),這里不做描述。整個(gè)數(shù)據(jù)模型基本能夠滿足現(xiàn)有SaaS平臺(tái)提出的各種業(yè)務(wù)場(chǎng)景。
聯(lián)系客服