多租户数据库设计方法:共享数据库表
共享數據庫、獨立 Schema
(1) 什么是Schema
oracle數據庫:在oracle中一個數據庫可以具有多個用戶,那么一個用戶一般對應一個Schema,表都是建立在Schema中的,(可以簡單的理解:在oracle中一個用戶一套數據庫表)
?mysql數據庫:mysql數據中的schema比較特殊,并不是數據庫的下一級,而是等同于數據庫。比如執行create schema test 和執行create database test效果是一模一樣的
共享數據庫、獨立 Schema:即多個或所有的租戶使用同一個數據庫服務(如常見的ORACLE或MYSQL數據庫),但是每個租戶一個Schema。
優點: 為安全性要求較高的租戶提供了一定程度的邏輯數據隔離,并不是完全隔離;每個數據庫可支持更多的租戶數量。
缺點: 如果出現故障,數據恢復比較困難,因為恢復數據庫將牽涉到其他租戶的數據; 如果需要跨租戶統計數據,存在一定困難。
這種方案是方案一的變種。只需要安裝一份數據庫服務,通過不同的Schema對不同租戶的數據進行隔離。由于數據庫服務是共享的,所以成本相對低廉。
共享數據庫、共享數據表
共享數據庫、共享數據表:即租戶共享同一個Database,同一套數據庫表(所有租戶的數據都存放在一個數據庫的同一套表中)。在表中增加租戶ID等租戶標志字段,表明該記錄是屬于哪個租戶的。
優點:所有租戶使用同一套數據庫,所以成本低廉。
缺點:隔離級別最低,安全性最低,需要在設計開發時加大對安全的開發量,數據備份和恢復最困難。
這種方案和基于傳統應用的數據庫設計并沒有任何區別,但是由于所有租戶使用相同的數據庫表,所以需要做好對每個租戶數據的隔離安全性處理,這就增加了系統設計和數據管理方面的復雜程度。
?
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的多租户数据库设计方法:共享数据库表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 多租户数据库设计方法:独立数据库
- 下一篇: 数据库设计:三范式