SaaS模式应⽤之多租户系统开发(单数据库多Schema设计)
SaaS是Software-as-a-Service(软件即服务)的简称,这边具体的解释不介绍。
saas建站系统多租户的系统可以应⽤这种模式的思想,将思想融⼊到系统的设计之中。
⼀、多租户的系统,⽬前在数据库存储上,⼀般有三种解决⽅案:
1.独⽴数据库
2.共享数据库,隔离数据架构
3.共享数据库,共享数据架构
这⾥我就系统的实际需求情况,选择了第⼆种解决⽅案,下⾯简单介绍下
⼆、数据库我选⽤的是SqlServer,因为SqlServer⾃带的Schema刚好符合这种需求。⾄于Mysql,Oracle的Schema应该是有不同的设计,不同于SqlServer,这⾥我就只针对SqlServer⽽⾔。
如果你百度SqlServer的Schema⽅⾯的知识介绍,会有不少的Schema的语法介绍,但是很少有⼀套sql脚本针对多租户设计的,我在这⾥做个整理。
1.创建数据库
create database
SingleDbMultipleSchema
go
2.切换到⽬标数据库
use SingleDbMultipleSchema
go
3.创建⽤户并绑定登录名并赋予默认schema
create login UserTemp with password = N'admin@123'
create user UserTemp for login UserTemp with default_schema = UserTempSchema
go
4.创建schema并授权默认⽤户
create schema UserTempSchema  authorization UserTemp
go
5.补充建表权限(PS:这句sql的好苦。。。)
grant create table  to UserTemp
go
6.给⽤户分配schema权限(使⽤到存储过程的权限分配时,使⽤schema分配此类权限)
GRANT INSERT, SELECT, UPDATE, DELETE, EXECUTE, REFERENCES
ON SCHEMA:: UserTempSchema
TO UserTemp
go
7.最后附上常⽤删除Sql语句(格式如下)
drop table schtable
drop user [User_tmp]
drop user testuser2
drop login [User_tmp]
drop login testlogin2
drop schema User_tmpSchema
以dbo⽤户(sa登录名)新建⼀张表table_1,默认产⽣dbo.table_1,并插⼊⼀条数据,如下图
切换⽤户,使⽤刚刚创建的⽤户UserTemp登录,新建⼀张表table_1,产⽣UserTempSchema.table_1,并插⼊⼀条数据,如下图
以UserTemp⽤户,测试查询语句,结果如下,很显然虽然selcet语句没指定Schema,但是查询到了我们想要的结果
切换到dbo⽤户(sa登录名),测试查询语句,结果如下,虽然没指定schema名称,但是依旧是我们想要的结果
上⾯的sql脚本按步骤执⾏,执⾏1-5即可,后⾯的sql可根据⾃⼰的需求额外使⽤。
本篇暂时只做⼀个多租户系统在数据库存储层次上的设计(SqlServer下“单数据库多Schema模式”)的
环境搭建事例
(● ̄( ) ̄●)。。。。。。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。