文章轉自https://www.jb51.net/article/151723.htm
什么是多租戶
多租戶技術或稱多重租賃技術,簡稱SaaS
,是一種軟件架構技術,是實現如何在多用戶環境下(此處的多用戶一般是面向企業用戶)共用相同的系統或程序組件,並且可確保各用戶間數據的隔離性。
簡單講:在一台服務器上運行單個應用實例,它為多個租戶(客戶)提供服務。從定義中我們可以理解:多租戶是一種架構,目的是為了讓多用戶環境下使用同一套程序,且保證用戶間數據隔離。那么重點就很淺顯易懂了,多租戶的重點就是同一套程序下實現多用戶數據的隔離。
數據隔離方案
多租戶在數據存儲上存在三種主要的方案,分別是:
獨立數據庫
即一個租戶一個數據庫,這種方案的用戶數據隔離級別最高,安全性最好,但成本較高。
- 優點:為不同的租戶提供獨立的數據庫,有助於簡化數據模型的擴展設計,滿足不同租戶的獨特需求;如果出現故障,恢復數據比較簡單。
- 缺點:增多了數據庫的安裝數量,隨之帶來維護成本和購置成本的增加。
共享數據庫,獨立 Schema
多個或所有租戶共享Database,但是每個租戶一個Schema(也可叫做一個user)。底層庫比如是:DB2、ORACLE等,一個數據庫下可以有多個SCHEMA。
- 優點:為安全性要求較高的租戶提供了一定程度的邏輯數據隔離,並不是完全隔離;每個數據庫可支持更多的租戶數量。
- 缺點:如果出現故障,數據恢復比較困難,因為恢復數據庫將牽涉到其他租戶的數據;
共享數據庫,共享 Schema,共享數據表
即租戶共享同一個Database、同一個Schema,但在表中增加TenantID多租戶的數據字段。這是共享程度最高、隔離級別最低的模式。
簡單來講,即每插入一條數據時都需要有一個客戶的標識。這樣才能在同一張表中區分出不同客戶的數據,這也是我們系統目前用到的(provider_id)
- 優點:三種方案比較,第三種方案的維護和購置成本最低,允許每個數據庫支持的租戶數量最多。
- 缺點:隔離級別最低,安全性最低,需要在設計開發時加大對安全的開發量; 數據備份和恢復最困難,需要逐表逐條備份和還原。