System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及数据库,特别是涉及一种适用于单机数据库的多租户方法。
技术介绍
1、多租户模式允许多个用户共享同一份应用程序实例,而各个用户之间的数据和配置可以相互隔离。多租户架构使多个用户共享相同的硬件和软件资源,提高了资源利用率。同时,多租户架构可以满足不同用户需求,允许不同的用户使用不同的配置和功能,提高了软件的灵活性和适应性。多租户模式下用户的数据和配置相互隔离也进一步提高安全性。
2、多租户通常有独立数据库、独立schema、共享schema三种实现模式,共享程度逐渐增加,但耦合性也随之增加,隔离程度降低,处理愈加复杂。目前云上通常是以独立数据库的方式实现多租户模式,即一个租户一个数据库,这种方法设计实现简单,用户数据隔离级别好,安全性也较优,但成本最高。如果可以用一个数据库实现多租户之间的数据隔离,通过数据库内部实现用户级别的线程资源统计及限制,在提高资源利用率之余,还可以保证租户之间的有效隔离,避免出现租户购买资源无法被有效分配的情况。
3、因此,如何提供一种可以适用于单机数据库的多租户方法,是目前有待解决的技术问题。
技术实现思路
1、本专利技术实施例提供一种适用于单机数据库的多租户方法,用于缓解云上数据库资源利用率不高的问题,本专利技术通过内核侧实现资源自管理的方式,部署一个单机数据库即可同时提供给多个租户使用,并且能够实现各个租户数据互不影响,能够有效解决共享数据库下资源无法有效隔离和限制的问题,对提高数据库使用效率也有一定的帮助,从而达到
2、为了实现上述目的,本专利技术提供了一种适用于单机数据库的多租户方法,所述方法包括:
3、采集租户数据,基于分布式存储条件将所述租户数据存储于数据库资源池;
4、当租户创建数据库订单时发送工单流程,获取数据库资源池内可用的物理节点,并根据注册的租户元数据信息分配连接ip和端口;
5、当数据库启动时,读取配置或者命令行启动参数中的租户信息表;
6、聚合统计租户资源状态信息,并根据统计结果判定租户连接的线程是否应该被清理;
7、当检测到逻辑文件时,根据租户注册的元数据信息,区分不同租户使用的schema以及表,并在逻辑文件的文件夹下添加名为tenant_id的目录文件夹。
8、在其中一个实施例中,在采集租户数据,基于分布式存储条件将所述租户数据存储于数据库资源池之前,还包括:
9、获取租户数据存储数量和所述数据库资源池的可存储空间;
10、根据所述租户数据存储数量和所述数据库资源池的可存储空间之间的关系判断是否需要对当前的租户数据进行资源调度,
11、当所述租户数据存储数量小于或等于所述数据库资源池的可存储空间时,则判断无需对当前的租户数据进行资源调度;
12、当所述租户数据存储数量大于所述数据库资源池的可存储空间时,则判断需要对当前的租户数据进行资源调度。
13、在其中一个实施例中,在采集租户数据,基于分布式存储条件将租户数据存储于数据库资源池时,包括:
14、获取租户数据存储数量a和所述数据库资源池的存储压力c;
15、根据所述租户数据存储数量a设定所述租户数据的存储次数;
16、根据所述数据库资源池的存储压力c对所述租户数据的存储次数进行修正,得到所述租户数据的目标存储次数;
17、基于所述目标存储次数将所述租户数据分批次存储于所述数据库资源池。
18、在其中一个实施例中,在根据所述租户数据存储数量a设定所述数据库资源池的存储次数时,包括:
19、预设租户数据存储数量矩阵b,设定b(b1,b2,b3,b4),其中,b1为第一预设租户数据存储数量,b2为第二预设租户数据存储数量,b3为第三预设租户数据存储数量,b4为第四预设租户数据存储数量,且b1<b2<b3<b4;
20、预设租户数据的存储次数矩阵g,设定g(g1,g2,g3,g4,g5),其中,g1为第一预设存储次数,g2为第二预设存储次数,g3为第三预设存储次数,g4为第四预设存储次数,g5为第五预设存储次数,且g1<g2<g3<g4<g5;
21、根据所述租户数据存储数量a与各预设租户数据存储数量之间的关系设定所述租户数据的存储次数:
22、当a<b1时,选定所述第一预设存储次数g1作为所述租户数据的存储次数;
23、当b1≤a<b2时,选定所述第二预设存储次数g2作为所述租户数据的存储次数;
24、当b2≤a<b3时,选定所述第三预设存储次数g3作为所述租户数据的存储次数;
25、当b3≤a<b4时,选定所述第四预设存储次数g4作为所述租户数据的存储次数;
26、当b4≤a时,选定所述第五预设存储次数g5作为所述租户数据的存储次数。
27、在其中一个实施例中,在根据所述数据库资源池的存储压力c对所述租户数据的存储次数进行修正时,包括:
28、预设数据库资源池的存储压力矩阵s,设定s(s1,s2,s3,s4),其中,s1为第一预设存储压力,s2为第二预设存储压力,s3为第三预设存储压力,s4为第四预设存储压力,且s1<s2<s3<s4;
29、预设租户数据的存储次数修正系数矩阵h,设定h(h1,h2,h3,h4,h5),其中,h1为第一预设存储次数修正系数,h2为第二预设存储次数修正系数,h3为第三预设存储次数修正系数,h4为第四预设存储次数修正系数,h5为第五预设存储次数修正系数,且0.8<h1<h2<h3<h4<h5<1.2;
30、在选定所述第i预设存储次数gi作为所述租户数据的存储次数之后,i=1,2,3,4,5,还根据所述数据库资源池的存储压力c与各预设存储压力之间的关系对所述租户数据的存储次数进行修正:
31、当c<s1时,选定所述第一预设存储次数修正系数h1对租户数据的存储次数gi进行修正,修正后的租户数据的存储次数为gi*h1;
32、当s1≤c<s2时,选定所述第二预设存储次数修正系数h2对租户数据的存储次数gi进行修正,修正后的租户数据的存储次数为gi*h2;
33、当s2≤c<s3时,选定所述第三预设存储次数修正系数h3对租户数据的存储次数gi进行修正,修正后的租户数据的存储次数为gi*h3;
34、当s3≤c<s4时,选定所述第四预设存储次数修正系数h4对租户数据的存储次数gi进行修正,修正后的租户数据的存储次数为gi*h4;
35、当s4≤c时,选定所述第五预设存储次数修正系数h5对租户数据的存储次数gi进行修正,修正后的租户数据的存储次数为gi*h5。
36、在其中一个实施例中,在当租户创建数据库订单时发送工单流程,获取数据库资源池内可用的物理节点,并根据注册的租户元数据信息分配连接ip和端口之后,还包括:
37、当租本文档来自技高网...
【技术保护点】
1.一种适用于单机数据库的多租户方法,其特征在于,所述方法包括:
2.根据权利要求1所述的适用于单机数据库的多租户方法,其特征在于,在采集租户数据,基于分布式存储条件将所述租户数据存储于数据库资源池之前,还包括:
3.根据权利要求2所述的适用于单机数据库的多租户方法,其特征在于,在采集租户数据,基于分布式存储条件将租户数据存储于数据库资源池时,包括:
4.根据权利要求3所述的适用于单机数据库的多租户方法,其特征在于,在根据所述租户数据存储数量A设定所述数据库资源池的存储次数时,包括:
5.根据权利要求4所述的适用于单机数据库的多租户方法,其特征在于,在根据所述数据库资源池的存储压力C对所述租户数据的存储次数进行修正时,包括:
6.根据权利要求1所述的适用于单机数据库的多租户方法,其特征在于,在当租户创建数据库订单时发送工单流程,获取数据库资源池内可用的物理节点,并根据注册的租户元数据信息分配连接IP和端口之后,还包括:
7.根据权利要求1所述的适用于单机数据库的多租户方法,其特征在于,在当数据库启动时,读取配
8.根据权利要求1所述的适用于单机数据库的多租户方法,其特征在于,在当数据库启动时,读取配置或者命令行启动参数中的租户信息表之后,还包括:
9.根据权利要求1所述的适用于单机数据库的多租户方法,其特征在于,在聚合统计租户资源状态信息,并根据统计结果判定租户连接的线程是否应该被清理时,包括:
10.根据权利要求1所述的适用于单机数据库的多租户方法,其特征在于,在根据租户注册的元数据信息,区分不同租户使用的schema以及表,并在逻辑文件的文件夹下添加名为tenant_i d的目录文件夹之后,还包括:
...【技术特征摘要】
1.一种适用于单机数据库的多租户方法,其特征在于,所述方法包括:
2.根据权利要求1所述的适用于单机数据库的多租户方法,其特征在于,在采集租户数据,基于分布式存储条件将所述租户数据存储于数据库资源池之前,还包括:
3.根据权利要求2所述的适用于单机数据库的多租户方法,其特征在于,在采集租户数据,基于分布式存储条件将租户数据存储于数据库资源池时,包括:
4.根据权利要求3所述的适用于单机数据库的多租户方法,其特征在于,在根据所述租户数据存储数量a设定所述数据库资源池的存储次数时,包括:
5.根据权利要求4所述的适用于单机数据库的多租户方法,其特征在于,在根据所述数据库资源池的存储压力c对所述租户数据的存储次数进行修正时,包括:
6.根据权利要求1所述的适用于单机数据库的多租户方法,其特征在于,在当租户创建数据库订单时发送工...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。