saas平臺(tái)數(shù)據(jù)模型設(shè)計(jì)方案

一,設(shè)計(jì)模型需要考慮那些因素

1.1可擴(kuò)展性

要考慮租戶的數(shù)量,每個(gè)租戶存儲(chǔ)的級(jí)別,整體存儲(chǔ),工作符合能力

1.2 組合的隔離性

數(shù)據(jù)的隔離和性能 多個(gè)租戶的的負(fù)載能力增加是否影響其他租戶

1.3 租戶成本

數(shù)據(jù)庫存儲(chǔ)量影響成本

1.4 開發(fā)復(fù)雜度

數(shù)據(jù)結(jié)構(gòu)的的變化和查詢語句的變化,以及服務(wù)的適配性問題

1.5 運(yùn)維復(fù)雜度

性能監(jiān)控,數(shù)據(jù)結(jié)構(gòu)schema的管理,租戶數(shù)據(jù)異常管理,災(zāi)備問題考慮

1.6 可定制化業(yè)務(wù)成都

租戶的討論集中在數(shù)據(jù)層。但考慮一下應(yīng)用層。應(yīng)用程序?qū)颖灰暈橐粋€(gè)整體實(shí)體。如果將應(yīng)用程序劃分為許多小型組件,您的租戶模型選擇可能會(huì)發(fā)生變化。對(duì)于租戶和存儲(chǔ)技術(shù)或使用的平臺(tái),您可以對(duì)其他組件進(jìn)行不同的處理。

二,常見的架構(gòu)模式

2.1 獨(dú)立服務(wù)和獨(dú)立數(shù)據(jù)庫

這個(gè)模式中,應(yīng)用層和數(shù)據(jù)層都是隔離的
應(yīng)用程序的每人實(shí)例都是獨(dú)立實(shí)例。
租戶擁有自己獨(dú)立的數(shù)據(jù)庫,每人應(yīng)用程序?qū)嵗恍枰粋€(gè)數(shù)據(jù)庫。對(duì)租戶的管理獨(dú)立于系統(tǒng)之外,對(duì)于每一個(gè)租戶,整個(gè)應(yīng)用程序需要重復(fù)安裝一次。供應(yīng)商都可以為租戶管理軟件。每個(gè)應(yīng)用程序?qū)嵗寂渲脼檫B接到其相應(yīng)的數(shù)據(jù)庫
優(yōu)點(diǎn):
為不同的租戶提供獨(dú)立的應(yīng)用實(shí)例和數(shù)據(jù)庫,有助于簡化數(shù)據(jù)模型和業(yè)務(wù)模型的擴(kuò)展設(shè)計(jì),滿足不同租戶的獨(dú)特需求,如果出現(xiàn)故障,恢復(fù)系統(tǒng)或數(shù)據(jù)均比較簡單,系統(tǒng)間也不會(huì)相互影響。
缺點(diǎn):
數(shù)據(jù)庫層面,每個(gè)租戶數(shù)據(jù)庫都作為獨(dú)立數(shù)據(jù)庫進(jìn)行部署。該模型提供了最大的數(shù)據(jù)庫隔離。但隔離需要為每個(gè)數(shù)據(jù)庫分配足夠的資源來處理其高峰負(fù)載。這里重要的是,彈性池不能用于部署在不同資源組或不同訂閱中的數(shù)據(jù)庫。這種限制使得這種獨(dú)立的單租戶應(yīng)用程模型成為從整體數(shù)據(jù)庫成本角度來看最昂貴的解決方案,應(yīng)用層面,每人租戶若存在個(gè)性化定制,則需要對(duì)項(xiàng)目進(jìn)行橫向擴(kuò)展,擴(kuò)展時(shí)務(wù)必需要保證與主干版本的兼容性問題。運(yùn)維層面,應(yīng)用和數(shù)據(jù)庫的安裝數(shù)量會(huì)隨租戶的數(shù)量線性遞增,隨之帶來維護(hù)成本和購置成本的增加
模型圖像

image.png

2.2 一套服務(wù)和獨(dú)立數(shù)據(jù)庫

這個(gè)模型中,應(yīng)用層和數(shù)據(jù)層都是隔離的。
應(yīng)用程序的每個(gè)實(shí)例都是獨(dú)立實(shí)例。
租戶擁有自己獨(dú)立的數(shù)據(jù)庫,每個(gè)應(yīng)用程序?qū)嵗恍枰粋€(gè)數(shù)據(jù)庫。對(duì)租戶的管理獨(dú)立于系統(tǒng)之外,對(duì)于每一人租戶,整人應(yīng)用程席需要重復(fù)安裝一次。供應(yīng)商都可以為相戶管理軟件。每個(gè)應(yīng)用程序?qū)嵗寂渲脼檫B接到其相應(yīng)的數(shù)據(jù)庫。
優(yōu)點(diǎn):
為不同的租戶提供獨(dú)立的應(yīng)用實(shí)例和數(shù)據(jù)庫,有助于簡化數(shù)據(jù)模型和業(yè)務(wù)模型的擴(kuò)展設(shè)計(jì),滿足不同租戶的獨(dú)特需求如果出現(xiàn)故障,恢復(fù)系統(tǒng)或數(shù)據(jù)均比較簡單,系統(tǒng)間也不會(huì)相互影響。
缺點(diǎn):
數(shù)據(jù)庫層面,每個(gè)租戶教據(jù)庫都作為獨(dú)立數(shù)據(jù)庫進(jìn)行部署。該模型提供了最大的數(shù)據(jù)庫隔離。但隔離需要為每人數(shù)據(jù)分配足夠的資源來外理其高峰負(fù)載。這里重要的是,彈性池不能用千部署在不同資源組或不同訂閱中的數(shù)據(jù)庫。這種限制使得這種獨(dú)立的單租戶應(yīng)用程模型成為從整體數(shù)據(jù)庫成本角度來看最昂貴的解決方案,應(yīng)用層面,每人租戶若存在個(gè)性化定制,則需要對(duì)項(xiàng)目進(jìn)行橫向擴(kuò)展,擴(kuò)展時(shí)務(wù)必需要保證與主千版本的兼容性問題。運(yùn)維層面,應(yīng)用和數(shù)據(jù)庫的安裝數(shù)量會(huì)隨租戶的數(shù)量線性遞增,隨之帶來維護(hù)成本和購置成本的增加
模型圖像

image.png

2.2 一套服務(wù)和一套數(shù)據(jù)庫
這個(gè)模型和模式2的區(qū)別是共享數(shù)據(jù)表。也就是說共同使用一個(gè)數(shù)據(jù)庫一個(gè)表使用字段進(jìn)行數(shù)據(jù)隔離。如表中增加TenantID多租戶的數(shù)據(jù)字段。這是共享程度最高、隔離級(jí)別最低的模式。
簡單來講,即每插入一條數(shù)據(jù)時(shí)都需要有一個(gè)客戶的標(biāo)識(shí)。這樣才能在同一張表中區(qū)分出不同客戶的數(shù)據(jù),這也是我們系統(tǒng)目前用到的(tenant id)。
優(yōu)點(diǎn):
方案的維護(hù)和購置成本低,允許每個(gè)數(shù)據(jù)庫支持的租戶數(shù)量最多.
缺點(diǎn):
隔離級(jí)別最低,安全性最低,需要在設(shè)計(jì)開發(fā)時(shí)加大對(duì)安全的開發(fā)量,數(shù)據(jù)備份和恢復(fù)最困難,需要逐表逐條備份和還
image.png

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容