多租戶SaaS平臺的數據庫方案

多租戶SaaS平臺的數據庫方案

1.1 多租戶是什麼

多租戶技術(Multi-TenancyTechnology)又稱多重租賃技術:是一種軟件架構技術,是實現如何在多用戶環境下 (此處的多用戶一般是面向企業用戶)共用相同的系統或程序組件,並且可確保各用戶間數據的隔離性。簡單講: 在一臺服務器上運行單個應用實例,它爲多個租戶(客戶)提供服務。從定義中我們可以理解:多租戶是一種架 構,目的是爲了讓多用戶環境下使用同一套程序,且保證用戶間數據隔離。那麼重點就很淺顯易懂了,多租戶的重 點就是同一套程序下實現多用戶數據的隔離

1.2 需求分析

傳統軟件模式,指將軟件產品進行買賣,是一種單純的買賣關係,客戶通過買斷的方式獲取軟件的使用權,軟件的 源碼屬於客戶所有,因此傳統軟件是部署到企業內部,不同的企業各自部署一套自己的軟件系統
Saas模式,指服務提供商提供的一種軟件服務,應用統一部署到服務提供商的服務器上,客戶可以根據自己的實際 需求按需付費。用戶購買基於WEB的軟件,而不是將軟件安裝在自己的電腦上,用戶也無需對軟件進行定期的維護 與管理
在這裏插入圖片描述
在SaaS平臺裏需要使用共用的數據中心以單一系統架構與服務提供多數客戶端相同甚至可定製化的服務,並且仍可 以保障客戶的數據正常使用。由此帶來了新的挑戰,就是如何對應用數據進行設計,以支持多租戶,而這種設計的 思路,是要在數據的共享、安全隔離和性能間取得平衡。

1.3 多租戶的數據庫方案分析

目前基於多租戶的數據庫設計方案通常有如下三種:

  • 獨立數據庫 共享數據庫
  • 獨立 Schema 共享數據庫
  • 共享數據表

1.3.1 獨立數據庫

獨立數據庫:每個租戶一個數據庫。

  • 優點:爲不同的租戶提供獨立的數據庫,有助於簡化數據模型的擴展設計,滿足不同租戶的獨特需求;如果 出現故障,恢復數據比較簡單。
  • 缺點: 增多了數據庫的安裝數量,隨之帶來維護成本和購置成本的增加

這種方案與傳統的一個客戶、一套數據、一套部署類似,差別只在於軟件統一部署在運營商那裏。由此可見此方案 用戶數據隔離級別高,安全性好,但是成本較高

1.3.2 共享數據庫、獨立 Schema

(1) 什麼是Schema oracle數據庫:在oracle中一個數據庫可以具有多個用戶,那麼一個用戶一般對應一個Schema,表都是建立 在Schema中的,(可以簡單的理解:在oracle中一個用戶一套數據庫表)
在這裏插入圖片描述

  • mysql數據庫:mysql數據中的schema比較特殊,並不是數據庫的下一級,而是等同於數據庫。比如執行 create schema test 和執行create database test效果是一模一樣的

在這裏插入圖片描述
共享數據庫、獨立 Schema:即多個或所有的租戶使用同一個數據庫服務(如常見的ORACLE或MYSQL數據庫), 但是每個租戶一個Schema。

  • 優點: 爲安全性要求較高的租戶提供了一定程度的邏輯數據隔離,並不是完全隔離;每個數據庫可支持更多 的租戶數量。
  • 缺點: 如果出現故障,數據恢復比較困難,因爲恢復數據庫將牽涉到其他租戶的數據; 如果需要跨租戶統計 數據,存在一定困難。

這種方案是方案一的變種。只需要安裝一份數據庫服務,通過不同的Schema對不同租戶的數據進行隔離。由於數 據庫服務是共享的,所以成本相對低廉。

1.3.3 共享數據庫、共享數據表

共享數據庫、共享數據表:即租戶共享同一個Database,同一套數據庫表(所有租戶的數據都存放在一個數據庫 的同一套表中)。在表中增加租戶ID等租戶標誌字段,表明該記錄是屬於哪個租戶的。

  • 優點:所有租戶使用同一套數據庫,所以成本低廉。
  • 缺點:隔離級別低,安全性低,需要在設計開發時加大對安全的開發量,數據備份和恢復困難。

這種方案和基於傳統應用的數據庫設計並沒有任何區別,但是由於所有租戶使用相同的數據庫表,所以需要做好對 每個租戶數據的隔離安全性處理,這就增加了系統設計和數據管理方面的複雜程度。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章