數據庫多租戶數據隔離設計


1. 什么是saas系統
 “SaaS平台是運營saas軟件的平台。SaaS提供商為企業搭建信息化所需要的所有網絡基礎設施及軟件、硬件運作平台,並負責所有前期的實施、后期的維護等一系列服務,企業無需購買軟硬件、建設機房、招聘IT人員,即可通過互聯網使用信息系統。SaaS 是一種軟件布局模型,其應用專為網絡交付而設計,便於用戶通過互聯網托管、部署及接入。”

也就是說,我只需要能連接上互聯網,並且給saas平台交租金,我就能用saas平台給我提供的系統服務。這方面最典型的例子就是各種雲平台,例如阿里雲。既然我能通過互聯網使用saas平台提供的服務,那么其他人當然也是可以的。於是這就產生了一個多租戶的問題。

 

2. 什么是多租戶
多租戶問題,簡單來說,是一種架構設計方式,就是在一台或者一組服務器上運行的saas系統,可以為多個租戶(客戶)提供服務,目的是為了讓多個租戶在互聯網環境下使用同一套程序,且保證租戶間的數據隔離。從這種架構設計的模式上,不難看出來,多租戶架構的重點就是同一套程序下多個租戶數據的隔離。由於租戶數據是集中存儲的,所以要實現數據的安全性,就是看能否實現對租戶數據的隔離,防止租戶數據不經意或被他人惡意地獲取和篡改。

 

3. 數據隔離方案 
目前saas多租戶系統的數據隔離有三種解決方案,即為每個租戶提供獨立的數據庫、獨立的表空間、按字段區分租戶,每種方案都有其各自的適用情況。下面我們依次講解這3種方案。

3.1 每個租戶提供獨立的數據庫系統
這種方案的實現方式是所有租戶共享同一個應用,但應用后端會連接多個數據庫系統,一個租戶單獨使用一個數據庫系統。這種方案的用戶數據隔離級別最高,安全性最好,租戶間的數據能夠實現物理隔離。但成本較高(即不同租戶使用不同的數據庫)。

 

3.2 每個租戶提供獨立的表空間
這種方案的實現方式,就是所有租戶共享同一個應用,應用后端只連接一個數據庫系統,所有租戶共享這個數據庫系統,每個租戶在數據庫系統中擁有一個獨立的表空間(即不同租戶在同一個數據庫下,使用不同的表)。

 

3.3 按租戶id字段區分租戶
這種方案是多租戶方案中最簡單的設計方式,即在每張表中都添加一個用於區分租戶的字段(如租戶id或租戶代碼)來標識每條數據屬於哪個租戶,其作用很像外鍵。當進行查詢的時候每條語句都要添加該字段作為過濾條件,其特點是所有租戶的數據全都存放在同一個表中,數據的隔離性是最低的,完全是通過字段來區分的(即不同租戶使用同一個數據庫,同一張表,數據用租戶字段(tenantID)進行數據區分)。

 

 

4. 三種數據隔離方案的優劣勢分析



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM