多租戶(hù)的系統(tǒng)可以應(yīng)用這種模式的思想,將思想融入到系統(tǒng)的設(shè)計(jì)之中。
一、多租戶(hù)的系統(tǒng),目前在數(shù)據(jù)庫(kù)存儲(chǔ)上,一般有三種解決方案:
1.獨(dú)立數(shù)據(jù)庫(kù)
2.共享數(shù)據(jù)庫(kù),隔離數(shù)據(jù)架構(gòu)
3.共享數(shù)據(jù)庫(kù),共享數(shù)據(jù)架構(gòu)
這里我就系統(tǒng)的實(shí)際需求情況,選擇了第二種解決方案,下面簡(jiǎn)單介紹下
二、數(shù)據(jù)庫(kù)我選用的是SqlServer,因?yàn)镾qlServer自帶的Schema剛好符合這種需求。至于Mysql,Oracle的Schema應(yīng)該是有不同的設(shè)計(jì),不同于SqlServer,這里我就只針對(duì)SqlServer而言。
如果你百度SqlServer的Schema方面的知識(shí)介紹,會(huì)有不少的Schema的語(yǔ)法介紹,但是很少有一套sql腳本針對(duì)多租戶(hù)設(shè)計(jì)的,我在這里做個(gè)整理。
1.創(chuàng)建數(shù)據(jù)庫(kù)
create database
SingleDbMultipleSchema
go
2.切換到目標(biāo)數(shù)據(jù)庫(kù)
use SingleDbMultipleSchema
go
3.創(chuàng)建用戶(hù)并綁定登錄名并賦予默認(rèn)schema
create login UserTemp with password = N'admin@123'
create user UserTemp for login UserTemp with default_schema = UserTempSchema
go
4.創(chuàng)建schema并授權(quán)默認(rèn)用戶(hù)
create schema UserTempSchema authorization UserTemp
go
5.補(bǔ)充建表權(quán)限(PS:這句sql找的好苦。。。)
grant create table to UserTemp
go