CN104216893A - 多租户共享数据表的分区管理方法、服务器与系统 - Google Patents
多租户共享数据表的分区管理方法、服务器与系统 Download PDFInfo
- Publication number
- CN104216893A CN104216893A CN201310211597.XA CN201310211597A CN104216893A CN 104216893 A CN104216893 A CN 104216893A CN 201310211597 A CN201310211597 A CN 201310211597A CN 104216893 A CN104216893 A CN 104216893A
- Authority
- CN
- China
- Prior art keywords
- subregion
- tenant
- data
- identification information
- tables
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24554—Unary operations; Data partitioning operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/955—Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种多租户共享数据表的分区管理方法、服务器与系统。该方法包括:记录共享数据表中针对每个租户数据的查询开销,其中,每个租户的数据存放在共享数据表中的一个分区中;统计预定时间段内共享数据表中每个分区的查询开销;根据查询开销以及预定时间段,计算每个分区的平均查询开销;识别平均查询开销是否超过预设的查询开销阈值;响应于平均查询开销超过预设的查询开销阈值,为共享数据表创建新的分区将一个或者多个租户数据迁移到所创建的新的分区中。本发明提供的技术方案,针对租户差异化的数据规模和查询频率,实现了分区数据的负载均衡,提升数据查询性能。
Description
技术领域
本发明涉及数据库领域,特别涉及一种多租户共享数据表的分区管理方法、服务器与系统。
背景技术
多租户应用是在服务提供商的服务器上运行的单个软件实例,能够为多个客户(即租户)同时提供软件服务,并且允许租户对应用所提供的服务进行定制。目前多租户应用主要采用关系数据库存储租户数据,其数据存储或共享方式包括:独立数据库、共享数据库独立模式、共享数据库共享模式。
前两种模式适合于中小规模的多租户应用场景。在共享数据库共享模式中,所有租户共享同一个数据库中的同一数据模式,使得这种方式的数据库资源共享程度最高,资源开销最小,适合大规模的多租户应用场景。
在共享数据库共享模式中,数据表由多个租户共享,在大型的多租户应用场景中共享数据表存放了大量租户的海量数据,例如大型电子商务平台的交易表可能存放上百万商户(即租户)的数十亿交易数据,对存放海量数据的共享表查询将非常耗时。同时大量租户集中访问同一个共享表也容易出现I/O瓶颈。因此,目前存在几种对大型的多租户共享表进行分区,以提升数据查询性能的方式。现有多租户共享表分区方法主要有以下几种:
按字段分区:例如,按照租户标识(ID)或者非租户ID分区。按照租户标识ID分区可能出现小型租户集中到一个分区,大型租户又集中到另一个分区的情况,造成分区之间的数据负载不均衡。而按照非租户ID,但会导致一个租户的数据被分布到多个分区中,出现大量跨分区的查询,影响查询效率;
按租户数分表:将一个大共享表的租户数据分布存放到若干个小的共享子表中,每张表最多只能存放n个租户的数据,同样这种方法可能出现小型租户集中到一个共享子表,大型租户又集中到另一个共享子表,造成分区之间的数据负载不均衡。
发明内容
根据本发明实施例的一个方面,所要解决的一个技术问题是:提供一种多租户共享数据表的分区管理方法、服务器与系统,以提供分区数据的查询负载均衡以及更高的查询效率。
本发明实施例提供的一种多租户共享数据表分区的管理方法,包括:
记录共享数据表中针对每个租户数据的查询开销,其中,每个租户的数据存放在所述共享数据表中的一个分区中,所述共享数据表包括租户标识信息、分区标识信息;
统计预定时间段内所述共享数据表中每个分区的查询开销;
根据所述查询开销以及所述预定时间段,计算每个分区的平均查询开销;
识别所述平均查询开销是否超过预设的查询开销阈值;
响应于所述平均查询开销超过预设的查询开销阈值,为所述共享数据表创建新的分区;
将一个或者多个租户数据迁移到所创建的新的分区中。
本发明实施例提供的一种多租户共享数据表分区的管理服务器,包括:
数据查询开销记录单元,用于记录共享数据表中针对每个租户数据的查询开销,其中,每个租户的数据存放在所述共享数据表中的一个分区中,所述共享数据表包括租户标识信息、分区标识信息;
超负荷分区识别单元,用于统计预定时间段内所述共享数据表中每个分区的查询开销;根据所述查询开销以及所述预定时间段,计算每个分区的平均查询开销;识别所述平均查询开销是否超过预设的查询开销阈值;
分区创建单元,用于响应于平均查询开销超过预设的查询开销阈值,为所述共享数据表创建新的分区;
租户数据迁移单元,用于根据预定时间段内所述每个租户数据的查询开销,将查询开销最高的一个或者多个租户数据迁移到所创建的新的分区中。
本发明实施例提供的一种多租户共享数据表分区的管理系统,包括:
上述本发明实施例提供的任意一种多租户共享数据表分区的管理服务器;
物理数据库服务器,用于存储数据表,以及执行所述语句转发单元转发的数据库操作语句。
基于本发明上述实施例提供的多租户共享数据表的分区管理方法、服务器与系统,通过记录共享数据表中针对每个租户数据的查询开销,针对每个分区,根据租户的查询开销,对分区平均查询开销超过查询开销阈值的分区的租户进行迁移,迁移到所创建的新的分区中,从而针对租户差异化的数据规模和查询频率,实现了分区数据的负载均衡,提升数据查询性能。
通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
构成说明书的一部分的附图描述了本发明的实施例,并且连同说明书一起用于解释本发明的原理。
参照附图,根据下面的详细描述,可以更加清楚地理解本发明,其中:
图1a、1b分别示出本发明所提供的方法实施例的流程示意图;
图2示出本发明所提供的方法实施例中的数据写入操作流程示意图;
图3示出本发明所提供的方法实施例中的数据查询操作流程示意图;
图4示出本发明所提供的多租户共享数据表的分区管理服务器一种实施例的结构示意图;
图5示出本发明所提供的多租户共享数据表的分区管理服务器一种实施例的结构示意图;
图6示出本发明所提供的多租户共享数据表的分区管理系统一种实施例的结构示意图;
图7示出本发明所提供的多租户共享数据表的分区管理系统一种实施例的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置不限制本发明的范围。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。
在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
参见图1所示,图1示出本发明所提供的多租户共享数据表的分区管理方法一种实施例的流程示意图。该实施例提供的多租户共享数据表分区的管理方法,包括以下操作。
101,记录共享数据表中针对每个租户数据的查询开销,其中,每个租户的数据存放在共享数据表中的一个分区中,共享数据表包括租户标识(ID)信息、分区标识(ID)信息。
如表1所示,该表以交易表为例,示意性展示了多租户共享数据表的表结构。该共享表包含有租户ID和分区ID两个字段,租户ID用于区分不同的租户,分区ID用于区分租户所属的分区,分区ID对于租户应用通常是透明的。
表1共享数据表
租户 | 分区ID | 交易价格 | 交易时间 |
共享数据表初始通常带有默认的list分区,所有租户的数据都保存在默认的list分区中,list分区的分区键为共享数据表的分区ID字段,分区值为一个全局唯一的分区ID值。
例如,交易表的字段包括租户ID、分区ID、交易金额、交易时间等字段。创建交易表的同时建立一个名为trade_data_p_1的list分区,分区键为分区ID,分区值假设为1,以Oracle为例,建表脚本伪代码如下:
CREATE TABLE交易表(
租户ID INTEGER NOT NULL,
分区ID INTEGER NOT NULL,
交易金额 NUMBER NOT NULL,
交易时间 DATETIME NOT NULL
)
PARTITION BY LIST(分区ID)(
PARTITION 交易表分区1 VALUES(1)
);
根据本发明提供的各方法实施例,可以通过两种数据库分区来实现本发明的方法,即表分区或子表。
表分区可以从属于共享数据表,以共享数据表的分区标识字段作为分区键,表分区中的分区标识可以以字段表示;添加表分区可以通过表修改语句实现,例如,以下的SQL语句在交易表中添加一个分区ID值为2分区:
alter table交易表add partition交易表分区2values(2);
子表为独立的物理表,每个分区就是一个独立的子表。可以在子表的表名中添加分区标识,作为表名的后缀或前缀。例如,“交易表_1”表示交易表的分区1,“交易表_2”表示交易表的分区2。由于子表表名中包含分区标识,因此,在子表分区方式中不再需要分区标识字段。子表分区的创建、插入和查询方式需对数据执行语句的表名进行修改,以插入分区标识,例如,以下的SQL语句创建分区标识为2的交易表子表分区:
CREATE TABLE交易表_2(
租户ID INTEGER NOT NULL,
分区ID INTEGER NOT NULL,
交易金额 NUMBER NOT NULL,
交易时间 DATETIME NOT NULL
)
102,统计预定时间段内共享数据表中每个分区的查询开销。
103,根据查询开销以及预定时间段,计算每个分区的平均查询开销。
104,识别平均查询开销是否超过预设的查询开销阈值。
105,响应于平均查询开销超过预设的查询开销阈值,为共享数据表创建新的分区。
106,将一个或者多个租户数据迁移到所创建的新的分区中。
本发明上述实施例提供的方法中,根据每个分区的平均查询开销,实现了动态分区,从而能够在分区查询负载较大时,将该分区的租户迁移到新的分区中,从而针对租户差异化的数据规模和查询频率,实现了分区数据的负载均衡。同时,保持单个租户的数据在一个分区中,避免跨分区的查询,进一步影响查询效率。
根据本发明方法一种实施例,在106的操作中,可以根据查询开销,筛选被迁移的用户。当平均查询开销超过预设的查询开销阈值之后,该实施例的方法还包括:
1061,根据预定时间段内每个租户数据的查询开销,选择开销最高的一个或者多个租户;
106中被迁移到所创建的新的分区中的一个或者多个租户数据,为开销最高的一个或者多个租户的数据。
根据本发明方法一种实施例,可以通过租户查询开销表来记录租户标识信息、租户占用的分区标识信息、租户的查询开销信息之间的对应关系。因此,上述实施例中的分区的查询开销、租户数据的查询开销,具体可以通过查询租户查询开销表获得。
如表2所示,表2示意性展示了租户查询开销表的表结构。租户查询开销表包括租户标识信息、租户占用的分区标识信息、租户的查询开销信息。另外,租户查询开销表还可以包括查询时间。本发明实施例中的查询开销可以为查询的等待时间,或者以其他资源量为度量,例如,查询消耗的CPU时间周期、I/O读次数等。
表2租户查询开销表
查询时间 | 租户 | 分区ID | 查询开销 |
2010-1-1010:20 | 租户1 | 1 | 2 |
2010-1-1010:23 | 租户2 | 1 | 3 |
2010-1-1210:20 | 租户3 | 1 | 6 |
2010-1-1410:21 | 租户4 | 1 | 4 |
2010-1-1511:20 | 租户5 | 1 | 5 |
作为一种上述方式,可以通过共享分区信息表查询查询开销阈值。如表3所示,表3示意性展示了共享分区信息表的表结构。共享分区信息表包括共享数据表标识信息、分区标识信息,以及与分区标识信息相对应的查询开销阈值的。查询开销阀值可以为该分区允许的最大平均查询时间。
表3共享分区信息表
共享数据表 | 分区ID | 查询开销阀值 |
交易表 | 1 | 5 |
在图1中104的操作中,通过共享数据表标识信息、分区标识信息,查询共享分区信息表,获得与分区标识信息相对应的查询开销阈值,作为预设的查询开销阈值。
参见图2所示,图2示出本发明所提供的方法实施例中的数据写入操作流程示意图。根据本发明方法一种实施例,该方法还可以包括以下操作作为数据写入操作。
201,接收用户提交的数据库写入语句信息,数据库写入语句信息包括租户标识信息、共享数据表标识信息。
202,在租户分区关系信息表中,查询与租户标识信息、共享数据表标识信息相对应的分区标识信息,其中,租户分区关系信息表包括租户标识信息、共享数据表标识信息、分区标识信息。例如,表4所示的租户分区关系信息表结构。
表4租户分区关系信息表
租户 | 共享数据表 | 分区ID |
租户1 | 交易表 | 1 |
203,响应于获得相对应的分区标识信息,在写入语句信息中插入分区标识信息;
204,向数据库转发插入了分区标识信息的数据库写入语句,以由数据库在具有分区标识的分区中执行数据库写入语句。
根据本发明方法一种实施例,若在202识别结果为未获得相对应的分区标识信息,该方法还包括:
在共享数据表中,根据每个分区的查询开销,选择查询开销最小的分区标识分配给租户标识;例如在102操作中所获得的查询开销最小的分区标识,或者通过租户查询开销表识别查询负载最小的分区标识。
共享数据表增加记录包括租户标识信息、所分配的分区标识信息;
在租户分区关系信息表中增加租户标识信息、共享数据表标识信息、所分配的分区标识信息。
如果在上述步骤中在租户分区关系表中查不到对应的分区ID值,则说明该租户的数据首次插入本共享表,选择该共享表的最大分区ID值作为该租户绑定的ID,并在租户分区对应关系表中添加一条租户-分区对应记录。
参见图3所示,图3示出本发明所提供的方法实施例中的数据查询操作流程示意图。根据本发明方法一种实施例,该方法还可以包括以下操作作为查询操作:
301,接收用户提交的数据库查询语句信息,数据库查询语句信息包括租户标识信息、共享数据表标识信息;
302,在租户分区关系信息表,查询与租户标识信息、共享数据表标识信息相对应的分区标识信息;
303,响应于获得相对应的分区标识信息,在数据库查询语句信息中插入分区标识信息;
304,向数据库转发插入了分区标识信息的数据库查询语句,以由数据库在具有分区标识的分区中执行数据库查询语句;以及在租户查询开销表中记录租户标识以及执行数据库查询语句的查询开销。例如,记录数据库对本次查询的处理时间,以便后续可以对分区的查询开销进行统计。
可以理解,本发明方法还可以包括各种表的初始化,例如:
创建共享分区信息表,字段包括表名、分区ID和查询开销阀值,其中查询开销阀值可以为该分区允许的最大平均查询时间;
创建租户分区关系表,字段包括租户ID、表名、分区ID;
创建租户查询开销表,字段包括租户ID、分区ID、查询开销、查询时间,其中查询开销可以为查询的等待时间;
创建多租户的共享数据表,字段包括租户ID和分区ID两个字段,租户ID用于区分不同的租户,分区ID用于区分租户所属的分区。
可以理解的是,可以用其他不同的表结构或者不同的表之间进行关联实现上述各种表信息。例如,租户分区关系表记录租户与表分区的映射关系,可以与共享数据表进行关联。
例如,将创建租户查询开销表与租户分区关系表联合,可以获得如表5中的共享数据表的租户与分区标识的对应关系。
表5联合关系表
共享数据表 | 租户 | 分区ID | 查询开销 |
交易表 | 租户1 | 1 | 5 |
交易表 | 租户2 | 1 | 5 |
交易表 | 租户3 | 1 | 5 |
交易表 | 租户4 | 1 | 5 |
交易表 | 租户5 | 1 | 5 |
参见图4所示,图4示出本发明所提供的多租户共享数据表的分区管理服务器一种实施例的结构示意图。该实施例中的多租户共享数据表分区的管理服务器,包括:
数据查询开销记录单元401,用于记录共享数据表中针对每个租户数据的查询开销,其中,每个租户的数据存放在共享数据表中的一个分区中,共享数据表包括租户标识信息、分区标识信息;
超负荷分区识别单元402,用于统计预定时间段内共享数据表中每个分区的查询开销;根据查询开销以及预定时间段,计算每个分区的平均查询开销;识别平均查询开销是否超过预设的查询开销阈值;
分区创建单元403,用于响应于平均查询开销超过预设的查询开销阈值,为共享数据表创建新的分区;
租户数据迁移单元404,用于根据预定时间段内每个租户数据的查询开销,将查询开销最高的一个或者多个租户数据迁移到所创建的新的分区中。
其中,分区创建单元403具体可以根据前述方法实施例中描述的表分区或者子表的实施方式来创建新的分区。
根据本发明服务器一种实施例,该服务器还可以包括:
租户筛选单元405,用于根据预定时间段内每个租户数据的查询开销,选择开销最高的一个或者多个租户。租户数据迁移单元404,具体用于将开销最高的一个或者多个租户的数据迁移到所创建的新的分区中。
根据本发明服务器一种实施例,超负荷分区识别单元402,具体用于通过租户查询开销表获得租户的查询开销信息,租户查询开销表包括租户标识信息、租户占用的分区标识信息、租户的查询开销信息。
根据本发明服务器一种实施例,超负荷分区识别单元402,具体用于查询共享分区信息表,获得与分区标识信息相对应的查询开销阈值,作为预设的查询开销阈值。
参见图5所示,图5示出本发明所提供的多租户共享数据表的分区管理服务器一种实施例的结构示意图。根据本发明服务器一种实施例,该服务器还包括:
接收单元501,用于接收用户提交的数据库写入语句信息,数据库写入语句信息包括租户标识信息、共享数据表标识信息;
分区键注入单元502,用于在租户分区关系信息表,查询与租户标识信息、共享数据表标识信息相对应的分区标识信息;响应于获得相对应的分区标识信息,在写入语句信息中插入分区标识信息;
语句转发单元503,用于向数据库转发数据库写入语句,以在具有分区标识的分区中执行数据库写入语句。
参见图5所示,图5示出本发明所提供的多租户共享数据表的分区管理服务器一种实施例的结构示意图。根据本发明服务器一种实施例,该服务器还可以包括:
租户分区关系管理单元504,用于创建租户分区关系信息表,租户分区关系信息表包括租户标识信息、共享数据表标识信息、分区标识信息;
分区信息管理单元505,还用于创建共享分区信息表,共享分区信息表包括共享数据表标识信息、分区标识信息,以及与分区标识信息相对应的查询开销阈值。
根据本发明服务器一种实施例,分区信息管理单元507,还用于响应于分区键注入单元未获得相对应的分区标识信息,根据每个分区的查询开销,选择查询开销最小的分区标识分配给租户标识;在共享数据表中增加包括租户标识信息、所分配的分区标识信息的记录。租户分区关系管理单元508,还用于在租户分区关系信息表中增加租户标识信息、共享数据表标识信息、所分配的分区标识信息。
根据本发明服务器一种实施例,接收单元501,还用于接收用户提交的数据库查询语句信息,数据库查询语句信息包括租户标识信息、共享数据表标识信息;
分区键注入单元502,还用于在租户分区关系信息表,查询与租户标识信息、共享数据表标识信息相对应的分区标识信息;响应于获得相对应的分区标识信息,在数据库查询语句信息中插入分区标识信息;
语句转发单元503,还用于向数据库转发数据库查询语句,以在具有分区标识的分区中执行数据库查询语句;
数据查询开销记录单元401,还用于在租户查询开销表中记录租户标识以及执行数据库查询语句的查询开销。
参见图6所示,图6示出本发明所提供的多租户共享数据表的分区管理系统一种实施例的结构示意图。本发明提供了一种多租户共享数据表分区的管理系统包括:上述实施例中的任意一种多租户共享数据表分区的管理服务器;物理数据库服务器,用于存储数据表以及执行语句转发单元转发的数据库操作语句。
参见图7所示,图7示出本发明所提供的多租户共享数据表的分区管理系统一种实施例的结构示意图。图7以SQL数据库为例,将分区创建单元、分区信息管理单元、数据查询开销记录单元、租户分区关系管理单元设置在租户分区管理模块。
可以将接收单元与语句转发单元设置在SQL代理单元中,同时,将SQL代理单元与分区键注入单元设置在数据访问代理模块中。
将超负载分区识别单元、租户筛选单元、租户数据迁移单元设置在分区动态调整模块。
数据库服务器包括SQL执行器、查询优化器,执行插入了分区ID值的读写或者查询语句。共享数据表以分区方式存储在物理数据库。
最后,通过三个具体的示例,分别描述本发明的部分实施例。其中,数据库以SQL数据库为例。
(一)共享数据表写入数据
接收单元接收租户提交的SQL写入语句为:
Insert(租户ID,交易金额,交易日期)into交易表values(“租户1”,999,20120110)。
分区键注入单元从写入语句中解析出插入的表名(交易表)和租户ID(租户1),然后从租户分区关系表(表4)中获取与共享数据表名、租户ID所对应的分区ID值,即对应的分区ID值为1。将分区ID值插入SQL写入语句得到新的insert语句:
Insert(租户ID,分区ID,交易金额,交易日期)into交易表values(“租户1”,1,999,20120110);
另外,对应于前述子表为独立的物理表,每个分区为一个独立的子表的实施方式,由于子表的表名中包含分区标识,因此,需对数据插入语句的表名进行修改,以插入分区标识,例如:
Insert(租户ID,交易金额,交易日期)into交易表_1values(“租户1”,999,20120110);
然后,通过语句转发单元将修改后的Insert语句转发给物理数据库执行。物理数据库会根据分区ID将数据写入交易表分区1中。
如果在上述步骤中,在租户分区关系表中查询不到该租户对应的分区ID值,则说明该租户的数据首次插入本共享数据表。可以选择该共享数据表的一个分区ID值,例如最大的分区ID值作为该租户绑定的分区ID值分配给租户,并在租户分区对应关系表中添加一条租户、共享数据表、分区对应记录,以及在共享数据表中增加包括租户标识、所分配的分区标识的记录。
(二)共享表数据查询数据
接收单元接收租户提交的SQL查询语句为:
Select count(交易金额)from交易表where租户ID=”租户1”and交易时间>=20120601。
分区键注入单元从写入语句中解析出插入的表名(交易表)和租户ID(租户1),然后从租户分区关系表(表4)中获取与共享数据表名、租户ID所对应的分区ID值,即对应的分区ID值为1。将分区ID值插入SQL查询语句后得到新的查询语句:
Select count(交易金额)from交易表where分区ID=1and租户ID=”租户1”and交易时间>=20120601。
对应于前述子表为独立的物理表,每个分区为一个独立的子表的实施方式,由于子表的表名中包含分区标识,因此,需对数据查询语句的表名进行修改,以插入分区标识,例如:
Select count(交易金额)from交易表_1where租户ID=”租户1”and交易时间>=20120601。
然后,通过语句转发单元将新的查询语句转发给物理数据库执行,物理数据库的查询优化器首先根据分区键的键值(即分区ID=1)确定需要扫描的分区(即交易表分区1),从而缩小了数据表的扫描范围,然后仅对该分区执行查询语句,可以再将查询结果通过SQL转发模块返回给租户。
可以由查询开销记录单元记录该租户对该分区的查询时间,写入租户查询开销表,包括租户ID、分区ID、查询开销、查询时间等信息,例如(“租户1”,1,5,”2013-01-0110:00”)。
(三)动态分区
针对分区,周期性的统计获得平均查询开销,识别是否超出分区对应的查询开销阀值,从而获得超负荷的分区列表。
示例性地,分区的平均查询开销=周期内总查询开销/周期内总查询次数。当分区的平均查询开销超出预算阀值的分区为超负荷分区,需要进行拆分。
可以通过租户查询开销表统计每个分区的查询开销,与共享分区信息表关联可以得到超出阀值的分区列表。
例如,统计周期为24小时,统计开始时间为当前时间减去24小时,统计结束时间为当前时间,超负荷分区统计语句如下:
Select A.分区ID from
(Select分区ID,(sum(查询开销)/count(*))as cost from租户查询开销表group by分区ID)AS A
Join(Select分区ID,查询开销阀值from共享分区信息表)as B
On A.分区ID=B.分区ID
where A.查询时间>=(当前时间-24小时)and A.查询时间<当前时间
and A.cost>=B.查询开销阀值
之后,对所有查询开销超出负荷且租户数目大于1的分区进行拆分,拆分步骤如下:
1)对分区中每个租户的按统计周期内的查询开销从大到小进行排序,可以通过以下查询语句实现:
Select租户ID,(sum(查询开销)/count(*))as cost from租户查询开销表where查询时间>=查询时间>=(当前时间-24小时)and查询时间<当前时间group by租户ID order by cost desc
2)根据租户的查询开销,筛选出开销高的租户加入迁移租户集:首先,令待迁移租户集为空集;
之后,将查询开销最大的租户ID添加到待迁移租户集中,如果待迁移租户集中的租户总查询开销小于该分区总查询开销的一半,则将查询开销第二大的租户ID添加到待迁移租户集中,依次类推,直到待迁移租户集的总查询开销超出该分区总查询开销的一半为止。
3)在租户共享数据表中添加新的分区
例如在交易表中添加一个分区ID值为2分区的SQL如下:
alter table交易表add partition交易表分区2values(2)。
4)向共享分区信息表添加一条分区记录,保存关于分区ID
值2的对应信息,记录更新后的共享分区信息表如下:
共享表 | 分区ID | 查询开销阀值 |
交易表 | 1 | 5 |
交易表 | 2 | 5 |
5)将需要迁移的租户ID与新分区的关系更新到租户分区关系表中,例如,需要迁移的分区ID值为2的租户ID为租户1、租户3,则租户分区关系表更新为:
共享数据表 | 租户 | 分区ID | 查询开销阀值 |
交易表 | 租户1 | 2 | 5 |
交易表 | 租户2 | 1 | 5 |
交易表 | 租户3 | 2 | 5 |
交易表 | 租户4 | 1 | 5 |
交易表 | 租户5 | 1 | 5 |
6)更新共享数据表中所有需要迁移的租户的分区ID值。可以利用数据库机制将变更了分区ID值的数据自动迁移到新添加的共享数据表分区中。交易表的数据更新为如下所示:
租户ID | 分区ID | 交易价格 | 交易时间 |
租户1 | 2 | 1300 | 2011/1/15 |
租户1 | 2 | 1600 | 2011/12/2 |
租户2 | 1 | 1000 | 2012/1/10 |
租户3 | 2 | 800 | 2012/1/11 |
租户4 | 1 | 100 | 2012/2/12 |
租户5 | 1 | 200 | 2012/2/13 |
租户3 | 2 | 500 | 2012/3/14 |
租户3 | 2 | 1200 | 2012/3/15 |
租户2 | 1 | 2000 | 2012/4/16 |
租户3 | 2 | 50 | 2012/4/17 |
租户1 | 2 | 30 | 2012/5/18 |
租户1 | 2 | 150 | 2012/5/19 |
租户4 | 1 | 1500 | 2012/6/20 |
租户1 | 2 | 80 | 2012/6/21 |
至此,已经详细描述了根据本发明的一种多租户共享数据表的分区管理方法、服务器与系统。为了避免遮蔽本发明的构思,没有描述本领域所公知的一些细节。本领域技术人员根据上面的描述,完全可以明白如何实施这里公开的技术方案。
本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于多租户共享数据表的分区服务器与系统实施例而言,由于其与方法实施例基本对应,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
可能以许多方式来实现本发明的多租户共享数据表的分区管理方法、服务器与系统。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本发明的多租户共享数据表的分区管理方法、服务器与系统。用于所述方法的步骤的上述顺序仅是为了进行说明,本发明的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本发明实施为记录在记录介质中的程序,这些程序包括用于实现根据本发明的方法的机器可读指令。因而,本发明还覆盖存储用于执行根据本发明的方法的程序的记录介质。
虽然已经通过示例对本发明的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本发明的范围。本领域的技术人员应该理解,可在不脱离本发明的范围和精神的情况下,对以上实施例进行修改。本发明的范围由所附权利要求来限定。
Claims (13)
1.一种多租户共享数据表分区的管理方法,包括:
记录共享数据表中针对每个租户数据的查询开销,其中,每个租户的数据存放在所述共享数据表中的一个分区中,所述共享数据表包括租户标识信息、分区标识信息;
统计预定时间段内所述共享数据表中每个分区的查询开销;
根据所述查询开销以及所述预定时间段,计算每个分区的平均查询开销;
识别所述平均查询开销是否超过预设的查询开销阈值;
响应于所述平均查询开销超过预设的查询开销阈值,为所述共享数据表创建新的分区;
将一个或者多个租户数据迁移到所创建的新的分区中。
2.根据权利要求1所述的方法,还包括:
根据预定时间段内所述每个租户数据的查询开销,选择开销最高的一个或者多个租户;
被迁移到所创建的新的分区中的一个或者多个租户数据,为所述开销最高的一个或者多个租户的数据。
3.根据权利要求1所述的方法,其中,
具体根据所述共享数据表标识信息、分区标识信息,查询共享分区信息表,获得与分区标识信息相对应的查询开销阈值,作为所述预设的查询开销阈值;
所述共享分区信息表包括共享数据表标识信息、分区标识信息,以及与分区标识信息相对应的查询开销阈值。
4.根据权利要求1所述的方法,还包括:
接收用户提交的数据库写入语句信息,所述数据库写入语句信息包括租户标识信息、共享数据表标识信息;
在租户分区关系信息表中,查询与所述租户标识信息、共享数据表标识信息相对应的分区标识信息,其中,所述租户分区关系信息表包括租户标识信息、共享数据表标识信息、分区标识信息;
响应于获得相对应的分区标识信息,在所述写入语句信息中插入所述分区标识信息;
向数据库转发所述数据库写入语句,以在具有所述分区标识的分区中执行所述数据库写入语句。
5.根据权利要求4所述的方法,其中,响应于未获得相对应的分区标识信息,所述方法还包括:
根据每个分区的查询开销,选择查询开销最小的分区标识分配给所述租户标识;
所述共享数据表增加记录包括所述租户标识信息、所分配的分区标识信息;
在所述租户分区关系信息表中增加所述租户标识信息、共享数据表标识信息、所分配的分区标识信息。
6.根据权利要求1所述的方法,还包括:
接收用户提交的数据库查询语句信息,所述数据库查询语句信息包括租户标识信息、共享数据表标识信息;
在租户分区关系信息表,查询与所述租户标识信息、共享数据表标识信息相对应的分区标识信息,其中,所述租户分区关系信息表包括租户标识信息、共享数据表标识信息、分区标识信息;
响应于获得相对应的分区标识信息,在所述数据库查询语句信息中插入所述分区标识信息;
向数据库转发所述数据库查询语句,以在具有所述分区标识的分区中执行所述数据库查询语句;以及在租户查询开销表中记录所述租户标识以及执行所述数据库查询语句的查询开销。
7.一种多租户共享数据表分区的管理服务器,包括:
数据查询开销记录单元,用于记录共享数据表中针对每个租户数据的查询开销,其中,每个租户的数据存放在所述共享数据表中的一个分区中,所述共享数据表包括租户标识信息、分区标识信息;
超负荷分区识别单元,用于统计预定时间段内所述共享数据表中每个分区的查询开销;根据所述查询开销以及所述预定时间段,计算每个分区的平均查询开销;识别所述平均查询开销是否超过预设的查询开销阈值;
分区创建单元,用于响应于平均查询开销超过预设的查询开销阈值,为所述共享数据表创建新的分区;
租户数据迁移单元,用于根据预定时间段内所述每个租户数据的查询开销,将查询开销最高的一个或者多个租户数据迁移到所创建的新的分区中。
8.根据权利要求7所述的服务器,还包括:
租户筛选单元,用于根据预定时间段内所述每个租户数据的查询开销,选择开销最高的一个或者多个租户;
所述租户数据迁移单元,具体用于将开销最高的一个或者多个租户的数据迁移到所创建的新的分区中。
9.根据权利要求7所述的服务器,还包括:
所述超负荷分区识别单元,具体用于查询共享分区信息表,获得与分区标识信息相对应的查询开销阈值,作为所述预设的查询开销阈值,所述共享分区信息表包括共享数据表标识信息、分区标识信息,以及与分区标识信息相对应的查询开销阈值。
10.根据权利要求7所述的服务器,还包括:
接收单元,用于接收用户提交的数据库写入语句信息,所述数据库写入语句信息包括租户标识信息、共享数据表标识信息;
分区键注入单元,用于利用租户分区关系信息表,查询与所述租户标识信息、共享数据表标识信息相对应的分区标识信息,所述租户分区关系信息表包括租户标识信息、共享数据表标识信息、分区标识信息;响应于获得相对应的分区标识信息,在所述写入语句信息中插入所述分区标识信息;
语句转发单元,用于向数据库转发所述数据库写入语句,以在具有所述分区标识的分区中执行所述数据库写入语句。
11.根据权利要求10所述的服务器,还包括:
分区信息管理单元,响应于分区键注入单元未获得相对应的分区标识信息,根据每个分区的查询开销,选择查询开销最小的分区标识分配给所述租户标识;在共享数据表中增加包括所述租户标识信息、所分配的分区标识信息的记录;
所述租户分区关系管理单元,还用于在所述租户分区关系信息表中增加所述租户标识信息、共享数据表标识信息、所分配的分区标识信息。
12.根据权利要求7所述的服务器,其中,
所述接收单元,还用于接收用户提交的数据库查询语句信息,所述数据库查询语句信息包括租户标识信息、共享数据表标识信息;
所述分区键注入单元,还用于在所述租户分区关系信息表,查询与所述租户标识信息、共享数据表标识信息相对应的分区标识信息;响应于获得相对应的分区标识信息,在所述数据库查询语句信息中插入所述分区标识信息;
所述语句转发单元,还用于向数据库转发所述数据库查询语句,以在具有所述分区标识的分区中执行所述数据库查询语句;
所述数据查询开销记录单元,还用于在租户查询开销表中记录所述租户标识以及执行数据库查询语句的查询开销。
13.一种多租户共享数据表分区的管理系统,包括:
权利要求7至12任意一项所述的多租户共享数据表分区的管理服务器;
物理数据库服务器,用于存储数据表,以及执行所述语句转发单元转发的数据库操作语句。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310211597.XA CN104216893B (zh) | 2013-05-31 | 2013-05-31 | 多租户共享数据表的分区管理方法、服务器与系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310211597.XA CN104216893B (zh) | 2013-05-31 | 2013-05-31 | 多租户共享数据表的分区管理方法、服务器与系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104216893A true CN104216893A (zh) | 2014-12-17 |
CN104216893B CN104216893B (zh) | 2018-01-16 |
Family
ID=52098398
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310211597.XA Active CN104216893B (zh) | 2013-05-31 | 2013-05-31 | 多租户共享数据表的分区管理方法、服务器与系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104216893B (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104731939A (zh) * | 2015-03-31 | 2015-06-24 | 浪潮集团有限公司 | 一种租户间通过数据表共享数据的方法 |
CN105792283A (zh) * | 2014-12-24 | 2016-07-20 | 中兴通讯股份有限公司 | 负载均衡方法、邻区基站及通信系统 |
CN106339388A (zh) * | 2015-07-08 | 2017-01-18 | 阿里巴巴集团控股有限公司 | 数据库弹性调度方法及装置 |
CN106776598A (zh) * | 2015-11-19 | 2017-05-31 | 中国移动通信集团公司 | 一种信息处理方法及装置 |
CN107133243A (zh) * | 2016-02-29 | 2017-09-05 | 华为技术有限公司 | 一种数据处理方法和服务器 |
CN107229674A (zh) * | 2017-04-26 | 2017-10-03 | 努比亚技术有限公司 | 一种数据迁移装置、服务器及方法 |
CN108520004A (zh) * | 2018-03-12 | 2018-09-11 | 舟谱数据技术南京有限公司 | 基于方法参数切面多租户数据源切换系统 |
CN108628972A (zh) * | 2018-04-25 | 2018-10-09 | 咪咕音乐有限公司 | 一种数据表的处理方法、装置及存储介质 |
CN109902119A (zh) * | 2019-03-11 | 2019-06-18 | 深圳众享互联科技有限公司 | 区块链与数据库混合系统数据标识方法及其展示方法 |
CN110019215A (zh) * | 2017-10-26 | 2019-07-16 | Sap欧洲公司 | 多重租赁数据库系统中的键模式管理 |
CN110147369A (zh) * | 2017-10-26 | 2019-08-20 | Sap欧洲公司 | 多重租赁数据库系统中的数据分离和写入重新定向 |
CN111209296A (zh) * | 2019-12-31 | 2020-05-29 | 航天信息股份有限公司企业服务分公司 | 数据库访问方法、装置、电子设备及存储介质 |
US11100101B2 (en) | 2016-02-25 | 2021-08-24 | Huawei Technologies Co., Ltd. | Data operation method and data management server |
WO2022123437A1 (en) * | 2020-12-08 | 2022-06-16 | International Business Machines Corporation | Scheduling query execution plans on a relational database |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101639835A (zh) * | 2008-07-30 | 2010-02-03 | 国际商业机器公司 | 多租户场景中应用数据库分区的方法和装置 |
CN101996214A (zh) * | 2009-08-27 | 2011-03-30 | 国际商业机器公司 | 用于处理数据库操作请求的方法和装置 |
-
2013
- 2013-05-31 CN CN201310211597.XA patent/CN104216893B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101639835A (zh) * | 2008-07-30 | 2010-02-03 | 国际商业机器公司 | 多租户场景中应用数据库分区的方法和装置 |
CN101996214A (zh) * | 2009-08-27 | 2011-03-30 | 国际商业机器公司 | 用于处理数据库操作请求的方法和装置 |
Non-Patent Citations (3)
Title |
---|
孔兰菊: "SaaS应用交付平台中多租户云数据管理关键技术研究", 《中国博士学位论文全文数据库 信息科技辑》 * |
孙鹏: "面向SaaS应用的多租户海量存储系统设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
张聪萍: "钱塘分布式文件存储系统性能优化", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105792283A (zh) * | 2014-12-24 | 2016-07-20 | 中兴通讯股份有限公司 | 负载均衡方法、邻区基站及通信系统 |
CN104731939A (zh) * | 2015-03-31 | 2015-06-24 | 浪潮集团有限公司 | 一种租户间通过数据表共享数据的方法 |
CN104731939B (zh) * | 2015-03-31 | 2018-05-01 | 浪潮集团有限公司 | 一种租户间通过数据表共享数据的方法 |
CN106339388A (zh) * | 2015-07-08 | 2017-01-18 | 阿里巴巴集团控股有限公司 | 数据库弹性调度方法及装置 |
CN106776598A (zh) * | 2015-11-19 | 2017-05-31 | 中国移动通信集团公司 | 一种信息处理方法及装置 |
US11100101B2 (en) | 2016-02-25 | 2021-08-24 | Huawei Technologies Co., Ltd. | Data operation method and data management server |
CN107133243A (zh) * | 2016-02-29 | 2017-09-05 | 华为技术有限公司 | 一种数据处理方法和服务器 |
CN107229674A (zh) * | 2017-04-26 | 2017-10-03 | 努比亚技术有限公司 | 一种数据迁移装置、服务器及方法 |
CN110019215A (zh) * | 2017-10-26 | 2019-07-16 | Sap欧洲公司 | 多重租赁数据库系统中的键模式管理 |
CN110147369A (zh) * | 2017-10-26 | 2019-08-20 | Sap欧洲公司 | 多重租赁数据库系统中的数据分离和写入重新定向 |
CN110147369B (zh) * | 2017-10-26 | 2023-09-12 | Sap欧洲公司 | 多重租赁数据库系统中的数据分离和写入重新定向 |
CN110019215B (zh) * | 2017-10-26 | 2023-10-20 | Sap欧洲公司 | 多重租赁数据库系统中的键模式管理 |
CN108520004A (zh) * | 2018-03-12 | 2018-09-11 | 舟谱数据技术南京有限公司 | 基于方法参数切面多租户数据源切换系统 |
CN108520004B (zh) * | 2018-03-12 | 2021-11-19 | 舟谱数据技术南京有限公司 | 基于方法参数切面多租户数据源切换系统 |
CN108628972A (zh) * | 2018-04-25 | 2018-10-09 | 咪咕音乐有限公司 | 一种数据表的处理方法、装置及存储介质 |
CN108628972B (zh) * | 2018-04-25 | 2020-11-06 | 咪咕音乐有限公司 | 一种数据表的处理方法、装置及存储介质 |
CN109902119A (zh) * | 2019-03-11 | 2019-06-18 | 深圳众享互联科技有限公司 | 区块链与数据库混合系统数据标识方法及其展示方法 |
CN111209296A (zh) * | 2019-12-31 | 2020-05-29 | 航天信息股份有限公司企业服务分公司 | 数据库访问方法、装置、电子设备及存储介质 |
WO2022123437A1 (en) * | 2020-12-08 | 2022-06-16 | International Business Machines Corporation | Scheduling query execution plans on a relational database |
GB2615505A (en) * | 2020-12-08 | 2023-08-09 | Ibm | Scheduling query execution plans on a relational database |
GB2615505B (en) * | 2020-12-08 | 2024-01-03 | Ibm | Scheduling query execution plans on a relational database |
Also Published As
Publication number | Publication date |
---|---|
CN104216893B (zh) | 2018-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104216893A (zh) | 多租户共享数据表的分区管理方法、服务器与系统 | |
US10719510B2 (en) | Tiering with pluggable storage system for parallel query engines | |
EP3333726A1 (en) | Distributed database processing method and device | |
US9081837B2 (en) | Scoped database connections | |
KR20190099087A (ko) | 서비스 데이터를 블록체인에 기입하기 위한 방법 및 장치, 그리고 서비스 하위세트를 결정하기 위한 방법 | |
CN106981024B (zh) | 一种交易限额计算处理系统及其处理方法 | |
CN103092903A (zh) | 数据库日志并行化 | |
CN101071434B (zh) | 一种分布式数据库系统中用户分布的方法、装置及系统 | |
CN103177059A (zh) | 用于数据库计算引擎的分离处理路径 | |
CN103544153A (zh) | 一种基于数据库的数据更新方法和系统 | |
Ngu et al. | B+-tree construction on massive data with Hadoop | |
EP3376403A1 (en) | Method of accessing distributed database and device providing distributed data service | |
CN110737747A (zh) | 一种数据操作方法、装置及系统 | |
US11221890B2 (en) | Systems and methods for dynamic partitioning in distributed environments | |
CN107967279A (zh) | 分布式数据库的数据更新方法及装置 | |
CN111159235A (zh) | 数据预分区方法、装置、电子设备及可读存储介质 | |
CN103064955A (zh) | 查询规划方法及装置 | |
CN104615637A (zh) | 数据交换方法及数据交换中间装置 | |
US20170371892A1 (en) | Systems and methods for dynamic partitioning in distributed environments | |
CN114022188A (zh) | 目标人群圈选方法、装置、设备以及存储介质 | |
US9619495B2 (en) | Surrogate key generation | |
US10205631B1 (en) | Distributing an access control service to local nodes | |
CN111753019A (zh) | 一种应用于数据仓库的数据分区方法和装置 | |
CN109871394B (zh) | 一种全量分布式高并发计算方法及装置 | |
US9984083B1 (en) | Pluggable storage system for parallel query engines across non-native file systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |