1. 程式人生 > >SaaS多租戶模式資料儲存方案

SaaS多租戶模式資料儲存方案

  雲端計算多租戶幾乎用於所有軟體即服務 (Software as a Service, SaaS) 應用程式,因為計算資源是可伸縮的,而且這些資源的分配由實際使用決定。話雖如此,使用者可以通過 Internet 訪問多種型別的 SaaS 應用程式,從小的基於 Internet 的小部件到大型企業軟體應用程式。根據儲存在企業網路之外的軟體供應商的基礎架構上的資料不同,安全需求也在不斷增長。應用程式需要多租戶是有許多原因的,其中最明顯的原因就是成本:在大多數情況下,為每個客戶增加幾個伺服器和一個數據庫是遠遠不夠的,儘管在安全要求很高的情況下這麼做有點用處。

  多租戶就是說多個租戶共用一個例項,租戶的資料既有隔離又有共享,說到底就是如何解決資料儲存的問題。

  現在SaaS Multi-Tenant在資料儲存上存在兩大類共三種主要的方案,分別是:獨立資料庫和共享資料庫,其中共享資料庫又可分為共享資料庫,隔離資料架構和共享資料庫,共享資料架構。下面就分別對這三種方案進行介紹:

獨立資料庫:

  這是第一種方案,即一個Tenant一個Database,這種方案的使用者資料隔離級別最高,安全性最好,但成本也高。

優點:

  為不同的租戶提供獨立的資料庫,有助於簡化資料模型的擴充套件設計,滿足不同租戶的獨特需求;如果出現故障,恢復資料比較簡單。

缺點:

  增大了資料庫的安裝數量,隨之帶來維護成本和購置成本的增加。

  這種方案與傳統的一個客戶、一套資料、一套部署類似,差別只在於軟體統一部署在運營商那裡。如果面對的是銀行、醫院等需要非常高資料隔離級別的租戶,可以選擇這種模式,提高租用的定價。如果定價較低,產品走低價路線,這種方案一般對運營商來說是無法承受的。

共享資料庫,隔離資料架構

  這是第二種方案,即多個或所有租戶共享Database,但一個Tenant一個Schema

優點:

  為安全性要求較高的租戶提供了一定程度的邏輯資料隔離,並不是完全隔離;每個資料庫可以支援更多的租戶數量。

缺點:

  如果出現故障,資料恢復比較困難,因為恢復資料庫將牽扯到其他租戶的資料;如果需要跨租戶統計資料,存在一定困難。

共享資料庫,共享資料架構

  這是第三種方案,即租戶共享同一個Database、同一個Schema,但在表中通過TenantID區分租戶的資料。這是共享程度最高、隔離級別最低的模式。

優點:

  三種方案比較,第三種方案的維護和購置成本最低,允許每個資料庫支援的租戶數量最多。

缺點:

  隔離級別最低,安全性最低,需要在設計開發時加大對安全的開發量;資料備份和恢復最困難,需要逐表逐條備份和還原。

  如果希望以最少的伺服器為最多的租戶提供服務,並且租戶接受以犧牲隔離級別換取降低成本,這種方案最適合。

總結

  三種方案好比學生分宿舍,隔離資料庫就好比10名學生一人一個宿舍,每個人拿著自己宿舍的鑰匙,一般貴族學校才有的待遇,學生都得是土豪;共享資料庫,隔離資料架構就好比10名學生一個宿舍,沒人一把宿舍鑰匙,一般家庭的學生都能住;共享資料庫,共享資料架構就是家裡條件比較差的學生,10個人一個宿舍,連宿舍鑰匙都配不起,大家只有一把鑰匙。

  簡單的舉個例子,這三種方案各有優缺點,根據實際情況選擇合適的方案。以上內容是本人通過網上大牛的分享以及和小夥伴的交流加上自己的理解,有不足之處,請大家批評指正。