分布式关系数据库的数据处理方法和装置与流程

文档序号:11063586阅读:243来源:国知局
分布式关系数据库的数据处理方法和装置与制造工艺
本发明涉及数据库
技术领域
,具体而言,涉及一种分布式关系数据库的数据处理方法和一种分布式关系数据库的数据处理装置。
背景技术
:企业级数据库系统为了存储海量的数据,都会使用分布式的数据库和数据仓库来存储数据,这些数据按照指定的方式拆分之后存储在数据库系统的各个节点上。比较常见的就是以article表中指定字段的键值将记录映射到某个节点,或是以ID范围的方式将记录映射到某个节点。这样进行映射的好处,就是基本上可以将数据尽可能均匀的分布到系统内的各个节点上,使得系统内各个节点可以并行地完成某些操作,并行地完成整个SQL(StructuredQueryLanguage,结构化查询语言,即数据库中查询算法的一种编码语言)的执行。其中,在复杂SQL语句的处理过程中,不论是分布式的数据库中还是分布式的数据仓库中,表之间的连接操作占据了大量的CPU时间。具体地,为了提高数据库的扩展性能,通常都会将数据量比较大的表进行水平的切分,然后分布到不同的子节点上。一般来说,数据切分的方法都是根据业务场景来确定的,因此符合业务场景的SQL语句中存在连接时,一般都可以直接将连接操作下推到各个子节点,因为往往切分的字段基本上都是数据切分的字段(即分布键)。但是,企业的业务发生变更或是业务复杂之后,往往没有一个理想的办法来处理这些参与连接、数据量比较大的表的切分。目前来说,如果数据的切分字段不是SQL语句中进行连接的字段,那么就需要进行数据的迁移。目前已知的数据迁移算法中,都需要主节点集中计算数据的统计信息之后,进行数据的重分布,这种做法至少存在两个问题:其一,统计数据分布以及制定数据重分布的计划一般都比较耗时,在一个节点上进行,会将这个处理过程串行化,导致主节点的处理效率低下;其二,现有的数据迁移算法一般都追求将每个表的数据重新均分到各个节点,这样会造成数据重分布的代价过大。技术实现要素:本发明旨在至少解决现有技术或相关技术中存在的技术问题之一。为此,本发明的一个目的在于提出了一种分布式关系数据库的数据处理方法。本发明的另一个目的在于提出了一种分布式关系数据库的数据处理装置。为实现上述目的,根据本发明的第一方面的实施例,提出了一种分布式关系数据库的数据处理方法,包括:在检测到第一表的数据量小于第二表的数据量时,确定第一表为待重分布的表;确定第一属性字段在第一表上的分布信息,根据预设映射关系将分布信息发送至对应的子节点,以制定任两个子节点之间的数据重分布计划;根据数据重分布计划控制任两个子节点之间并行地对第一属性字段所属的分片数据重新分发。根据本发明的实施例的分布式关系数据库的数据处理方法,通过在检测到第一表的数据量小于第二表的数据量时,确定第一表为待重分布的表,以降低数据库的物理负载,并且通过确定第一属性字段在第一表上的分布信息,即并行地对第一属性字段进行统计,继续根据预设映射关系将分布信息发送至对应的子节点,以制定任两个子节点之间的数据重分布计划,全部子节点的数据重分布计划也是并行制定的,进而根据数据重分布计划控制任两个子节点之间并行地对第一属性字段所属的分片数据重新分发,也即通过子节点之间的多次并行操作处理(如统计、制定数据重发布计划和重新分发等操作),最大化重分布处理过程的操作步骤的并行度,另外,降低了对源数据的重分布的均匀性的要求。另外,上述数据处理方法尤其适用于异构的分布式关系数据库,SQL语言作为处理异构的分布式关系数据库的源数据的一种主要语言,通过提高重分布处理过程的并行度,提高了后续SQL语言的操作(如查询操作和连接操作等)的进度,作为一种企业级数据库的水平扩展方案,不需要昂贵的小型机作为硬件支撑,极大地降低了扩展成本。根据本发明的上述实施例的分布式关系数据库的数据处理方法,还可以具有以下技术特征:优选地,确定第一属性字段在第一表上的分布信息,根据预设映射关系将分布信息发送至对应的子节点,以制定任两个子节点之间的数据重分布计划,具体包括以下步骤:在第一属性字段在第一表上的分布信息为直方图时,对第一属性字段的直方图的任一元素的键值进行加1运算,并将运算结果确定为待接收直方图的元素的子节点的标识信息;根据标识信息将第一属性字段对应的直方图的元素发送至对应的子节点,以制定任两个子节点之间的数据重分布计划。根据本发明的实施例的分布式关系数据库的数据处理方法,其中,第一属性字段和子节点的映射算法并不限于对第一属性字段的直方图的任一元素的键值进行加1运算。优选地,根据标识信息将第一属性字段对应的直方图的元素发送至对应的子节点,以制定任两个子节点之间的数据重分布计划,具体包括以下步骤:在根据标识信息将第一属性字段对应的直方图的元素发送至对应的子节点后,确定全部子节点的个数,并记作N;在检测到第一属性字段的直方图的任一元素的键值出现的个数大于或等于N时,确定不存在第一属性字段的子节点为第一类子节点,将包括第一属性字段的分片数据发送至第一类子节点,并记作普通数据;在检测到第一属性字段的直方图的任一元素的键值出现的个数小于N时,确定不存在第一属性字段的子节点为第二类子节点,将包括第一属性字段的分片数据发送至第二类子节点,并记作特殊数据,以及生成相应的属性标识。根据本发明的实施例的分布式关系数据库的数据处理方法,通过在根据标识信息将第一属性字段对应的直方图的元素发送至对应的子节点后,确定全部子节点的个数,并记作N,在检测到第一属性字段的直方图的任一元素的键值出现的个数大于或等于N时,确定不存在第一属性字段的子节点为第一类子节点,将包括第一属性字段的分片数据发送至第一类子节点,并记作普通数据,在检测到第一属性字段的直方图的任一元素的键值出现的个数小于N时,确定不存在第一属性字段的子节点为第二类子节点,将包括第一属性字段的分片数据发送至第二类子节点,并记作特殊数据,以及生成相应的属性标识,以保证后续SQL操作的逻辑正确性。优选地,根据数据重分布计划控制任两个子节点之间并行地对第一属性字段所属的分片数据重新分发,具体包括以下步骤:在全部子节点获取数据重分布计划后,创建第一表对应的待填充的第一临时表;采用查询算法将普通数据发送至对应的第一类子节点,并在第一类子节点将普通数据填充至第一临时表;以及采用查询算法将特殊数据发发送至对应的第二类子节点,并在第二类子节点将特殊数据填充至第一临时表后,保留特殊数据的属性标识;对第一临时表和第二表执行半连接操作,以确定第二表上参与原有连接操作的连接记录,并将连接记录发送至全部子节点;创建第二表模式相同的第二临时表,全部子节点根据连接记录将第二表上参与原有连接操作的分片数据填充至第二临时表。根据本发明的实施例的分布式关系数据库的数据处理方法,通过在全部子节点获取数据重分布计划后,创建第一表对应的待填充的第一临时表,采用查询算法将普通数据发送至对应的第一类子节点,并在第一类子节点将普通数据填充至第一临时表,以及采用查询算法将特殊数据发送至对应的第二类子节点,并在第二类子节点将特殊数据填充至第一临时表后,保留特殊数据的属性标识,对第一临时表和第二表执行半连接操作,以确定第二表上参与原有连接操作的连接记录,并将连接记录发送至全部子节点,创建第二表模式相同的第二临时表,全部子节点根据连接记录将第二表上参与原有连接操作的分片数据填充至第二临时表,进而在最大程序地提高了执行数据重分布计划的同时,保证了后续SQL操作的逻辑正确性。优选地,根据本发明的上述实施例的分布式关系数据库的数据处理方法还包括:根据属性标识删除第一临时表中的特殊数据,并对第一临时表的分片数据与第二临时表的分片数据执行原有连接操作;在完成对第一临时表的分片数据与第二临时表的分片数据之间的原有连接操作后,将执行原有连接操作的结果反馈至主节点。根据本发明的实施例的分布式关系数据库的数据处理方法,通过根据属性标识删除第一临时表中的特殊数据,并对第一临时表的分片数据与第二临时表的分片数据执行原有连接操作,并且在完成对第一临时表的分片数据与第二临时表的分片数据之间的原有连接操作后,将执行原有连接操作的结果反馈至主节点,提高了数据库中的数据处理效率。根据本发明的第二方面的实施例,提出了一种分布式关系数据库的数据处理装置,包括:判断单元,用于在检测到第一表的数据量小于第二表的数据量时,确定第一表为待重分布的表;确定单元,用于确定第一属性字段在第一表上的分布信息,根据预设映射关系将分布信息发送至对应的子节点,以制定任两个子节点之间的数据重分布计划;发送单元,用于根据数据重分布计划控制任两个子节点之间并行地对第一属性字段所属的分片数据进行重新分发。根据本发明的实施例的分布式关系数据库的数据处理装置,通过在检测到第一表的数据量小于第二表的数据量时,确定第一表为待重分布的表,以降低数据库的物理负载,并且通过确定第一属性字段在第一表上的分布信息,即并行地对第一属性字段进行统计,继续根据预设映射关系将分布信息发送至对应的子节点,以制定任两个子节点之间的数据重分布计划,全部子节点的数据重分布计划也是并行制定的,进而根据数据重分布计划控制任两个子节点之间并行地对第一属性字段所属的分片数据重新分发,也即通过子节点之间的多次并行操作处理(如统计、制定数据重发布计划和重新分发等操作),最大化重分布处理过程的操作步骤的并行度,另外,降低了对源数据的重分布的均匀性的要求。另外,上述数据处理装置尤其适用于异构的分布式关系数据库,SQL语言作为处理异构的分布式关系数据库的源数据的一种主要语言,通过提高重分布处理过程的并行度,提高了后续SQL语言的操作(如查询操作和连接操作等)的进度,作为一种企业级数据库的水平扩展方案,不需要昂贵的小型机作为硬件支撑,极大地降低了扩展成本。根据本发明的上述实施例的分布式关系数据库的数据处理装置,还可以具有以下技术特征:优选地,确定单元包括:运算子单元,用于在第一属性字段在第一表上的分布信息为直方图时,对第一属性字段的直方图的任一元素的键值进行加1运算,并将运算结果确定为待接收直方图的元素的子节点的标识信息;制定子单元,用于根据标识信息将第一属性字段对应的直方图的元素发送至对应的子节点,以制定任两个子节点之间的数据重分布计划。根据本发明的实施例的分布式关系数据库的数据处理装置,其中,第一属性字段和子节点的映射算法并不限于对第一属性字段的直方图的任一元素的键值进行加1运算。优选地,确定单元还包括:统计子单元,用于在根据标识信息将第一属性字段对应的直方图的元素发送至对应的子节点后,确定全部子节点的个数,并记作N;第一预设子单元,用于在检测到第一属性字段的直方图的任一元素的键值出现的个数大于或等于N时,确定不存在第一属性字段的子节点为第一类子节点,将包括第一属性字段的分片数据发送至第一类子节点,并记作普通数据;第二预设子单元,用于在检测到第一属性字段的直方图的任一元素的键值出现的个数小于N时,确定不存在第一属性字段的子节点为第二类子节点,将包括第一属性字段的分片数据发送至第二类子节点,并记作特殊数据,以及生成相应的属性标识。根据本发明的实施例的分布式关系数据库的数据处理装置,通过在根据标识信息将第一属性字段对应的直方图的元素发送至对应的子节点后,确定全部子节点的个数,并记作N,在检测到第一属性字段的直方图的任一元素的键值出现的个数大于或等于N时,确定不存在第一属性字段的子节点为第一类子节点,将包括第一属性字段的分片数据发送至第一类子节点,并记作普通数据,在检测到第一属性字段的直方图的任一元素的键值出现的个数小于N时,确定不存在第一属性字段的子节点为第二类子节点,将包括第一属性字段的分片数据发送至第二类子节点,并记作特殊数据,以及生成相应的属性标识,以保证后续SQL操作的逻辑正确性。优选地,确定单元还包括:第一创建子单元,用于在全部子节点获取数据重分布计划后,创建第一表对应的待填充的第一临时表;第一查询子单元,用于采用查询算法将普通数据发送至对应的第一类子节点,并在第一类子节点将普通数据填充至第一临时表;第二查询子单元,用于以及采用查询算法将特殊数据发送至对应的第二类子节点,并在第二类子节点将特殊数据填充至第一临时表后,保留特殊数据的属性标识;半连接子单元,用于对第一临时表和第二表执行半连接操作,以确定第二表上参与原有连接操作的连接记录,并将连接记录发送至全部子节点;第二创建子单元,用于创建第二表模式相同的第二临时表,全部子节点根据连接记录将第二表上参与原有连接操作的分片数据填充至第二临时表。根据本发明的实施例的分布式关系数据库的数据处理装置,通过在全部子节点获取数据重分布计划后,创建第一表对应的待填充的第一临时表,采用查询算法将普通数据发送至对应的第一类子节点,并在第一类子节点将普通数据填充至第一临时表,以及采用查询算法将特殊数据发送至对应的第二类子节点,并在第二类子节点将特殊数据填充至第一临时表后,保留特殊数据的属性标识,对第一临时表和第二表执行半连接操作,以确定第二表上参与原有连接操作的连接记录,并将连接记录发送至全部子节点,创建第二表模式相同的第二临时表,全部子节点根据连接记录将第二表上参与原有连接操作的分片数据填充至第二临时表,进而在最大程序地提高了执行数据重分布计划的同时,保证了后续SQL操作的逻辑正确性。优选地,根据本发明的实施例的分布式关系数据库的数据处理装置还包括:连接单元,用于根据属性标识删除第一临时表中的特殊数据,并对第一临时表的分片数据与第二临时表的分片数据执行原有连接操作;反馈单元,用于在完成对第一临时表的分片数据与第二临时表的分片数据之间的原有连接操作后,将执行原有连接操作的结果反馈至主节点。根据本发明的实施例的分布式关系数据库的数据处理装置,通过根据属性标识删除第一临时表中的特殊数据,并对第一临时表的分片数据与第二临时表的分片数据执行原有连接操作,并且在完成对第一临时表的分片数据与第二临时表的分片数据之间的原有连接操作后,将执行原有连接操作的结果反馈至主节点,提高了数据库中的数据处理效率。根据本发明的实施例的分布式关系数据库的数据处理方案,通过在检测到第一表的数据量小于第二表的数据量时,确定第一表为待重分布的表,以降低数据库的物理负载,并且通过确定第一属性字段在第一表上的分布信息,即并行地对第一属性字段进行统计,继续根据预设映射关系将分布信息发送至对应的子节点,以制定任两个子节点之间的数据重分布计划,全部子节点的数据重分布计划也是并行制定的,进而根据数据重分布计划控制任两个子节点之间并行地对第一属性字段所属的分片数据重新分发,也即通过子节点之间的多次并行操作处理(如统计、制定数据重发布计划和重新分发等操作),最大化重分布处理过程的操作步骤的并行度,另外,降低了对源数据的重分布的均匀性的要求。本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。附图说明本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:图1示出了根据本发明的分布式关系数据库的数据处理方法的实施例一的示意流程图;图2示出了根据本发明的分布式关系数据库的数据处理方法的实施例二的示意流程图;图3示出了根据本发明的实施例的分布式关系数据库的数据处理装置的示意框图。具体实施方式为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。下面结合图1和图2对根据本发明的实施例的分布式关系数据库的数据处理方法进行具体说明。实施例一:分布式关系数据库中的源数据经过分布键的水平切分操作后分布于第一表的分片数据和第二表的分片数据中,第一表和第二表的连接字段分别为源数据中的第一属性字段和第二属性字段,并且第一属性字段和第二属性字段均不是分布键,分布式关系数据库包括一个主节点和多个子节点,其中,预设第一表和第二表的连接操作并作为原有连接操作。图1示出了根据本发明的分布式关系数据库的数据处理方法的实施例一的示意流程图。如图1所示,根据本发明的实施例的分布式关系数据库的数据处理方法包括:步骤102,在检测到第一表的数据量小于第二表的数据量时,确定第一表为待重分布的表;步骤104,确定第一属性字段在第一表上的分布信息,根据预设映射关系将分布信息发送至对应的子节点,以制定任两个子节点之间的数据重分布计划;步骤106,根据数据重分布计划控制任两个子节点之间并行地对第一属性字段所属的分片数据重新分发。根据本发明的实施例的分布式关系数据库的数据处理方法,通过在检测到第一表的数据量小于第二表的数据量时,确定第一表为待重分布的表,以降低数据库的物理负载,并且通过确定第一属性字段在第一表上的分布信息,即并行地对第一属性字段进行统计,继续根据预设映射关系将分布信息发送至对应的子节点,以制定任两个子节点之间的数据重分布计划,全部子节点的数据重分布计划也是并行制定的,进而根据数据重分布计划控制任两个子节点之间并行地对第一属性字段所属的分片数据重新分发,也即通过子节点之间的多次并行操作处理(如统计、制定数据重发布计划和重新分发等操作),最大化重分布处理过程的操作步骤的并行度,另外,降低了对源数据的重分布的均匀性的要求。另外,上述数据处理方法尤其适用于异构的分布式关系数据库,SQL语言作为处理异构的分布式关系数据库的源数据的一种主要语言,通过提高重分布处理过程的并行度,提高了后续SQL语言的操作(如查询操作和连接操作等)的进度,作为一种企业级数据库的水平扩展方案,不需要昂贵的小型机作为硬件支撑,极大地降低了扩展成本。根据本发明的上述实施例的分布式关系数据库的数据处理方法,还可以具有以下技术特征:优选地,确定第一属性字段在第一表上的分布信息,根据预设映射关系将分布信息发送至对应的子节点,以制定任两个子节点之间的数据重分布计划,具体包括以下步骤:在第一属性字段在第一表上的分布信息为直方图时,对第一属性字段的直方图的任一元素的键值进行加1运算,并将运算结果确定为待接收直方图的子节点的标识信息;根据标识信息将第一属性字段对应的直方图的元素发送至对应的子节点,以制定任两个子节点之间的数据重分布计划。根据本发明的实施例的分布式关系数据库的数据处理方法,其中,第一属性字段和子节点的映射算法并不限于对第一属性字段的直方图的任一元素的键值进行加1运算。优选地,根据标识信息将第一属性字段对应的直方图的元素发送至对应的子节点,以制定任两个子节点之间的数据重分布计划,具体包括以下步骤:在根据标识信息将第一属性字段对应的直方图的元素发送至对应的子节点后,确定全部子节点的个数,并记作N;在检测到第一属性字段的直方图的任一元素的键值出现的个数大于或等于N时,确定不存在第一属性字段的子节点为第一类子节点,将包括第一属性字段的分片数据发送至第一类子节点,并记作普通数据;在检测到第一属性字段的直方图的任一元素的键值出现的个数小于N时,确定不存在第一属性字段的子节点为第二类子节点,将包括第一属性字段的分片数据发送至第二类子节点,并记作特殊数据,以及生成相应的属性标识。根据本发明的实施例的分布式关系数据库的数据处理方法,通过在根据标识信息将第一属性字段对应的直方图的元素发送至对应的子节点后,确定全部子节点的个数,并记作N,在检测到第一属性字段的直方图的任一元素的键值出现的个数大于或等于N时,确定不存在第一属性字段的子节点为第一类子节点,将包括第一属性字段的分片数据发送至第一类子节点,并记作普通数据,在检测到第一属性字段的直方图的任一元素的键值出现的个数小于N时,确定不存在第一属性字段的子节点为第二类子节点,将包括第一属性字段的分片数据发送至第二类子节点,并记作特殊数据,以及生成相应的属性标识,以保证后续SQL操作的逻辑正确性。优选地,根据数据重分布计划控制任两个子节点之间并行地对第一属性字段所属的分片数据重新分发,具体包括以下步骤:在全部子节点获取数据重分布计划后,创建第一表对应的待填充的第一临时表;采用查询算法将普通数据发送至对应的第一类子节点,并在第一类子节点将普通数据填充至第一临时表;以及采用查询算法将特殊数据发送至对应的第二类子节点,保留特殊数据的属性标识;对第一临时表和第二表执行半连接操作,以确定第二表上参与原有连接操作的连接记录,并将连接记录发送至全部子节点;创建第二表模式相同的第二临时表,全部子节点根据连接记录将第二表上参与原有连接操作的分片数据填充至第二临时表。根据本发明的实施例的分布式关系数据库的数据处理方法,通过在全部子节点获取数据重分布计划后,创建第一表对应的待填充的第一临时表,采用查询算法(例如SQL语句)将普通数据发送至对应的第一类子节点,并在第一类子节点将普通数据填充至第一临时表,以及采用查询算法将特殊数据发送至对应的第二类子节点,并在第二类子节点将特殊数据填充至第一临时表后,保留特殊数据的属性标识,对第一临时表和第二表执行半连接操作,以确定第二表上参与原有连接操作的连接记录,并将连接记录发送至全部子节点,创建第二表模式相同的第二临时表,全部子节点根据连接记录将第二表上参与原有连接操作的分片数据填充至第二临时表,进而在最大程序地提高了执行数据重分布计划的同时,保证了后续SQL操作的逻辑正确性。优选地,根据本发明的上述实施例的分布式关系数据库的数据处理方法还包括:根据属性标识删除第一临时表中的特殊数据,并对第一临时表的分片数据与第二临时表的分片数据执行原有连接操作;在完成对第一临时表的分片数据与第二临时表的分片数据之间的原有连接操作后,将执行原有连接操作的结果反馈至主节点。根据本发明的实施例的分布式关系数据库的数据处理方法,通过根据属性标识删除第一临时表中的特殊数据,并对第一临时表的分片数据与第二临时表的分片数据执行原有连接操作,在完成对第一临时表的分片数据与第二临时表的分片数据之间的原有连接操作后,将执行原有连接操作的结果反馈至主节点,提高了数据库中的数据处理效率。实施例二:图2示出了根据本发明的分布式关系数据库的数据处理方法的实施例二的示意流程图。如图2所示,根据本发明的实施例的分布式关系数据库的数据处理方法包括:步骤202,主节点定义参加连接的两个表分别为S表和R表,确定需要重分布的表(例如R表);步骤204,各个子节点获得R表上x字段的直方图,并将直方图的元素分发;步骤206,各子节点接收到直方图的元素之后确定数据重分布计划并进行分发;步骤208,各子节点收到数据重分布计划之后获得第一临时表R1,并执行数据重分布计划;步骤210,各子节点执行半连接操作并获得S表上各分片数据参与原有连接操作的连接记录,向全部子节点广播该连接记录;步骤212,各子节点根据连接记录将收到的参与原有连接操作的分片数据插入第二临时表S1;步骤214,各子节点将第一临时表R1上特殊数据删除,在第一临时表R1和第二临时表S1上执行原有连接操作,将上述原有连接操作的结果返回主节点。其中,R表即为本申请中的第一表,S表即为本申请的第二表,第二临时表R1即为第一表对应的待填充的第一临时表,第二临时表S1即为与第二表模式(schema)的第二临时表。具体地,假设当前需要处理得是R表和S表做连接,连接的字段分别是R.x(R表中的x字段)和S.a(S表中的a字段),数据库系统中有一个主节点和N个子节点,其中,N为大于或等于2的正整数,主节点上存有源数据以及节点信息,源数据经过分布键的水平切分操作后分布于R表和S表中,N个子节点存有源数据的分片数据,但是水平切分数据的字段不是R.x和S.a,预设的R表和S表之间的连接操作记为原有连接操作,那么处理的流程分为以下几个步骤:步骤S1,主节点从各个子节点上收集表的大小,确定数据量比较小的表为需要重分布的表。在这里我们假设是R表的数据量比较小,我们确定R表需要重分布。步骤S2,各个子节点在本地收集R表上x字段的分布信息,计算x的直方图,例如可以使用“SQL:selctcount(*),xfromRgroupbyx”获取上述直方图。举例说明,x字段的直方图的可以如下表1所示:表1键值键值出现的个数243643其中,直方图的一个元素包括直方图中的任一键值以及该键值出现的个数。在获得直方图后,通过预设映射关系将直方图的元素发送给某个对应的子节点,例如预设映射关系可以为:对x的直方图的任一元素的键值进行加1运算,并将运算结果确定为待接收该直方图的元素的子节点的标识信息,从而可根据标识信息将该直方图的元素发送至对应的子节点。举例说,将直方图中“x=2”对应的元素进行键值加1运算,即可得到的运算结果“3”,以作为待接收该直方图的元素的子节点的标识信息。假设运算结果“3”为第三个节点的标识信息,则将“x=2”的元素发送至第三个节点。步骤S3,各个子节点在收到了关于x的直方图的元素后,例如第三个节点收到了“x=2”的元素,需要处理三种情况:A)如果发现数据库系统内键值“x=2”出现的个数大于N,并且发现第一子节点和第三子节点上都没有“x=2”的分片数据,而在第二节点上有3个,因此制定出对于“x=2”的数据重分布计划:第二子节点向第一子节点和第三子节点各迁移一条“x=2”的分片数据,这个数据重分布计划会发给第二子节点,迁移的分片数据是普通数据,并且将该数据重分布计划发送到对应的子节点上;B)但是如果发现在各个子节点上都有“x=2”的分片数据,那么不迁移“x=2”的分片数据;C)如果“x=2”的出现的个数小于N,则制定出对于“x=2”的数据重分布计划:向缺少“x=2”分片数据的子节点发送一条分片数据,这个分片数据是特殊数据,需用一个特殊字段(即属性标识)来表示其特殊性,并且将该数据重分布计划发送到对应的子节点上。步骤S4,各个子节点收到数据重分布计划后,先使用“selectinto”语句复制R表,得到一个第一临时表R1,然后执行收到的数据重分布计划。其中,对于收到的数据重分布计划,如果是普通数据,一般可以用“select”语句查出满足过滤条件的分片数据之后用“delete”语句删除掉,如果是特殊数据则只执行前面的“select”查询操作,不执行“delete”删除操作。对于子节点收到的分片数据,如果是普通数据则直接插入第一临时表R1中,如果是特殊数据,则插入第一临时表R1中并保留特殊数据的属性标识。步骤S5,在各个子节点完成数据重分布计划,等待接收到了所有迁移来的数据后,然后使用“SQL:selectS.*fromR1,Swherea=x”执行第一临时表R1和S表的半连接,过滤出S表的各个分片数据参与原有连接操作的连接记录,然后将这些连接记录广播给所有其他的子节点。步骤S6,各个子节点创建一个和S表模式(schema)相同的第二临时表S1,根据连接记录将收到的S表的分片数据插入第二临时表S1中。步骤S7,各个子节点上都删除第一临时表R1中的特殊数据,然后在第一临时表R1和第二临时表S1上执行原有连接操作,并将上述原有连接操作的结果发送给主节点。实施例三:图3示出了根据本发明的实施例的分布式关系数据库的数据处理装置的示意框图。分布式关系数据库中的源数据经过分布键的水平切分操作后分布于第一表的分片数据和第二表的分片数据中,第一表和第二表的连接字段分别为源数据中的第一属性字段和第二属性字段,并且第一属性字段和第二属性字段均不是分布键,分布式关系数据库包括一个主节点和多个子节点,其中,预设第一表和第二表的连接操作并作为原有连接操作。如图3所示,根据本发明的实施例的分布式关系数据库的数据处理装置300,包括:判断单元302,用于在检测到第一表的数据量小于第二表的数据量时,确定第一表为待重分布的表;确定单元304,用于确定第一属性字段在第一表上的分布信息,根据预设映射关系将分布信息发送至对应的子节点,以制定任两个子节点之间的数据重分布计划;发送单元306,用于根据数据重分布计划控制任两个子节点之间并行地对第一属性字段所属的分片数据进行重新分发。根据本发明的实施例的分布式关系数据库的数据处理装置300,通过在检测到第一表的数据量小于第二表的数据量时,确定第一表为待重分布的表,以降低数据库的物理负载,并且通过确定第一属性字段在第一表上的分布信息,即并行地对第一属性字段进行统计,继续根据预设映射关系将分布信息发送至对应的子节点,以制定任两个子节点之间的数据重分布计划,全部子节点的数据重分布计划也是并行制定的,进而根据数据重分布计划控制任两个子节点之间并行地对第一属性字段所属的分片数据重新分发,也即通过子节点之间的多次并行操作处理(如统计、制定数据重发布计划和重新分发等操作),最大化重分布处理过程的操作步骤的并行度,另外,降低了对源数据的重分布的均匀性的要求。另外,上述数据处理装置300尤其适用于异构的分布式关系数据库,SQL语言作为处理异构的分布式关系数据库的源数据的一种主要语言,通过提高重分布处理过程的并行度,提高了后续SQL语言的操作(如查询操作和连接操作等)的进度,作为一种企业级数据库的水平扩展方案,不需要昂贵的小型机作为硬件支撑,极大地降低了扩展成本。根据本发明的上述实施例的分布式关系数据库的数据处理装置300,还可以具有以下技术特征:优选地,确定单元304包括:运算子单元3042,用于在第一属性字段在第一表上的分布信息为直方图时,对第一属性字段的直方图的任一元素的键值进行加1运算,并将运算结果确定为待接收直方图的子节点的标识信息;制定子单元3044,用于根据标识信息将第一属性字段对应的直方图的元素发送至对应的子节点,以制定任两个子节点之间的数据重分布计划。根据本发明的实施例的分布式关系数据库的数据处理装置300,其中,第一属性字段和子节点的映射算法并不限于对第一属性字段的直方图的任一元素的键值进行加1运算。优选地,确定单元304还包括:统计子单元3046,用于在根据标识信息将第一属性字段对应的直方图的元素发送至对应的子节点后,确定全部子节点的个数,并记作N;第一预设子单元3048,用于在检测到第一属性字段的直方图的任一元素的键值出现的个数大于或等于N时,确定不存在第一属性字段的子节点为第一类子节点,将包括第一属性字段的分片数据发送至第一类子节点,并记作普通数据;第二预设子单元30410,用于在检测到第一属性字段的直方图的任一元素的键值出现的个数小于N时,确定不存在第一属性字段的子节点为第二类子节点,将包括第一属性字段的分片数据发送至第二类子节点,并记作特殊数据,以及生成相应的属性标识。根据本发明的实施例的分布式关系数据库的数据处理装置300,通过在根据标识信息将第一属性字段对应的直方图的元素发送至对应的子节点后,确定全部子节点的个数,并记作N,在检测到第一属性字段的直方图的任一元素的键值出现的个数大于或等于N时,确定不存在第一属性字段的子节点为第一类子节点,将包括第一属性字段的分片数据发送至第一类子节点,并记作普通数据,在检测到第一属性字段的直方图的任一元素的键值出现的个数小于N时,确定不存在第一属性字段的子节点为第二类子节点,将包括第一属性字段的分片数据发送至第二类子节点,并记作特殊数据,以及生成相应的属性标识,以保证后续SQL操作的逻辑正确性。优选地,确定单元304还包括:第一创建子单元30412,用于在全部子节点获取数据重分布计划后,创建第一表对应的待填充的第一临时表;第一查询子单元30414,用于采用查询算法将普通数据发送至对应的第一类子节点,并在第一类子节点将普通数据填充至第一临时表;第二查询子单元30416,用于以及采用查询算法将特殊数据发送至对应的第二类子节点,并在第二类子节点将特殊数据填充至第一临时表后,保留特殊数据的属性标识;半连接子单元30418,用于对第一临时表和第二表执行半连接操作,以确定第二表上参与原有连接操作的连接记录,并将连接记录发送至全部子节点;第二创建子单元30420,用于创建第二表模式相同的第二临时表,全部子节点根据连接记录将第二表上参与原有连接操作的分片数据填充至第二临时表。根据本发明的实施例的分布式关系数据库的数据处理装置300,通过在全部子节点获取数据重分布计划后,创建第一表对应的待填充的第一临时表,采用查询算法将普通数据发送至对应的第一类子节点,并在第一类子节点将普通数据填充至第一临时表,以及采用查询算法将特殊数据发送至对应的第二类子节点,并在第二类子节点将特殊数据填充至第一临时表后,生成特殊数据的属性标识,对第一临时表和第二表执行半连接操作,以确定第二表上参与原有连接操作的连接记录,并将连接记录发送至全部子节点,创建第二表模式相同的第二临时表,全部子节点根据连接记录将第二表上参与原有连接操作的分片数据填充至第二临时表,进而在最大程序地提高了执行数据重分布计划的同时,保证了后续SQL操作的逻辑正确性。优选地,根据本发明的实施例的分布式关系数据库的数据处理装置300还包括:连接单元308,用于根据属性标识删除第一临时表中的特殊数据,并对第一临时表的分片数据与第二临时表的分片数据执行原有连接操作;反馈单元310,用于在完成对第一临时表的分片数据与第二临时表的分片数据之间的原有连接操作后,将执行原有连接操作的结果反馈至主节点。根据本发明的实施例的分布式关系数据库的数据处理装置300,通过根据属性标识删除第一临时表中的特殊数据,并对第一临时表的分片数据与第二临时表的分片数据执行原有连接操作,并且在完成对第一临时表的分片数据与第二临时表的分片数据之间的原有连接操作后,将执行原有连接操作的结果反馈至主节点,提高了数据库中的数据处理效率。本发明实施例提供的分布式关系数据库的数据处理装置适用于上述任意实施例提供的分布式关系数据库的数据处理方法,具备相应的功能和有益效果,在此不再赘述。根据本发明的实施例的分布式关系数据库的数据处理方案,通过在检测到第一表的数据量小于第二表的数据量时,确定第一表为待重分布的表,以降低数据库的物理负载,并且通过确定第一属性字段在第一表上的分布信息,即并行地对第一属性字段进行统计,继续根据预设映射关系将分布信息发送至对应的子节点,以制定任两个子节点之间的数据重分布计划,全部子节点的数据重分布计划也是并行制定的,进而根据数据重分布计划控制任两个子节点之间并行地对第一属性字段所属的分片数据重新分发,也即通过子节点之间的多次并行操作处理(如统计、制定数据重发布计划和重新分发等操作),最大化重分布处理过程的操作步骤的并行度,另外,降低了对源数据的重分布的均匀性的要求。本发明实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。本发明实施例终端中的单元可以根据实际需要进行合并、划分和删减。本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质包括只读存储器(Read-OnlyMemory,ROM)、随机存储器(RandomAccessMemory,RAM)、可编程只读存储器(ProgrammableRead-onlyMemory,PROM)、可擦除可编程只读存储器(ErasableProgrammableReadOnlyMemory,EPROM)、一次可编程只读存储器(One-timeProgrammableRead-OnlyMemory,OTPROM)、电子抹除式可复写只读存储器(Electrically-ErasableProgrammableRead-OnlyMemory,EEPROM)、只读光盘(CompactDiscRead-OnlyMemory,CD-ROM)或其他光盘存储器、磁盘存储器、磁带存储器、或者能够用于携带或存储数据的计算机可读的任何其他介质。以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1