资源描述
.
本文档是针对多租户共用同一套软件应用程序和数据库实例及数据结构的设计方案,也是多租户最难实现的数据隔离的解决方式。其隔离机制需要从软件结构上设计实现,包括web层的用户session,实体类,数据库表等设计内容,该实现方案技术门槛较高,但租户共享程度非常高,租户和供应商的投入成本将为最低。
1. 数据表设计
要实现多租户共享同一数据库及数据表结构,数据表必须通过额外的TenantlD字段区
租户数据,以达到租户之间的数据隔离的目的。
1.1权限表
业务表
2.实体类设计
数据表与实体关联紧密,基本上表的字段与实体的属性对应。从而我们可以通过抽象出一个基类BaseEntity,将TenantlD属性加入BaseEntity,所有的实体只需继承该类即可。
3. 用户Session设计与操作
当用户登陆系统时将用户的TenantlD信息保存于SESSION中。在会话过程中,对数据进行操作(包括查询)时,将会话的TenantlD信息赋值于对应实体类中,这样查询数据时将可以通过实体的TenantlD进行租户信息在数据库中的操作(过滤查询),从而实现租户数据的隔离与安全。(在进行数据库访问操作前必须强制拦截,验证TenantlD是否为空)
可编辑范本!
展开阅读全文