一种基于租户属性的多租户数据隔离方法及系统
文献发布时间:2023-06-19 09:30:39
技术领域
本发明涉及云计算领域,特别是涉及一种基于租户属性的多租户数据隔离的方法及系统。
背景技术
多租户技术或称多重租赁技术,是一种软件架构技术,是实现如何在多租户环境下共用相同的系统或程序组件,并且可确保各租户间数据的隔离性。在当下云计算时代,多租户技术在共用的数据中心以单一系统架构与服务提供多数客户端相同甚至可定制化的服务,并且仍可以保障客户的数据隔离。目前各种各样的云计算服务就是这类技术范畴,例如阿里云数据库服务(RDS)、阿里云服务器等等。
目前多租户在数据存储上存在三种主要的方案,分别是:
方案一、独立数据库
这种方案是一个租户一个数据库,这种方案的租户数据隔离级别最高,安全性最好,但成本较高。
优点:为不同的租户提供独立的数据库,有助于简化数据模型的扩展设计,满足不同租户的独特需求;如果出现故障,恢复数据比较简单。
缺点:增多了数据库的安装数量,随之带来维护成本和购置成本的增加。
方案二、共享数据库,独立Schema
这种方案是多个或所有租户共享Database,但是每个租户一个Schema(也可叫做一个user)。底层库比如是:DB2、ORACLE等,一个数据库下可以有多个Schema。
优点:为安全性要求较高的租户提供了一定程度的逻辑数据隔离,并不是完全隔离;每个数据库可支持更多的租户数量。
缺点:如果出现故障,数据恢复比较困难,因为恢复数据库将牵涉到其他租户的数据;如果需要跨租户统计数据,存在一定困难。
方案三、共享数据库,共享Schema,共享数据表。
这种方案是租户共享同一个Database、同一个Schema,但在表中增加TenantID多租户的数据字段。这是共享程度最高、隔离级别最低的模式。即每插入一条数据时都需要有一个客户的标识。这样才能在同一张表中区分出不同客户的数据。
优点:三种方案比较,第三种方案的维护和购置成本最低,允许每个数据库支持的租户数量最多。
缺点:隔离级别最低,安全性最低,需要在设计开发时加大对安全的开发量;数据备份和恢复最困难,需要逐表逐条备份和还原。
发明内容
本发明的目的是提供一种基于租户属性的多租户数据隔离方法及系统,能够减少数据库的安装数量,同时降低恢复和备份难度。
为实现上述目的,本发明提供了如下方案:
一种基于租户属性的多租户数据隔离方法,包括:
对系统预设多个租户类型;
根据所述多个租户类型对应安装数据库;
获取租户在进行系统注册时选择的租户类型;
根据所述选择的租户类型对所述租户进行分类;
根据分类后租户的租户类型选择对应的数据库,每一类租户共用该租户类型对应的数据库;
为每个租户创建Schema,用来存储租户数据。
可选的,每个租户类型对应的数据库数量根据各个行业的租户比例确定。
一种基于租户属性的多租户数据隔离系统,包括:
系统预设模块,用于对系统预设多个租户类型;
数据库安装模块,用于根据所述多个租户类型对应安装数据库;
数据获取模块,用于获取租户在进行系统注册时选择的租户类型;
分类模块,用于根据所述选择的租户类型对所述租户进行分类;
数据库选择模块,用于根据分类后租户的租户类型选择对应的数据库,每一类租户共用该租户类型对应的数据库;
Schema创建模块,用于为每个租户创建Schema,用来存储租户数据。
根据本发明提供的具体实施例,本发明公开了以下技术效果:
本发明通过对租户进行分类,不必为每个租户都配置数据库,可以大大减少数据库的安装数量,随之带来维护成本和购置成本的也会降低;而且由于租户被分类,不同的类型的租户分别在独立的数据库中,若其中一个数据库出现异常也不会影响其他类型租户数据,恢复和备份难度也会降低。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明租户分类数据库设计示意图;
图2本发明某类型租户数据库设计示意图;
图3为本发明基于租户属性的多租户数据隔离方法流程图;
图4为本发明基于租户属性的多租户数据隔离系统模块图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的目的是提供一种基于租户属性的多租户数据隔离方法及系统,能够减少数据库的安装数量,同时降低恢复和备份难度。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
为了克服现有技术的缺陷,本发明主要基于租户属性,给每个租户加一个标签,通过这个标签来将租户进行分类,每一类租户共用一个数据库,如图1所示;每一类租户下会存在多个租户,每个租户都有自己独立的Schema,如图2所示。
具体的,本发明提供了一种基于租户属性的多租户数据隔离方法,如图3所示,包括:
步骤301:对系统预设多个租户类型;
步骤302:根据所述多个租户类型对应安装数据库;
步骤303:获取租户在进行系统注册时选择的租户类型;
步骤304:根据所述选择的租户类型对所述租户进行分类;
步骤305:根据分类后租户的租户类型选择对应的数据库,每一类租户共用该租户类型对应的数据库;
步骤306:为每个租户创建Schema,用来存储租户数据。
其中,步骤301-302具体为:系统设计师在设计系统时,先规定系统租户类型,根据租户类型,分配一定安装数据库机器。数据库的分配数量可根据行业常见租户比例,以及公司能力和实际情况来确定。
步骤303-306中租户注册时选择自己的类型(系统已提供类型),根据租户类型对租户分类,使得同类型的租户共用一个数据库;系统根据租户分类,选择对应类型所属的数据库,并为租户创建满足租户需求的Schema,用来存储租户数据
典型案例:
案例一:学校1,学校2和学校3都是本系统的租户,那么这三个租户从类型上,都是学校,所以可以归类为学校租户。学校租户中包含了学校1、学校2和学校3。那么系统会自动分配这三个学校租户到学校租户类型所属数据库,并创建三个学校对应的Schema
案例二:工厂1,工厂2和学校都是本系统的租户,那么这三个租户从类型上,分别是工厂1和工厂2是工厂类型租户,学校属于学校类型租户。那么系统会自动分配这两个工厂租户到工厂租户类型所属数据库,并创建两个工厂对应的Schema;分配学校租户到学校租户类型所属数据库上,并创建学校对应的Schema。
此外,本发明还公开了一种基于租户属性的多租户数据隔离系统,如图4所示,包括:
系统预设模块401,用于对系统预设多个租户类型;
数据库安装模块402,用于根据所述多个租户类型对应安装数据库;
数据获取模块403,用于获取租户在进行系统注册时选择的租户类型;
分类模块404,用于根据所述选择的租户类型对所述租户进行分类;
数据库选择模块405,用于根据分类后租户的租户类型选择对应的数据库,每一类租户共用该租户类型对应的数据库;
Schema创建模块406,用于为每个租户创建Schema,用来存储租户数据。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。
- 一种基于租户属性的多租户数据隔离方法及系统
- 一种多租户数据隔离方法、装置及系统