(3)分離表架構(gòu)
分離表架構(gòu)即所有用戶共享相同的數(shù)據(jù)庫(kù)實(shí)例,但每個(gè)用戶獨(dú)享由一系列數(shù)據(jù)庫(kù)表組成的Schema。
相對(duì)于共享表架構(gòu)和分離數(shù)據(jù)庫(kù)架構(gòu)而言,分離表架構(gòu)是一種折中的方案,在這種架構(gòu)下,實(shí)現(xiàn)數(shù)據(jù)的分離和災(zāi)備比共享表架構(gòu)容易,而硬件成本比分離數(shù)據(jù)庫(kù)架構(gòu)低廉。
這3種架構(gòu)根據(jù)軟件系統(tǒng)客戶如何使用數(shù)據(jù)庫(kù)實(shí)例和數(shù)據(jù)庫(kù)表進(jìn)行劃分。如果所有的軟件系統(tǒng)客戶共享使用相同的數(shù)據(jù)庫(kù)實(shí)例和相同的數(shù)據(jù)庫(kù)表(可以通過(guò)類(lèi)似于租戶ID字段來(lái)區(qū)分?jǐn)?shù)據(jù)的從屬)則為共享表架構(gòu);如果每個(gè)軟件系統(tǒng)客戶單獨(dú)擁有自己的數(shù)據(jù)庫(kù)實(shí)例則為分離數(shù)據(jù)庫(kù)架構(gòu);如果軟件系統(tǒng)客戶共享相同的數(shù)據(jù)實(shí)例,但是每個(gè)客戶單獨(dú)擁有自己的由一系列數(shù)據(jù)庫(kù)表組成的表結(jié)構(gòu),則為分離表架構(gòu)。
3種架構(gòu)的優(yōu)缺點(diǎn)比較如表5-1所示。
表5-1 3種架構(gòu)優(yōu)缺點(diǎn)比較
上述3種架構(gòu)都有其優(yōu)缺點(diǎn),所以在設(shè)計(jì)云系統(tǒng)時(shí),系統(tǒng)架構(gòu)師需要進(jìn)行全面的分析和考量,綜合各方面的因素以選擇合適的多租戶架構(gòu)。有一些選擇方法可供參考,例如,系統(tǒng)服務(wù)的客戶數(shù)量越多,則越適合使用共享表的架構(gòu);對(duì)數(shù)據(jù)隔離性和安全性要求越高,則越適合使用分離數(shù)據(jù)庫(kù)的架構(gòu)。而在超大型的云系統(tǒng)中,一般都會(huì)采用復(fù)合型的多租戶架構(gòu),以平衡系統(tǒng)成本和性能,這其中Salesforce.com便是一個(gè)典型的案例。Salesforce.com最初搭建于共享表架構(gòu),但是隨著新客戶的不斷簽入,單純的共享表架構(gòu)已經(jīng)很難滿足日益增長(zhǎng)的性能要求,Salesforce.com逐步開(kāi)始在不同的物理區(qū)域搭建分布式系統(tǒng)。在全局上,Salesforce.com以類(lèi)似于分離數(shù)據(jù)庫(kù)的架構(gòu)運(yùn)行,在單個(gè)區(qū)域內(nèi),系統(tǒng)則仍然按照共享表架構(gòu)運(yùn)行。