多租戶就是說多個租戶共用一個實(shí)例,租戶的數(shù)據(jù)既有隔離又有共享,從而解決數(shù)據(jù)存儲的問題。從架構(gòu)層面來分析,SaaS區(qū)別于傳統(tǒng)技術(shù)的重要差別就是Multi-Tenant模式。
SaaS多租戶在數(shù)據(jù)存儲上存在三種主要的方案,分別是
1.獨(dú)立數(shù)據(jù)庫
這是第一種方案,即一個租戶一個數(shù)據(jù)庫,這種方案的用戶數(shù)據(jù)隔離級別最高,安全性最好,但成本也高。
優(yōu)點(diǎn):
為不同的租戶提供獨(dú)立的數(shù)據(jù)庫,有助于簡化數(shù)據(jù)模型的擴(kuò)展設(shè)計,滿足不同租戶的獨(dú)特需求;
如果出現(xiàn)故障,恢復(fù)數(shù)據(jù)比較簡單。
缺點(diǎn):
增大了數(shù)據(jù)庫的安裝數(shù)量,隨之帶來維護(hù)成本和購置成本的增加。
這種方案與傳統(tǒng)的一個客戶、一套數(shù)據(jù)、一套部署類似,差別只在于軟件統(tǒng)一部署在運(yùn)營商那里。如果面對的是銀行、醫(yī)院等需要非常高數(shù)據(jù)隔離級別的租戶,可以選擇這種模式,提高租用的定價。如果定價較低,產(chǎn)品走低價路線,這種方案一般對運(yùn)營商來說是無法承受的。
2.共享數(shù)據(jù)庫,隔離數(shù)據(jù)架構(gòu)
這是第二種方案,即多個或所有租戶共享Database,但一個Tenant一個Schema。
優(yōu)點(diǎn):
為安全性要求較高的租戶提供了一定程度的邏輯數(shù)據(jù)隔離,并不是完全隔離;每個數(shù)據(jù)庫可以支持更多的租戶數(shù)量。
缺點(diǎn):
如果出現(xiàn)故障,數(shù)據(jù)恢復(fù)比較困難,因為恢復(fù)數(shù)據(jù)庫將牽扯到其他租戶的數(shù)據(jù);
如果需要跨租戶統(tǒng)計數(shù)據(jù),存在一定困難。
3.共享數(shù)據(jù)庫,共享數(shù)據(jù)架構(gòu)
這是第三種方案,即租戶共享同一個Database、同一個Schema,但在表中通過TenantID區(qū)分租戶的數(shù)據(jù)。這是共享程度最高、隔離級別最低的模式。
優(yōu)點(diǎn):
三種方案比較,第三種方案的維護(hù)和購置成本最低,允許每個數(shù)據(jù)庫支持的租戶數(shù)量最多。
缺點(diǎn):
隔離級別最低,安全性最低,需要在設(shè)計開發(fā)時加大對安全的開發(fā)量;
數(shù)據(jù)備份和恢復(fù)最困難,需要逐表逐條備份和還原。
如果希望以最少的服務(wù)器為最多的租戶提供服務(wù),并且租戶接受以犧牲隔離級別換取降低成本,這種方案最適合。