請問大家資料庫如何做多租戶模式?
先分享我們公司作法其中一個專案做法是mssql一個用戶開一個database
現在有300多個庫,活躍的40個左右
這樣做目前好處
1)產品升級更新共用sp、function邏輯很方便
2)跨客戶的統計效率快,不需要使用到db_link
像是
database
common_tools_db
customer1_db
customer2_db
有聽說過用虛擬機方式,一個用戶一個虛擬機,但不是很了解其優勢
或是 Relational Database Service (RDS) 服務
想討論各作法之間的差別
同一台機器開庫處理
優點:統一管理,交互統計方便。
缺點:資源共用,容易互相影響、備份不方便、一死全死。
開虛擬機處理
優點:資源各自獨享。維護容易不會一關全關。重建簡單快速。規劃獨立自主(但這也是缺點)
缺點:共用資源多少會無法全用。各庫不容易交互統計。需要各別帳密管理。
(不要給我說所有機器用同一個帳密,我會打死你)
ps:勸一下樓主
其實沒有任何一種作法比較好還是比較不好。
也沒有一種做法是比較優勢或比較不優勢。
因該「一級屠豬x」已經有事先點你過了。
依照客戶的對應做法而選擇不同的應用架構及處理。
某些情況是選用第一種會比較好。但某些情況則是要使用第二種。
我個人則是三種並存處理。
還有第三種「主從連動規劃」這我就不說了。
但並不是叫你不要問,而是要問對問題。
問錯或說錯了。真的會變成好像再被質問或教訓的感覺。
一個用戶一個虛擬機的好處是,資料庫萬一故障,不會大家一起死。
目前我們公司的做法是在設計 Table Schema 的時候多加一個 tenantId
的欄位,每個不同租戶在查詢資料的時候都會帶有自己的 tenantId