CN103336792B - 数据分区方法和装置 - Google Patents
数据分区方法和装置 Download PDFInfo
- Publication number
- CN103336792B CN103336792B CN201310226045.6A CN201310226045A CN103336792B CN 103336792 B CN103336792 B CN 103336792B CN 201310226045 A CN201310226045 A CN 201310226045A CN 103336792 B CN103336792 B CN 103336792B
- Authority
- CN
- China
- Prior art keywords
- tuple
- partition
- information
- partition scheme
- scheme
- 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.)
- Active
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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/278—Data partitioning, e.g. horizontal or vertical partitioning
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)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供一种数据分区方法和装置,该方法包括:根据接收到的混合负载和数据库的结构信息,确定元组关系信息;根据所述混合负载是否可并行执行的特性以及所述元组关系信息,确定元组分裂代价信息;根据所述元组分裂代价信息获取多个分区方案,并确定各分区方案中总代价值最小的分区方案作为最优分区方案,以对所述数据库存储的数据进行分区处理。该数据分区方法和装置根据混合负载是否可并行执行的特性,将数据库中与该混合负载关联的数据进行最优分区,分区后的数据兼顾混合负载中事务型负载和分析型负载的特点,使不同负载在访问数据库系统中的数据时,都可以获得较高的访问效率,从而提升了数据库系统面向混合负载的工作性能。
Description
技术领域
本发明涉及数据库技术领域,尤其涉及一种数据分区方法和装置。
背景技术
传统的关系型数据库系统根据面向的不同负载,分为用于在线事务处理(on-line transaction processing,OLTP)的数据库系统和用于在线分析处理(on-line analytical processing,OLAP)的数据库系统;其中,用于OLTP的数据库系统所面向的负载称为事务型负载,而用于OLAP的数据库系统所面向的负载成为分析性负载;对应的,两种不同的数据库系统对数据库内的数据的管理也是不同的。具体的,由于事务型负载涉及的访问类型有数据查询、数据修改(包括数据更新、修改、插入、删除等),则面向事务型负载的数据库系统应将相关的数据集中控制,避免将数据分布在数据库内不同的区域里,影响数据访问效率;而分析型负载涉及的访问类型主要为只读的查询请求,每个查询请求往往会涉及大量数据的扫描、统计和分析,因此,面向分析型负载的数据库系统应将数据分区放置,则数据访问可在多个区域同时并行化进行,提高数据访问效率。对于上述两套数据库系统,用户需要同时维护,而随着数据量和系统复杂程度的不断增加,同时维护两套系统使用户的负担加重,因此,可面向混合负载(即同时面向事务型负载和分析性负载)的数据库系统随用户的需求而产生。
为使面向混合负载的数据库系统不影响数据的访问效率,则需兼顾事务型负载和分析性负载的特点对数据库中的数据分区。现有技术中,数据库系统中数据分区方法主要来自在线分析处理系统,例如,通过哈希(hash)函数,按数据库关系表的某一个或几个字段的hash值,进行数据分区。
但采用上述方法获得的数据分区方案便于分析型负载的处理,但对于事务型负载来说,上述分区方案不理想,影响了事务型负载的处理效率,从而降低该数据库系统面向混合负载的工作性能。
发明内容
本发明提供一种数据分区方法和装置,用于提高数据库面向混合负载时的工作性能。
第一方面,本发明实施例提供一种数据分区方法,包括:
接收用户输入的混合负载和数据库的结构信息,所述混合负载包括至少一个事务型负载和/或至少一个分析型负载,所述数据库的结构信息包括与所述混合负载关联的至少一个元组;
根据所述混合负载和所述数据库的结构信息,确定元组关系信息,所述元组关系信息包括所述数据库的结构信息中任意两个元组之间的事务相关性;
根据所述混合负载是否可并行执行的特性以及所述元组关系信息,确定元组分裂代价信息,所述元组分裂代价信息包括所述数据库的结构信息中具有事务相关性的任意两个元组之间的分裂代价,所述分裂代价用于表示当具有事务相关性的两个元组分区存储时,对所述混合负载访问所述具有事务相关性的两个元组的效率的影响程度;
根据所述元组分裂代价信息获取多个分区方案,并确定各分区方案中总代价值最小的分区方案作为最优分区方案,其中,每个分区方案的总代价值为采用该分区方案时所述数据库的结构信息中具有事务相关性的各个元组之间的分裂代价的总和;
根据所述最优分区方案,对所述数据库存储的数据进行分区处理。
结合第一方面,在第一实施方式中,所述根据所述混合负载和所述数据库的结构信息,确定元组关系信息,包括:
依次根据所述混合负载包含的各个负载,在所述数据库的结构信息中分别确定关联于每个所述负载的所有元组;
根据每个所述负载所关联的所有元组中任意两个元组之间的事务相关性,确定该负载所关联的各个元组之间的关系子信息;
将所述混合负载中每个负载所关联的各个元组之间的关系子信息汇总,获取所述元组关系信息。
结合第一方面第一实施方式,在第二实施方式中,所述根据所述混合负载是否可并行执行的特性以及所述元组关系信息,确定元组分裂代价信息,包括:
若所述元组关系信息中具有事务相关性的两个元组所关联的混合负载的特性为不可并行执行,则确定所述两个元组之间的分裂代价为预设的正值;
若所述元组关系信息中具有事务相关性的两个元组所关联的混合负载的特性为可并行执行,则确定所述两个元组之间的分裂代价为预设的负值。
结合第一方面第二实施方式,在第三实施方式中,所述元组分裂代价信息以关系图表示,在所述关系图中具有事务相关性的任意两个元组之间用连接线连接;所述根据所述元组分裂代价信息获取多个分区方案,确定各分区方案中总代价值最小的分区方案作为最优分区方案,包括:
采用图分割算法对所述关系图进行多种分割处理,确定多个分区方案,其中每一种分割处理对应于一种分区方案;
在对所述关系图进行每一种分割处理时,将所分割的每一条连接线所连接的两个元组之间的分裂代价累加,得到该分割处理所对应的分区方案的总代价值;
确定最小的总代价值所对应的分区方案为最优分区方案。
结合第一方面第二实施方式,在第四实施方式中,在所述根据所述最优分区方案,对所述数据库中的数据进行分区处理之后,所述方法还包括:当所述元组分裂代价信息更新为调整元组分裂代价信息时,采用图分割算法对所述调整元组分裂代价信息进行多种分割处理,确定多个分区方案,其中,每一种分割处理对应于一种分区方案,并确定各所述分区方案的总代价值;其中所述调整元组分裂代价信息以关系图表示,在所述关系图中具有事务相关性的任意两个元组之间用连接线连接;
确定最小的总代价值所对应的分区方案为第一分区方案;
根据所述最优分区方案和所述第一分区方案,生成元组移动代价信息,并根据所述元组移动代价信息确定调整分区方案。
结合第一方面第四实施方式,在第五实施方式中,所述根据最优分区方案和所述第一分区方案,生成元组移动代价信息,并根据所述元组移动代价信息确定调整分区方案,包括:
当按照所述第一分区方案对所述最优分区方案进行调整时,确定各最优分区内的待移动元组,所述最优分区为根据所述最优分区方案确定的存储区域;
根据所述待移动元组与所述最优分区之间的调整关系,确定所述待移动元组与所述最优分区之间的移动代价;
根据所述调整元组分裂代价信息确定所述待移动元组与所述最优分区之间的分裂代价;
根据所述移动代价和分裂代价生成元组移动代价信息;
根据所述元组移动代价信息,调整所述最优分区方案获得多个预设移动分区方案;
通过图分割算法获取各所述预设移动分区方案对应的调整总代价值;
在多个所述预设移动分区方案中确定调整总代价值最小的预设移动分区方案为调整分区方案。
结合第一方面至第一方面第三实施方式中的任意一项实施方式,在第六实施方式中,若根据所述最优分区方案对所述数据库中的数据进行分区处理失败,则所述方法还包括:
采用至少两种在线分析处理方式进行数据分区,获得与各在线分析处理方式对应的候选分区方案;
确定各候选分区方案与所述最优分区方案之间的差异值;
确定差异值最小的候选分区方案作为当前分区方案,并根据所述当前分区方案对数据进行分区。
结合第一方面第六实施方式,在第七实施方式中,所述至少两种在线分析处理方式,包括下述在线分析处理方式中的至少两种:
哈希函数处理、排列函数处理、循环算法处理和副本管理处理。
第二方面,本发明实施例提供一种数据分区装置,包括:
接收模块,用于接收用户输入的混合负载和数据库的结构信息,所述混合负载包括至少一个事务型负载和/或至少一个分析型负载,所述数据库的结构信息包括与所述混合负载关联的至少一个元组;
关系确定模块,关系确定模块,用于根据所述混合负载和所述数据库的结构信息,确定元组关系信息,所述元组关系信息包括所述数据库的结构信息中任意两个元组之间的事务相关性;
代价确定模块,用于根据所述混合负载是否可并行执行的特性以及所述元组关系信息,确定元组分裂代价信息,所述元组分裂代价信息包括所述数据库的结构信息中具有事务相关性的任意两个元组之间的分裂代价,所述分裂代价用于表示当具有事务相关性的两个元组分区存储时,对所述混合负载访问所述具有事务相关性的两个元组的效率的影响程度;
最优选择模块,用于根据所述元组分裂代价信息获取多个分区方案,并确定各分区方案中总代价值最小的分区方案作为最优分区方案,其中,每个分区方案的总代价值为采用该分区方案时所述数据库的结构信息中具有事务相关性的各个元组之间的分裂代价的总和;
分区模块,用于根据所述最优分区方案,对所述数据库存储的数据进行分区处理。
结合第二方面,在第一实施方式中,所述关系确定模块具体用于
依次根据所述混合负载中包含的各个负载,在所述数据库的结构信息中分别确定关联于每个所述负载的所有元组;
根据每个所述负载所关联的所有元组中任意两个元组之间的事务相关性,确定该负载所关联的各个元组之间的关系子信息;
将所述混合负载中每个负载所关联的各个元组之间的关系子信息汇总,获取所述元组关系信息。
结合第二方面第一实施方式,在第二实施方式中,所述代价确定模块具体用于若所述元组关系信息中具有事务相关性的两个元组所关联的混合负载的特性为不可并行执行,则确定所述两个元组之间的分裂代价为预设的正值;
若所述元组关系信息中具有事务相关性的两个元组所关联的混合负载的特性为可并行执行,则确定所述两个元组之间的分裂代价为预设的负值。
结合第二方面第二实施方式,在第三实施方式中,所述元组分裂代价信息以关系图表示,在所述关系图中具有事务相关性的任意两个元组之间用连接线连接;则所述最优选择模块具体用于采用图分割算法对所述关系图进行多种分割处理,确定多个分区方案,其中每一种分割处理对应于一种分区方案;
在对所述关系图进行每一种分割处理时,将所分割的每一条连接线所连接的两个元组之间的分裂代价累加,得到该分割处理所对应的分区方案的总代价值;
确定最小的总代价值所对应的分区方案为最优分区方案。
结合第二方面第二实施方式,在第四实施方式中,所述装置还包括调整选择模块,用于在所述分区模块根据所述最优分区方案,对所述数据库中的数据进行分区处理之后,当所述元组分裂代价信息更新为调整元组分裂代价信息时,采用图分割算法对所述调整元组分裂代价信息进行多种分割处理,确定多个分区方案,其中,每一种分割处理对应于一种分区方案,并确定各所述分区方案的总代价值;其中所述调整元组分裂代价信息以关系图表示,在所述关系图中具有事务相关性的任意两个元组之间用连接线连接;
确定最小的总代价值所对应的分区方案为第一分区方案;
根据所述最优分区方案和所述第一分区方案,生成元组移动代价信息,并根据所述元组移动代价信息确定调整分区方案。
结合第二方面第四实施方式,在第五实施方式中,所述调整选择模块具体用于按照所述第一分区方案对所述最优分区方案进行调整时,确定各最优分区内的待移动元组;所述最优分区为根据所述最优分区方案确定的存储区域;
根据所述待移动元组与所述最优分区之间的调整关系,确定待移动元组与所述最优分区之间的移动代价;
根据所述元组分裂代价信息确定所述待移动元组与所述最优分区之间的分裂代价;
根据所述移动代价和分裂代价生成元组移动代价信息;
根据所述元组移动代价信息,调整最优分区方案获得多个预设移动分区方案;
通过图分割算法获取各所述预设移动分区方案对应的调整总代价值;
在多个所述预设移动分区方案中确定调整总代价值最小的预设移动分区方案为调整分区方案。
结合第二方面至第二方面第三实施方式中的任意一项实施方式,在第六实施方式中,所述装置还包括:
差异选择模块,差异选择模块,用于所述分区模块根据所述最优分区方案对所述数据库中的数据进行分区处理失败时,采用至少两种在线分析处理方式进行数据分区,获得与各在线分析处理方式对应的候选分区方案;
确定各候选分区方案与所述最优分区方案之间的差异值;
确定差异值最小的候选分区方案作为当前分区方案,并根据所述当前分区方案对数据进行分区。
在本实施例中,根据混合负载是否可并行执行的特性,将数据库中与该混合负载关联的数据进行最优分区,分区后的数据兼顾混合负载中事务型负载和分析型负载的特点,使不同负载在访问数据库系统中的数据时,都可以获得较高的访问效率,从而提升了数据库系统面向混合负载的工作性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明数据分区方法实施例一的流程图;
图2A为本发明实施例一中元组关系信息示意图;
图2B为本发明实施例一中元组分裂代价信息的示意图;
图3为本发明数据分区方法实施例二的流程图;
图4A为本发明实施例二中负载1对应的元组关系子信息的示意图;
图4B为本发明实施例二中负载2对应的元组关系子信息的示意图;
图5为本发明数据分区方法实施例三的流程图;
图6为本发明实施例三中元组移动代价信息的示意图;
图7为本发明数据分区方法实施例四的流程图;
图8为本发明数据分区装置实施例一的结构图;
图9为本发明数据分区装置实施例二的结构图;
图10为本发明数据库管理设备实施例一的结构图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明数据分区方法实施例一的流程图。本实施例的方法可以由数据分区装置来实现,该装置可以采用硬件和/或软件方式来实现。如图1所示,该方法包括:
S101、接收用户输入的混合负载和数据库的结构信息。
作为用于数据管理的数据库系统,预先已输入数据库结构信息,该数据库结构信息包括大量的数据信息及数据间的关系结构,其中数据信息可以为教育系统中历届学生的各科考试成绩,也可以是一个医院中记录的病人就诊信息,以学生考试成绩为例,记录成绩的数据按照一定的数据间的关系结构来存储,这些结构包括表1所示的关系结构“姓名-编号”、表2所示的关系结构“编号-科目-成绩”等。
表1
张兴 | 001 |
赵一 | 002 |
表2
001 | 数学 | A |
001 | 历史 | B |
002 | 数学 | B |
上述表1和表2中的各个条目,如表1中的“张兴-001”、表2中的“001-数学-A”等,皆为构成数据库结构信息中的一个元组,即元组为数据库存储的数据,这些元组被数据库接收到的负载访问。例如接收到的负载为“查询张兴的数学成绩”,则根据该负载在表1中查询到张兴对应的编号001,随即在表2中根据条目“001-数学-A”查询到张兴的数学成绩为A。
由于负载的类型不同,则上述元组在数据库系统中分区时,需兼顾不同类型负载的特点,以利于各类型负载的对数据库系统的访问。
为获得利于各类型负载访问的数据分区方案,在本实施例中,数据分区装置需接收用户预先输入的混合负载、或用户在一段时间输入的混合负载。该混合负载包括至少一个事务型负载和/或至少一个分析型负载,则上述数据库的结构信息具体包括与混合负载关联的至少一个元组。其中,事务型负载涉及访问的元组在数据库中集中存储时,则该事务型负载可在访问该数据库时有较高的效率;而对于分析型负载,若涉及的元组分区存储,则该分析型负载便可有较高的访问效率。
S102、根据混合负载和数据库的结构信息,确定元组关系信息。
当用户输入“查询张兴的数学成绩和历史成绩”和“统计成绩为B的科目”时,其中负载1“查询张兴的数学成绩和历史成绩”仅仅涉及少量数据的查询,则该负载1为事务型负载,而负载2“统计成绩为B的科目”涉及大量数据的分析处理,则该负载2为分析型负载,即数据分区装置接收到包含了事务型负载和分析型负载的混合负载。
为了便于叙述,将表1中元组“张兴-001”表示为S1、“赵一-002”表示为S2;而表2中,“001-数学-A”表示为C1、“001-历史-B”表示为C2、“002-数学-B”表示为C3,则负载1需访问的元组有表1中的S1“张兴-001”和表2中的C1“001-数学-A”、C2“001-历史-B”;而负载2需要在表2中筛选出C2“001-历史-B”和C3“002-数学-B”,其中,基于负载1,S1和C1、S1和C2之间具有事务相关性,基于负载2,C2和C3之间具有事务相关性,由此便可确定出元组关系信息,即元组关系信息包括任意两个元组之间的事务相关性。
图2A为本发明实施例一中元组关系信息示意图。如图2A所示,元组关系信息以图像形式表示,元组关系信息中的每个节点表示一个元组,各元组之间的连接关系表示事务相关性。例如,对于负载1来说,必须根据S1获知张兴对应的编号,才可根据C1和C2获知张兴数学和历史的成绩,即在元组关系信息中,S1和C1、S1和C2之间存在事务相关性,故代表S1和C1、S1和C2之间有连接关系,对于负载2来说,需要查找成绩为B的各个元组,因此C2和C3之间存在事务相关性,则代表C2和C3的两个节点之间有连接关系。
S103、根据混合负载是否可并行执行的特性以及元组关系信息,确定元组分裂代价信息。
上述元组分裂代价信息包括数据库的结构信息中具有事务相关性的任意两个所述元组之间的分裂代价,该分裂代价用于表示当具有事务相关性的两个元组分区存储时,对混合负载访问具有事务相关性的两个元组的效率的影响程度。
举例来说,假设S1与C1分区存储,则对于涉及访问S1和C1的负载1来说,必须先在一个存储区域中获知张兴对应的编号,才可在另一个存储区域中查询该编号对应的成绩,即混合负载中的负载1不可并行执行,分区存储影响负载的访问效率;而对于负载2来说,只需访问成绩为B的元组,则当负载2访问数据库时,即使C2和C3分区存储,负载2可在一个存储区域中查找成绩为B的元组C2的同时,也可在另一个存储区域中查找成绩为B的元组C3,即混合负载中的负载2可被并行执行。
图2B为本发明实施例一中元组分裂代价信息的示意图。如图2B所示,在图2A所示的元组关系信息的基础上,根据混合负载是否可并行执行的特性,在元组关系信息中确定出任意两个元组的之间的分裂代价,将元组分裂代价信息以完整的关系图表示;例如S1和C1之间的分裂代价为1,表示S1和C1分区存储不利于负载访问,而C2和C3之间的分裂代价为-1,表示C2和C3分区存储利于负载访问。
需要说明的是,本实施例中分裂代价的取值并不限制为1或-1,可根据负载在混合负载中所占的比重设置取值,例如负载1访问的次数远大于负载2时、则对于不可并行执行的负载1来说,若需集中存储的元组分区存储,会严重影响负载1对数据库的访问效率,为获得合理的分区方案,与负载1关联的元组之间分裂代价的取值可以相对于负载2取较大的数值,如5、10等较大的数值。
S104、根据元组分裂代价信息获取多个分区方案,并确定各分区方案中总代价值最小的分区方案作为最优分区方案。
其中,每个分区方案的总代价值为采用该分区方案时数据库的结构信息中具有事务相关性的各个元组之间的分裂代价的总和;具体来说,上述分区方案中指示一些元组将不再同一个区域存储,其中具有事务相关性的任意两个元组按照该分区方案将被分区存储时,这些具有事务相关性的各个元组之间的分裂代价的总和,得到该分区方案对应的总代价值。,具体如表3所示:
表3
方案1 | P1(S1、C1)P2(C2、C3) |
方案2 | P1(S1、C3)P2(C1、C2) |
方案3 | P1(S1、C2)P2(C1、C3) |
以方案1为例,若按照方案1将数据库中的数据分区,则需将S1和C1放在第一区域P1中,而将C2和C3放在第二区域P2中时,使得C2和S1分区放置,将会产生分裂代价值1,计算按照该分区方案进行分区时具有事务相关性的各个元组之间的分裂代价的总和,获得该分区方案对应的总代价值;随后与获得方案1的总代价值的过程类似,分别获得方案2和方案3的总代价值,可以理解的是,由于总代价值为具有事务相关性的各个元组之间的分裂代价的总和,且分裂代价是用于表示当具有事务相关性的两个元组分区存储时,对混合负载访问该具有事务相关性的两个元组的效率的影响程度,因此,若总代价值越大,该分区方案对负载访问数据库的效率的不利影响也越大,因此选择总代价值最小的分区方案作为最优分区方案。
S105、根据最优分区方案,对数据库中的数据进行分区处理。
在本实施例中,根据混合负载是否可并行执行的特性,将数据库中与该混合负载关联的数据进行最优分区,分区后的数据兼顾混合负载中事务型负载和分析型负载的特点,使不同负载在访问数据库系统中的数据时,可以获得较高的访问效率,从而提升了数据库系统面向混合负载的工作性能。
图3为本发明数据分区方法实施例二的流程图。如图3所示,本实施例是在实施例一的基础上进一步描述数据分区方法,该方法包括:
S201、接收用户输入的混合负载和数据库结构信息。
如本发明实施例一中S102中的例子,混合负载中包括多个不同的负载、其中接收的混合负载是一种经验模型,即根据经验预测的混合负载,例如对于一个存放学生成绩的数据库,对该数据库常见的负载访问即为填写成绩、分析计算所有学生的平均成绩等。
S202、依次根据混合负载中包含的各个负载,在数据库的结构信息中分别确定关联于每个负载的所有元组。
数据分区装置分析接收到的混合负载,根据混合负载中的各个负载、依次确定与各个负载关联的所有元组,具体如实施例一中示例、数据分区装置分析混合负载中包括负载1和负载2两个负载,分别确定与负载1关联的所有元组为S1、C1和C2、与负载2关联的所有元组为C2和C3。
S203、根据每个负载所关联的所有元组中任意两个元组之间的事务相关性,确定该负载所关联的各个元组之间的关系子信息。
图4A为本发明实施例二中负载1对应的元组关系子信息的示意图,图4B为本发明实施例二中负载2对应的元组关系子信息的示意图。如图4A所示,与负载1关联的元组S1、C1和C2,根据元组之间的事务关联性,确定出负载1所关联的各个元组之间的元组关系子信息;同理,如图4B所示,确定出负载2所关联的各个元组之间的元组关系子信息。
在本实施例中以混合负载仅包括两个负载为例,但在实际应用中,混合负载包括的负载个数较多,由此可确定出多个元组关系子信息。
S204、将混合负载中每个负载所关联的各个元组之间的关系子信息汇总,获取元组关系信息。
分析上述各个负载所关联的各个元组之间的元组关系子信息,以图4A和图4B所示的两个元组关系子信息为例,将图4A和图4B中两个元组关系子信息合并为一个完整的、如图2A所示的元组关系信息。
S205、根据混合负载是否可并行执行的特性以及元组关系信息,确定元组分裂代价信息。
具体的,若所述元组关系信息中具有事务相关性的两个元组所关联的混合负载的特性为不可并行执行,则确定上述两个元组之间的分裂代价为预设的正值;
若所述元组关系信息中具有事务相关性的两个元组所关联的混合负载的特性为可并行执行,则确定上述两个元组之间的分裂代价为预设的负值。
例如,如图2B所示,负载1不可并行执行,则与负载1关联的S1和C1之间的分裂代价确定为正值1;而负载2可并行执行,则与负载2关联的C2和C3之间的分裂代价为负值-1,在实际应用中,具体的数值大小可根据负载的访问频率进行预设。
S206、根据元组分裂代价信息获取多个分区方案,确定各分区方案中总代价值最小的分区方案作为最优分区方案。
在S206中确定的分区方案至少为两个,例如表3所示的多个方案。
S207、采用图分割算法,确定各分区方案的总代价值。
上述元组分裂代价信息可以关系图表示,如上述图2B所示的关系图,在所述关系图中具有事务相关性的任意两个元组之间用连接线连接,该连接线与具有事务相关性的两个元组之间的分裂代价相对应,则可采用图分割算法对该关系图进行多种分割处理,确定多个分区方案,其中每一种分割处理对应于一种分区方案;并在对上述关系图进行每一种分割处理时,将所分割的每一条连接线所连接的两个元组之间的分裂代价累加,得到该分割处理所对应的分区方案的总代价值;例如要获得上述表三中的方案1,则需要将图2B中的S1和C2之间的连接线分割,并将该连接线所连接的两个元组之间的分裂代价统计,用于计算多个连接线所连接的两个元组之间的分裂代价的总和;由于获得方案1时仅需分割S1和C2之间的连接线,则该方案1对应的总代价值即为S1和C2之间的分裂代价。
S208、确定最小的总代价值所对应的分区方案为最优分区方案。
在本实施例中,根据混合负载是否可并行执行的特性,并结合图分割算法,将数据库中与该混合负载关联的数据进行最优分区,分区后的数据兼顾混合负载中事务型负载和分析型负载的特点,使不同负载在访问数据库系统中的数据时,可以获得较高的访问效率,从而提升了数据库系统面向混合负载的工作性能。
用户在使用数据库的过程中,需求会发生变化,即输入的负载发生了变化,例如出现新的负载3,该负载3关联的元组可能为S2和C3,由此增加了一个元组关系子信息,从而根据混合负载确定的元组关系信息也需发生变化,需对数据重新分区;或者是一些负载的访问频率发生了变化,例如,在前次确定最优分区方案时,由于负载1的访问频率较高,则该最优分区方案较多地便于负载1访问,以此提升混合负载对数据库的访问效率,但在使用数据库一段时间后,由于各种原因,用户输入负载2的频率远大于负载1时,但该最优数据分区方案不便于负载2访问,因此该数据库的分区方案需要进行调整,即根据上述最优分区方案,对所述数据库中的数据进行分区处理之后,当所述元组分裂代价信息发生更新为调整元组分裂代价信息时,需调整数据库内的数据分区。
图5为本发明数据分区方法实施例三的流程图。如图5所示,在上述实施例一或实施例二的基础上进一步的优化数据分区方法,具体的,该方法包括:
S301、接收用户输入的混合负载。
在本实施例中,数据分区装置接收到混合负载为在一段时间内,用户使用该数据库系统时输入的负载。
S302、根据接收的混合负载,确定调整元组分裂代价信息。
根据一段时间内数据分区装置接收到的混合负载,并结合数据库内的元组,获得调整元组分裂代价信息。
S303、根据调整元组分裂代价信息,确定至少两个分区方案。
上述调整元组分裂代价信息以关系图表示,在该关系图中具有事务相关性的任意两个元组之间用连接线连接,即调整元组分裂代价信息也可采用如图2B所示的关系图表示,则可采用图分割算法对该调整元组分裂代价信息进行多种分割处理,确定多个分区方案,其中,每一种分割处理对应于一种分区方案,并确定各所述分区方案的总代价值;上述S302至S303的具体实现过程可参考S201~206,在此不再赘述。
S304、确定最小的总代价值所对应的分区方案为第一分区方案。
第一分区方案是根据当前一段时间接收的混合负载所确定的总代价值最小的分区方案,可以理解为该第一分区方案完全便于当前混合负载的访问。
S305、根据最优分区方案和第一分区方案,生成元组移动代价信息。
当按照第一分区方案对最优分区方案进行调整时,确定各最优分区内的待移动元组,该最优分区为根据上述最优分区方案确定的存储区域;最优分区方案以P1(S1、C3),P2(C1、C2)为例,其中P1、P2为根据最优分区方案确定的两个存储区域;而确定的第一分区方案以P1′(S1、C2),P2′(C1、C3)为例;当按照第一分区方案对最优分区方案进行调整时,分析比对最优分区方案和第一分区方案,可知元组C2和C3需要发生移动,即C2和C3为待移动元组,则根据待移动元组与最优分区之间的调整关系,确定待移动元组与最优分区之间的移动代价;例如,当在调整最优分区方案获得第一分区方案时,C2需移出最优分区P2,C3需移出最优分区P1,则P2和C2、P1和C3之间存在调整关系,具体的移动代价的取值可以预设,例如C2这一元组中包括的数据较多,移动C2中的数据花费的资源成本较大,因此可将C2的移动代价的取值设置的较大,以对应调整过程所需的资源成本。
在确定移动代价后,还需根据上述调整元组分裂代价信息确定待移动元组与最优分区之间的分裂代价;并根据移动代价和分裂代价生成元组移动代价信息。
具体的,图6为本发明实施例三中元组移动代价信息的示意图。如图6所示,通过将C2移出P2、C3移出P1才可获得第一分区方案,则C2与P2、C3与P1之间的连接关系表示移动代价,而C2与P1内的S1之间存在分裂代价,此时,C2与P1内的S1之间存在的分裂代价即为待移动元组C2与最优分区P1之间的分裂代价。
S306、根据调整元组移动代价信息确定调整分区方案。
上述元组移动代价信息也可以关系图表示,在该关系图待移动元组与最优分区之间的调整关系、及待移动元组与最优分区内的元组之间的事务相关性用连接线表示,则可采用图分割算法对该元组移动代价信息进行多种分割处理,确定多个预设移动分区方案。具体来说对于任意一种分区方案,总是存在一定的分裂代价值,举例来说,最优分区方案对于当前接收到的混合负载来说,分裂代价值为10,而第一分区方案的分裂代价值为4,则将最优分区方案调整为第一分区方案,以使分裂代价值降低,但根据移动代价信息可知,若调整最优分区方案获得第一分区方案时,需付出移动代价5,由10-4+5=11可知,该调整过程加注至第一分区方案的总代价值为11,经分析可知,为了减小4个分裂代价值却要付出移动代价5,是一次浪费资源的调整,但为了使数据库的分区方案适用于当前的混合负载,可选择将最优分区方案调整为预设移动分区方案。
具体的,可根据元组移动代价信息,采用图分割算法对该元组移动代价信息进行多种分割处理,确定多个预设移动分区方案,多个预设移动分区方案中包括最优的分区方案(即选择不进行调整,继续使用上述最优分区方案)、第一分区方案或多个调整部分元组获得的分区方案,例如P1′′(S1),P2′′(C1、C2、C3)。
获得多个预设移动分区方案后,需在多个所述预设移动分区方案中确定调整总代价值最小的预设移动分区方案为最优分区方案;具体的,通过图分割算法获取多个所述预设移动分区方案对应的调整总代价值,即计算调整最优分区方案为预设移动分区方案这一过程中,加注至该预设移动分区方案内的调整总代价值,最后在多个预设移动分区方案中确定调整总代价值最小的预设移动分区方案为调整分区方案。
在本实施例中,数据库系统进行最优分区后,在用户的使用过程中,用户输入的负载发生了变化,则根据用户输入的负载,对数据库系统中已有的分区做以调整,在进行调整时还兼顾了进行调整所需的移动代价,以花费最小的移动代价获取最优的分区方案为前提,使不同负载在访问数据库系统中的数据时,可以获得较高的访问效率,从而提升了数据库系统面向混合负载的工作性能。
在实际应用中,会有一些客观因素无法使用前述方法对数据库内的数据进行分区,但为了使数据库系统的分区方案适用于混合负载,可以采用前述方法确定的分区方案为参照,在数据库系统所采用现有的分区方案中确定较适用与混合负载的分区方案。
图7为本发明数据分区方法实施例四的流程图。如图7所示,本实施例为在根据实施例一或实施例二确定的最优分区方案对数据库中的数据进行分区处理失败后,进行的一种数据分区方法,该方法包括:
S401、获取最优分区方案。
在一些设备中,可能不支持执行S201~S209所述的方法,为了使该设备中的数据分区合理化,则可使该设备外接执行实施例二的数据分区装置,该数据分区装置根据该设备接收的混合负载及该设备的数据结构信息,获取最优分区方案,具体过程与S201~S209一致,在此不再赘述。
S402、采用至少两种在线分析处理方式进行数据分区,获得与各在线分析处理方式对应的候选分区方案。
上述在线分析处理方式为现有技术,例如哈希函数处理、排列函数处理、循环算法处理和副本管理处理,则该在线分析处理方式可在上述设备中使用,获得与各在线分析处理方式对应的候选分区方案。
S403、确定各候选分区方案与所述最优分区方案之间的差异值。
上述最优分区方案以S表示,则S=(P1,P2,P3,……,Pj……),其中Pj表示最优分区方案中第j个分区。
候选分区方案以Si表示,其中i表示多个候选分区方案中的一个分区方案的编号,则Si=(Pi,1,Pi,2,Pi,3,……,Pi,j……),其中Pi,j表示分区方案i的第j个分区,i∈M,其中M为候选分区方案的总数。
上述分区Pj中的元组以(t1 t2…tj…)表示,Pi,j中存在的元组以(ti,1 ti,2…ti,j…)表示。
计算S和各个候选分区方案Si的差异值,该差异值以Di表示,则
S404、确定差异值最小的候选分区方案作为当前分区方案,并根据该当前分区方案对数据进行分区。
在分别计算该最优分区方案与各个候选分区方案对应的差异值Di后,确定差异值最小的分区方案,为该设备可选择的最优分区方案。
在本实施例中,结合实际情况,在对数据库系统中的数据进行分区时,可以灵活的将采用图分割算法获得的最优分区方案作为参考标准,在通过现有方法获得的候选分区方案中选择与参考标准最接近的候选分区方案,从而使数据库系统可以采用现有方法时,混合负载可以有较高的访问效率,避免了因设备不支持等客观因素,导致无法采用现有方法获得便于混合负载访问的分区方案的情况。
图8为本发明数据分区装置实施例一的结构图。如图8所示,包括:
接收模块501,用于接收用户输入的混合负载和数据库的结构信息,所述混合负载包括至少一个事务型负载和/或至少一个分析型负载,所述数据库的结构信息包括与所述混合负载关联的至少一个元组;
关系确定模块502,用于根据所述混合负载和所述数据库的结构信息,确定元组关系信息,所述元组关系信息包括所述数据库的结构信息中任意两个所述元组之间的事务相关性;
代价确定模块503,用于根据所述混合负载是否可并行执行的特性以及所述元组关系信息,确定元组分裂代价信息,所述元组分裂代价信息包括所述数据库的结构信息中具有事务相关性的任意两个元组之间的分裂代价,所述分裂代价用于表示当具有事务相关性的两个元组分区存储时,对所述混合负载访问所述具有事务相关性的两个元组的效率的影响程度;
最优选择模块504,用于根据所述元组分裂代价信息获取多个分区方案,并确定各分区方案中总代价值最小的分区方案作为最优分区方案,其中,每个分区方案的总代价值为采用该分区方案时所述数据库的结构信息中具有事务相关性的各个元组之间的分裂代价的总和;
分区模块505,用于根据所述最优分区方案,对所述数据库存储的数据进行分区处理。
在本实施例中,根据混合负载是否可并行执行的特性,并结合图分割算法,将数据库中与该混合负载关联的数据进行最优分区,分区后的数据兼顾混合负载中事务型负载和分析型负载的特点,使不同负载在访问数据库系统中的数据时,可以获得较高的访问效率,从而提升了数据库系统面向混合负载的工作性能。
图9为本发明数据分区装置实施例二的结构图。如图9所示,关系确定模块502具体用于依次根据所述混合负载中包含的各个负载,在所述数据库结构信息中分别确定关联于每个所述负载的所有元组;
根据每个所述负载所关联的所有元组中任意两个元组之间的事务相关性,确定该负载所关联的各个元组之间的关系子信息;
将所述混合负载中每个负载所关联的各个元组之间的关系子信息汇总,获取所述元组关系信息。
代价确定模块503具体用于若所述元组关系信息中具有事务相关性的两个元组所关联的混合负载的特性为不可并行执行,则确定所述两个元组之间的分裂代价为预设的正值;
若所述元组关系信息中具有事务相关性的两个元组对应的混合负载的特性为可并行执行,则确定所述两个元组之间的分裂代价为预设的负值。
所述元组分裂代价信息以关系图表示,在所述关系图中具有事务相关性的任意两个元组之间有连接线;上述最优选择模块504用于采用图分割算法对所述关系图进行多种分割处理,确定多个分区方案,其中每一种分割处理对应于一种分区方案;
并在对所述关系图进行每一种分割处理时,将所分割的每一条连接线所连接的两个元组之间的分裂代价累加,得到该分割处理所对应的分区方案的总代价值;
确定最小的总代价值所对应的分区方案为最优分区方案。
进一步的,所述装置还包括调整选择模块506用于在所述分区模块根据所述最优分区方案,对所述数据库中的数据进行分区处理之后,当所述元组分裂代价信息更新为调整元组分裂代价信息时,采用图分割算法对所述调整元组分裂代价信息进行多种分割处理,确定多个分区方案,其中,每一种分割处理对应于一种分区方案,并确定各所述分区方案的总代价值;其中所述调整元组分裂代价信息以关系图表示,在所述关系图中具有事务相关性的任意两个元组之间用连接线连接;
确定最小的总代价值所对应的分区方案为第一分区方案;
根据所述最优分区方案和所述第一分区方案,生成元组移动代价信息,并根据所述元组移动代价信息确定调整分区方案。
进一步的,所述调整选择模块506具体用于当按照所述第一分区方案对所述最优分区方案进行调整时,确定各最优分区内的待移动元组;所述最优分区为根据所述最优分区方案确定的存储区域;还用于根据所述待移动元组与所述最优分区之间的调整关系,确定待移动元组与所述最优分区之间的移动代价;
根据所述元组分裂代价信息确定所述待移动元组与所述最优分区之间的分裂代价;
根据所述移动代价和分裂代价生成元组移动代价信息;
根据所述元组移动代价信息,调整最优分区方案获得多个预设移动分区方案;
通过图分割算法获取各所述预设移动分区方案对应的调整总代价值;
在多个所述预设移动分区方案中确定调整总代价值最小的预设移动分区方案为调整分区方案。
更灵活的,所述装置还可包括差异选择模块507,用于所述分区模块505根据所述最优分区方案对所述数据库中的数据进行分区处理失败,采用至少两种在线分析处理方式进行数据分区,获得与各在线分析处理方式对应的候选分区方案,其中,上述在线分析处理方式为现有技术,例如哈希函数处理、排列函数处理、循环算法处理和副本管理处理;
确定各候选分区方案与所述最优分区方案之间的差异值;
确定差异值最小的候选分区方案作为当前分区方案,并根据该当前分区方案对数据进行分区。
在本实施例中,根据混合负载是否可并行执行的特性,并结合图分割算法,将数据库中与该混合负载关联的数据进行最优分区,分区后的数据兼顾混合负载中事务型负载和分析型负载的特点,使不同负载在访问数据库系统中的数据时,可以获得较高的访问效率,从而提升了数据库系统面向混合负载的工作性能。
上述各装置实施例中的各模块对应各方法实施例,在此不再赘述。
进一步的,在实际应用中,上述数据分区装置可以为数据库管理设备。图10为本发明数据库管理设备实施例一的结构图。如图10所示,该数据库管理设备包括:处理器601、接收器602、存储器603总线604。
其中,处理器601、接收器602、存储器603、通过总线604相互连接;总线604可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图10中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器603,用于存放程序及数据。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器603能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器;而处理器601执行存储器603所存放的程序;具体的,所述数据库管理设备中,接收器602,用于接收用户输入的混合负载和数据库的结构信息,所述混合负载包括至少一个事务型负载和/或至少一个分析型负载,所述数据库的结构信息包括与所述混合负载关联的至少一个元组,被存储器603存储;
处理器601,用于根据所述混合负载和所述数据库的结构信息,确定元组关系信息,所述元组关系信息包括所述数据库的结构信息中任意两个元组之间的事务相关性;
处理器601用于根据所述混合负载是否可并行执行的特性以及所述元组关系信息,确定元组分裂代价信息,所述元组分裂代价信息包括所述数据库的结构信息中具有事务相关性的任意两个元组之间的分裂代价,所述分裂代价用于表示当具有事务相关性的两个元组分区存储时,对所述混合负载访问所述具有事务相关性的两个元组的效率的影响程度;
处理器601用于根据所述元组分裂代价信息获取多个分区方案,并确定各分区方案中总代价值最小的分区方案作为最优分区方案,其中,每个分区方案的总代价值为采用该分区方案时所述数据库的结构信息中具有事务相关性的各个元组之间的分裂代价的总和;
上述处理器601用于根据所述最优分区方案,对所述数据库存储的数据进行分区处理。
进一步的,处理器601依次根据所述混合负载中包含的各个负载,在所述数据库的结构信息中分别确定关联于每个所述负载的所有元组;
处理器601根据每个所述负载所关联的所有元组中任意两个元组之间的事务相关性,确定该负载所关联的各个元组之间的关系子信息;
处理器601将所述混合负载中每个负载所关联的各个元组之间的关系子信息汇总,获取所述元组关系信息。
若所述元组关系信息中具有事务相关性的两个元组所关联的混合负载的特性为不可并行执行,则处理器601确定所述两个元组之间的分裂代价为预设的正值;
若所述元组关系信息中具有事务相关性的两个元组所关联的混合负载的特性为可并行执行,则处理器601确定所述两个元组之间的分裂代价为预设的负值。
所述元组分裂代价信息以关系图表示,在所述关系图中具有事务相关性的任意两个元组之间用连接线连接;则
进一步的,处理器601采用图分割算法对所述关系图进行多种分割处理,确定多个分区方案,其中每一种分割处理对应于一种分区方案;
在对所述关系图进行每一种分割处理时,将所分割的每一条连接线所连接的两个元组之间的分裂代价累加,得到该分割处理所对应的分区方案的总代价值;
处理器601确定最小的总代价值所对应的分区方案为最优分区方案。
进一步的,所述根据所述最优分区方案,以对所述数据库中的数据进行分区处理之后,当所述元组分裂代价信息更新为调整元组分裂代价信息时,处理器601还用于采用图分割算法对所述调整元组分裂代价信息进行多种分割处理,确定多个分区方案,其中,每一种分割处理对应于一种分区方案,并确定各所述分区方案的总代价值;其中所述调整元组分裂代价信息以关系图表示,在所述关系图中具有事务相关性的任意两个元组之间用连接线连接;
处理器601确定最小的总代价值所对应的分区方案为第一分区方案;
根据所述最优分区方案和所述第一分区方案,生成元组移动代价信息,并根据所述元组移动代价信息确定调整分区方案。
进一步的,所述数据库管理设备的处理器601用于按照所述第一分区方案对所述最优分区方案进行调整时,确定各最优分区内的待移动元组;所述最优分区为根据所述最优分区方案确定的存储区域;
还用于根据所述待移动元组与所述最优分区之间的调整关系,确定待移动元组与所述最优分区之间的移动代价;
处理器601根据所述元组分裂代价信息确定所述待移动元组与所述最优分区之间的分裂代价;
处理器601根据所述移动代价和分裂代价生成元组移动代价信息;
处理器601根据所述元组移动代价信息,调整最优分区方案获得多个预设移动分区方案;
处理器601通过图分割算法获取各所述预设移动分区方案对应的调整总代价值;
则处理器601在多个所述预设移动分区方案中确定调整总代价值最小的预设移动分区方案为调整分区方案。
处理器601还用于在根据所述最优分区方案对所述数据库中的数据进行分区处理失败时,采用至少两种在线分析处理方式进行数据分区,获得与各在线分析处理方式对应的候选分区方案;
确定各候选分区方案与所述最优分区方案之间的差异值;
确定差异值最小的候选分区方案作为当前分区方案,并根据所述当前分区方案对数据进行分区,其中,上述在线分析处理方式为现有技术,例如哈希函数处理、排列函数处理、循环算法处理和副本管理处理;
在本实施例中,数据库管理设备根据混合负载是否可并行执行的特性,并结合图分割算法,将数据库中与该混合负载关联的数据进行最优分区,分区后的数据兼顾混合负载中事务型负载和分析型负载的特点,使不同负载在访问数据库系统中的数据时,可以获得较高的访问效率,从而提升了数据库系统面向混合负载的工作性能。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (15)
1.一种数据分区方法,其特征在于,包括:
接收用户输入的混合负载和数据库的结构信息,所述混合负载包括至少一个事务型负载和/或至少一个分析型负载,所述数据库的结构信息包括与所述混合负载关联的至少一个元组;
根据所述混合负载和所述数据库的结构信息,确定元组关系信息,所述元组关系信息包括所述数据库的结构信息中任意两个元组之间的事务相关性;
根据所述混合负载是否可并行执行的特性以及所述元组关系信息,确定元组分裂代价信息,所述元组分裂代价信息包括所述数据库的结构信息中具有事务相关性的任意两个元组之间的分裂代价,所述分裂代价用于表示当具有事务相关性的两个元组分区存储时,对所述混合负载访问所述具有事务相关性的两个元组的效率的影响程度;
根据所述元组分裂代价信息获取多个分区方案,并确定各分区方案中总代价值最小的分区方案作为最优分区方案,其中,每个分区方案的总代价值为采用该分区方案时所述数据库的结构信息中具有事务相关性的各个元组之间的分裂代价的总和;
根据所述最优分区方案,对所述数据库存储的数据进行分区处理。
2.根据权利要求1所述的数据分区方法,其特征在于,所述根据所述混合负载和所述数据库的结构信息,确定元组关系信息,包括:
依次根据所述混合负载包含的各个负载,在所述数据库的结构信息中分别确定关联于每个所述负载的所有元组;
根据每个所述负载所关联的所有元组中任意两个元组之间的事务相关性,确定该负载所关联的各个元组之间的关系子信息;
将所述混合负载中每个负载所关联的各个元组之间的关系子信息汇总,获取所述元组关系信息。
3.根据权利要求2所述的数据分区方法,其特征在于,所述根据所述混合负载是否可并行执行的特性以及所述元组关系信息,确定元组分裂代价信息,包括:
若所述元组关系信息中具有事务相关性的两个元组所关联的混合负载的特性为不可并行执行,则确定所述两个元组之间的分裂代价为预设的正值;
若所述元组关系信息中具有事务相关性的两个元组所关联的混合负载的特性为可并行执行,则确定所述两个元组之间的分裂代价为预设的负值。
4.根据权利要求3所述的数据分区方法,其特征在于,所述元组分裂代价信息以关系图表示,在所述关系图中具有事务相关性的任意两个元组之间用连接线连接;所述根据所述元组分裂代价信息获取多个分区方案,确定各分区方案中总代价值最小的分区方案作为最优分区方案,包括:
采用图分割算法对所述关系图进行多种分割处理,确定多个分区方案,其中每一种分割处理对应于一种分区方案;
在对所述关系图进行每一种分割处理时,将所分割的每一条连接线所连接的两个元组之间的分裂代价累加,得到该分割处理所对应的分区方案的总代价值;
确定最小的总代价值所对应的分区方案为最优分区方案。
5.根据权利要求3所述的数据分区方法,其特征在于,在所述根据所述最优分区方案,对所述数据库中的数据进行分区处理之后,所述方法还包括:当所述元组分裂代价信息更新为调整元组分裂代价信息时,采用图分割算法对所述调整元组分裂代价信息进行多种分割处理,确定多个分区方案,其中,每一种分割处理对应于一种分区方案,并确定各所述分区方案的总代价值;其中所述调整元组分裂代价信息以关系图表示,在所述关系图中具有事务相关性的任意两个元组之间用连接线连接;
确定最小的总代价值所对应的分区方案为第一分区方案;
根据所述最优分区方案和所述第一分区方案,生成元组移动代价信息,并根据所述元组移动代价信息确定调整分区方案。
6.根据权利要求5所述的数据分区方法,其特征在于,所述根据最优分区方案和所述第一分区方案,生成元组移动代价信息,并根据所述元组移动代价信息确定调整分区方案,包括:
当按照所述第一分区方案对所述最优分区方案进行调整时,确定各最优分区内的待移动元组,所述最优分区为根据所述最优分区方案确定的存储区域;
根据所述待移动元组与所述最优分区之间的调整关系,确定所述待移动元组与所述最优分区之间的移动代价;
根据所述调整元组分裂代价信息确定所述待移动元组与所述最优分区之间的分裂代价;
根据所述移动代价和分裂代价生成元组移动代价信息;
根据所述元组移动代价信息,调整所述最优分区方案获得多个预设移动分区方案;
通过图分割算法获取各所述预设移动分区方案对应的调整总代价值;
在多个所述预设移动分区方案中确定调整总代价值最小的预设移动分区方案为调整分区方案。
7.根据权利要求1~4中任一项所述的数据分区方法,其特征在于,若根据所述最优分区方案对所述数据库中的数据进行分区处理失败,则所述方法还包括:
采用至少两种在线分析处理方式进行数据分区,获得与各在线分析处理方式对应的候选分区方案;
确定各候选分区方案与所述最优分区方案之间的差异值;
确定差异值最小的候选分区方案作为当前分区方案,并根据所述当前分区方案对数据进行分区。
8.根据权利要求7所述的数据分区方法,其特征在于,所述至少两种在线分析处理方式,包括下述在线分析处理方式中的至少两种:
哈希函数处理、排列函数处理、循环算法处理和副本管理处理。
9.一种数据分区装置,其特征在于,包括:
接收模块,用于接收用户输入的混合负载和数据库的结构信息,所述混合负载包括至少一个事务型负载和/或至少一个分析型负载,所述数据库的结构信息包括与所述混合负载关联的至少一个元组;
关系确定模块,用于根据所述混合负载和所述数据库的结构信息,确定元组关系信息,所述元组关系信息包括所述数据库的结构信息中任意两个元组之间的事务相关性;
代价确定模块,用于根据所述混合负载是否可并行执行的特性以及所述元组关系信息,确定元组分裂代价信息,所述元组分裂代价信息包括所述数据库的结构信息中具有事务相关性的任意两个元组之间的分裂代价,所述分裂代价用于表示当具有事务相关性的两个元组分区存储时,对所述混合负载访问所述具有事务相关性的两个元组的效率的影响程度;
最优选择模块,用于根据所述元组分裂代价信息获取多个分区方案,并确定各分区方案中总代价值最小的分区方案作为最优分区方案,其中,每个分区方案的总代价值为采用该分区方案时所述数据库的结构信息中具有事务相关性的各个元组之间的分裂代价的总和;
分区模块,用于根据所述最优分区方案,对所述数据库存储的数据进行分区处理。
10.根据权利要求9所述的数据分区装置,其特征在于,所述关系确定模块具体用于,
依次根据所述混合负载中包含的各个负载,在所述数据库的结构信息中分别确定关联于每个所述负载的所有元组;
根据每个所述负载所关联的所有元组中任意两个元组之间的事务相关性,确定该负载所关联的各个元组之间的关系子信息;
将所述混合负载中每个负载所关联的各个元组之间的关系子信息汇总,获取所述元组关系信息。
11.根据权利要求10所述的数据分区装置,其特征在于,所述代价确定模块具体用于若所述元组关系信息中具有事务相关性的两个元组所关联的混合负载的特性为不可并行执行,则确定所述两个元组之间的分裂代价为预设的正值;
若所述元组关系信息中具有事务相关性的两个元组所关联的混合负载的特性为可并行执行,则确定所述两个元组之间的分裂代价为预设的负值。
12.根据权利要求11所述的数据分区装置,其特征在于,所述元组分裂代价信息以关系图表示,在所述关系图中具有事务相关性的任意两个元组之间用连接线连接;则所述最优选择模块具体用于采用图分割算法对所述关系图进行多种分割处理,确定多个分区方案,其中每一种分割处理对应于一种分区方案;
在对所述关系图进行每一种分割处理时,将所分割的每一条连接线所连接的两个元组之间的分裂代价累加,得到该分割处理所对应的分区方案的总代价值;
确定最小的总代价值所对应的分区方案为最优分区方案。
13.根据权利要求11所述的数据分区装置,其特征在于,所述装置还包括调整选择模块,用于在所述分区模块根据所述最优分区方案,对所述数据库中的数据进行分区处理之后,当所述元组分裂代价信息更新为调整元组分裂代价信息时,采用图分割算法对所述调整元组分裂代价信息进行多种分割处理,确定多个分区方案,其中,每一种分割处理对应于一种分区方案,并确定各所述分区方案的总代价值;其中所述调整元组分裂代价信息以关系图表示,在所述关系图中具有事务相关性的任意两个元组之间用连接线连接;
确定最小的总代价值所对应的分区方案为第一分区方案;
根据所述最优分区方案和所述第一分区方案,生成元组移动代价信息,并根据所述元组移动代价信息确定调整分区方案。
14.根据权利要求13所述的数据分区装置,其特征在于,所述调整选择模块具体用于按照所述第一分区方案对所述最优分区方案进行调整时,确定各最优分区内的待移动元组;所述最优分区为根据所述最优分区方案确定的存储区域;
根据所述待移动元组与所述最优分区之间的调整关系,确定待移动元组与所述最优分区之间的移动代价;
根据所述元组分裂代价信息确定所述待移动元组与所述最优分区之间的分裂代价;
根据所述移动代价和分裂代价生成元组移动代价信息;
根据所述元组移动代价信息,调整最优分区方案获得多个预设移动分区方案;
通过图分割算法获取各所述预设移动分区方案对应的调整总代价值;
在多个所述预设移动分区方案中确定调整总代价值最小的预设移动分区方案为调整分区方案。
15.根据权利要求9~12中任一项所述的数据分区装置,其特征在于,所述装置还包括:
差异选择模块,用于所述分区模块根据所述最优分区方案对所述数据库中的数据进行分区处理失败时,采用至少两种在线分析处理方式进行数据分区,获得与各在线分析处理方式对应的候选分区方案;
确定各候选分区方案与所述最优分区方案之间的差异值;
确定差异值最小的候选分区方案作为当前分区方案,并根据所述当前分区方案对数据进行分区。
Priority Applications (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310226045.6A CN103336792B (zh) | 2013-06-07 | 2013-06-07 | 数据分区方法和装置 |
EP14807689.6A EP2998883B1 (en) | 2013-06-07 | 2014-01-22 | Data partitioning method and apparatus |
JP2016517131A JP6112440B2 (ja) | 2013-06-07 | 2014-01-22 | データ区分方法および装置 |
PCT/CN2014/071039 WO2014194679A1 (zh) | 2013-06-07 | 2014-01-22 | 数据分区方法和装置 |
KR1020147016634A KR101653776B1 (ko) | 2013-06-07 | 2014-01-22 | 데이터 분할 방법 및 장치 |
US14/297,968 US9323796B2 (en) | 2013-06-07 | 2014-06-06 | Data partitioning method and apparatus |
TW103119684A TWI503679B (zh) | 2013-06-07 | 2014-06-06 | Data partitioning method and device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310226045.6A CN103336792B (zh) | 2013-06-07 | 2013-06-07 | 数据分区方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103336792A CN103336792A (zh) | 2013-10-02 |
CN103336792B true CN103336792B (zh) | 2016-11-23 |
Family
ID=49244957
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310226045.6A Active CN103336792B (zh) | 2013-06-07 | 2013-06-07 | 数据分区方法和装置 |
Country Status (6)
Country | Link |
---|---|
EP (1) | EP2998883B1 (zh) |
JP (1) | JP6112440B2 (zh) |
KR (1) | KR101653776B1 (zh) |
CN (1) | CN103336792B (zh) |
TW (1) | TWI503679B (zh) |
WO (1) | WO2014194679A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11838356B2 (en) * | 2016-06-03 | 2023-12-05 | Google Llc | Weighted auto-sharing |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103336792B (zh) * | 2013-06-07 | 2016-11-23 | 华为技术有限公司 | 数据分区方法和装置 |
CN103661495B (zh) * | 2014-01-07 | 2015-12-30 | 北京全路通信信号研究设计院集团有限公司 | 线路数据的处理方法及装置 |
US9875263B2 (en) * | 2014-10-21 | 2018-01-23 | Microsoft Technology Licensing, Llc | Composite partition functions |
KR101951999B1 (ko) | 2016-08-31 | 2019-05-10 | 재단법인대구경북과학기술원 | 낮은 데이터 중복으로 빠른 쿼리 처리를 지원하는 관계형 데이터베이스 저장 시스템, 저장 방법 및 관계형 데이터베이스 저장 방법에 기초한 쿼리를 처리하는 방법 |
WO2018043843A1 (ko) * | 2016-08-31 | 2018-03-08 | 재단법인대구경북과학기술원 | 낮은 데이터 중복으로 빠른 쿼리 처리를 지원하는 관계형 데이터베이스 저장 시스템, 저장 방법 및 관계형 데이터베이스 저장 방법에 기초한 쿼리를 처리하는 방법 |
CN106777230B (zh) * | 2016-12-26 | 2020-01-07 | 东软集团股份有限公司 | 一种分区系统、分区方法及装置 |
CN107515899B (zh) * | 2017-07-24 | 2020-05-22 | 北京中电普华信息技术有限公司 | 数据库联合分片方法、装置以及存储介质 |
CN108287868B (zh) * | 2017-12-19 | 2019-02-26 | 北京国电通网络技术有限公司 | 一种数据库查询、数据块划分方法和装置 |
CN111198872B (zh) * | 2020-01-06 | 2021-06-11 | 中科驭数(北京)科技有限公司 | 数据库处理事务的方法及装置 |
US11016969B1 (en) | 2020-11-25 | 2021-05-25 | Coupang Corp. | Systems and methods for managing a highly available distributed hybrid transactional and analytical database |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101145158A (zh) * | 2007-06-06 | 2008-03-19 | 中兴通讯股份有限公司 | 一种数据库表分区的方法 |
CN101876983A (zh) * | 2009-04-30 | 2010-11-03 | 国际商业机器公司 | 数据库分区方法与系统 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3183736B2 (ja) * | 1992-12-28 | 2001-07-09 | 富士通株式会社 | データベース論理データ構造の動的変更方式 |
CA2150745C (en) * | 1995-06-01 | 2001-05-01 | Chaitanya K. Baru | Method and apparatus for implementing partial declustering in a parallel database system |
CA2159269C (en) * | 1995-09-27 | 2000-11-21 | Chaitanya K. Baru | Method and apparatus for achieving uniform data distribution in a parallel database system |
US7010521B2 (en) * | 2002-05-13 | 2006-03-07 | Netezza Corporation | Optimized database appliance |
US7043621B2 (en) * | 2003-05-16 | 2006-05-09 | Hewlett-Packard Development Company, L.P. | Sharding method and apparatus using directed graphs |
ATE376167T1 (de) * | 2003-08-05 | 2007-11-15 | Harman Becker Automotive Sys | Verfahren zum verarbeiten von digitalen kartendaten |
US7814080B1 (en) * | 2003-10-27 | 2010-10-12 | Teradata Us, Inc. | Grouping database queries and/or transactions |
US7574424B2 (en) * | 2004-10-13 | 2009-08-11 | Sybase, Inc. | Database system with methodology for parallel schedule generation in a query optimizer |
TW200636511A (en) * | 2005-02-15 | 2006-10-16 | Infomato | Crosslink data structure, crosslink database, and system and method of organizing and retrieving information |
US8005836B2 (en) * | 2006-01-13 | 2011-08-23 | Teradata Us, Inc. | Method and system for performing logical partial declustering |
KR100678123B1 (ko) * | 2006-02-10 | 2007-02-02 | 삼성전자주식회사 | 관계형 데이터베이스에서의 xml 데이터 저장 방법 |
US7792822B2 (en) * | 2007-03-02 | 2010-09-07 | Microsoft Corporation | Systems and methods for modeling partitioned tables as logical indexes |
US8150850B2 (en) * | 2008-01-07 | 2012-04-03 | Akiban Technologies, Inc. | Multiple dimensioned database architecture |
US8849749B2 (en) * | 2010-05-14 | 2014-09-30 | Oracle International Corporation | Load balancing in parallel database systems using multi-reordering |
US9740762B2 (en) * | 2011-04-01 | 2017-08-22 | Mongodb, Inc. | System and method for optimizing data migration in a partitioned database |
CN102799628B (zh) * | 2012-06-21 | 2015-10-07 | 新浪网技术(中国)有限公司 | 在key-value数据库中进行数据分区的方法和装置 |
CN103336792B (zh) * | 2013-06-07 | 2016-11-23 | 华为技术有限公司 | 数据分区方法和装置 |
-
2013
- 2013-06-07 CN CN201310226045.6A patent/CN103336792B/zh active Active
-
2014
- 2014-01-22 JP JP2016517131A patent/JP6112440B2/ja active Active
- 2014-01-22 KR KR1020147016634A patent/KR101653776B1/ko active IP Right Grant
- 2014-01-22 EP EP14807689.6A patent/EP2998883B1/en active Active
- 2014-01-22 WO PCT/CN2014/071039 patent/WO2014194679A1/zh active Application Filing
- 2014-06-06 TW TW103119684A patent/TWI503679B/zh active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101145158A (zh) * | 2007-06-06 | 2008-03-19 | 中兴通讯股份有限公司 | 一种数据库表分区的方法 |
CN101876983A (zh) * | 2009-04-30 | 2010-11-03 | 国际商业机器公司 | 数据库分区方法与系统 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11838356B2 (en) * | 2016-06-03 | 2023-12-05 | Google Llc | Weighted auto-sharing |
Also Published As
Publication number | Publication date |
---|---|
EP2998883A1 (en) | 2016-03-23 |
KR20150010694A (ko) | 2015-01-28 |
TWI503679B (zh) | 2015-10-11 |
CN103336792A (zh) | 2013-10-02 |
EP2998883B1 (en) | 2018-09-12 |
WO2014194679A1 (zh) | 2014-12-11 |
EP2998883A4 (en) | 2016-06-29 |
JP2016520938A (ja) | 2016-07-14 |
KR101653776B1 (ko) | 2016-09-02 |
TW201510754A (zh) | 2015-03-16 |
JP6112440B2 (ja) | 2017-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103336792B (zh) | 数据分区方法和装置 | |
CN105550225B (zh) | 索引构建方法、查询方法及装置 | |
CN111324606B (zh) | 数据分片的方法及装置 | |
CN107168977B (zh) | 一种数据查询的优化方法及装置 | |
CN102567312A (zh) | 一种基于分布式并行计算框架的机器翻译方法 | |
US20100318674A1 (en) | System and method for processing large amounts of transactional data | |
CN108595268A (zh) | 一种基于MapReduce的数据分配方法、装置及计算机可读存储介质 | |
US20160055192A1 (en) | Dynamic range partitioning | |
CN106161525A (zh) | 一种多集群管理方法与设备 | |
CN112817856B (zh) | Ab实验集成方法及系统 | |
CN113821332A (zh) | 自动机器学习系统效能调优方法、装置、设备及介质 | |
Arana‐Jiménez | Nondominated solutions in a fully fuzzy linear programming problem | |
CN110457313A (zh) | 一种应用配置管理方法、服务器及存储介质 | |
CN107391039B (zh) | 一种数据对象存储方法和装置 | |
CN103365923A (zh) | 用于评估数据库的分区方案的方法和装置 | |
CN107153683A (zh) | 实现数据查询的方法和装置 | |
CN117076563A (zh) | 一种应用于区块链的剪枝方法和装置 | |
CN105512268B (zh) | 一种数据查询方法及装置 | |
US20180096010A1 (en) | Flexible in-memory column store placement | |
Belussi et al. | Cost estimation of spatial join in spatialhadoop | |
CN110059107A (zh) | 计划优化方法、装置、系统及计算机可读存储介质 | |
CN107451229B (zh) | 一种数据库查询方法和装置 | |
CN113626415B (zh) | 一种信用数据输出方法、设备及介质 | |
Houndji et al. | The item dependent stockingcost constraint | |
CN110196854A (zh) | 数据处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |