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