数据分布的方法、装置及系统与流程

文档序号:11200424阅读:478来源:国知局
数据分布的方法、装置及系统与流程
本发明涉及信息技术领域,尤其涉及一种数据分布的方法、装置及系统。

背景技术:
并行数据库系统是一种将数据内容分布存储在多个数据节点上的数据存储技术,可以根据哈希(Hash)、范围(Range)、轮转(Round-bin)等算法,将一个逻辑数据表分布在各个数据节点上。并行数据库系统在各个数据节点上并行查询用户需要的数据内容,相对非并行数据库系统而言查询速度快,并且易于管理数据内容。通常,逻辑数据表中会包含多个字段,并行数据库系统以其中的一个(或多个)字段内容作为上述算法的自变量对该逻辑数据表在数据节点上进行分布存储,作为自变量的字段称为该逻辑数据表的分布列。现有技术中,并行数据库系统对多个逻辑数据表的分布表进行分布列联合(Join)查询时,如果具有查询关系的多个分布表的分布列不相同,则需要根据多个分布表共有的分布列对多个逻辑数据表重新进行分布,从而影响查询效率。

技术实现要素:
本发明的实施例提供一种数据分布的方法、装置及系统,能够节省查询时间,提高查询效率。一方面,本发明实施例提供了一种数据分布的方法,包括:在数据查询前,控制节点根据创建规则设置分布表创建指示,所述分布表创建指示中携带逻辑数据表的标识ID以及选定分布列的分布列标识,其中所述选定分布列为所述逻辑数据表中的分布列,所述逻辑数据表为所述控制节点中已创建的逻辑数据表;所述控制节点向数据节点发送所述分布表创建指示,以便所述数据节点根据所述分布表创建指示创建所述逻辑数据表的分布表。另一方面,本发明实施例还提供了一种控制节点,包括:处理单元,用于在数据查询前,根据创建规则设置分布表创建指示,所述分布表创建指示中携带逻辑数据表的标识ID以及选定分布列的分布列标识,其中所述选定分布列为所述逻辑数据表中的分布列,所述逻辑数据表为所述控制节点中已创建的逻辑数据表;发送单元,用于向数据节点发送所述处理单元设置的所述分布表创建指示,以便所述数据节点根据所述分布表创建指示创建所述逻辑数据表的分布表。最后,本发明实施例还提供了一种数据分布的系统,包括:控制节点,用于在数据查询前,根据创建规则设置分布表创建指示,所述分布表创建指示中携带逻辑数据表的标识ID以及选定分布列的分布列标识,其中所述选定分布列为所述逻辑数据表中的分布列,所述逻辑数据表为所述控制节点中已创建的逻辑数据表,向数据节点发送所述分布表创建指示;所述数据节点,用于在数据查询前,接收所述控制节点发送的所述分布表创建指示,根据所述分布表创建指示创建所述逻辑数据表的分布表。本发明实施例提供的数据分布的方法、装置及系统,能够在数据查询前,根据创建规则按照相同的分布列将多个逻辑数据表分布存储在各个数据节点上,分布存储后各个数据节点上建立的分布表用于后续的数据查询。可以避免在分布列联合查询的过程中,当具有查询关系的多个分布表的分布列不相同时,需要将多个逻辑数据表重新分布存储在各个数据节点上的问题,可以避免在分布列联合查询的过程中大量数据迁移带来的查询时延,能够提高查询效率。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为并行数据库系统的架构的示意图;图2为并行数据库系统中逻辑数据表的示意图;图3为数据节点创建分布表的示意图;图4为另一个数据节点创建分布表的示意图;图5为本发明实施例中数据分布的方法的流程图;图6为本发明实施例中另一个数据分布的方法的流程图;图7为本发明实施例中应用场景的示意图;图8为本发明实施例中控制节点的结构示意图;图9为本发明实施例中数据分布的系统示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。图1为并行数据库系统的一种架构,控制节点连接了三个数据节点,控制节点和每个数据节点都有独立的中央处理器(CentralProcessingUnit,简称CPU)、存储器(内存、硬盘)、节点与节点之间通过高速网络(例如以太网、光纤交换网)实现数据通信。其中,控制节点主要用于:1、根据逻辑数据表的字段以及预设算法将待管理数据分布存储到各个数据节点上,所述逻辑数据表为存储在控制节点中的具有数据结构属性的数据表,所述逻辑数据表为数据节点创建分布表的逻辑依据;2、为客户端提供查询接口,例如结构化查询语言(StructuredQueryLanguage,简称SQL)、Java数据库连接(JavaDataBaseConnectivity,简称JDBC)、开放数据库互连(OpenDatabaseConnectivity,ODBC)等;3、根据客户端的查询请求处理各个数据节点反馈的查询结果。数据节点主要用于:受控制节点控制根据分布列建立逻辑数据表的分布表、与其他数据节点进行数据迁移、作为独立数据库节点实现分布表的存储和查询。以存储教学数据信息为例:图2中有三个逻辑数据表,逻辑数据表A(后续简称为表A)存储学号与姓名的数据,逻辑数据表B(后续简称为表B)存储学号、课程标识以及成绩的数据,逻辑数据表C(后续简称为表C)存储课程标识与课程名称的数据。其中,逻辑数据表中的任意一列(或称为字段或属性)均可作为该逻辑数据表分布存储的分布列,例如表B中的学号、课程标识和成绩为表B的三个字段。控制节点将学号字段作为分布列,通过哈希(Hash)模3算法将表A的数据分布存储到三个数据节点上。如图3所示,学号1除3余1,则学号1以及学号1对应的姓名(即表A中的第一行数据)存储到数据节点1上,学号2除3余2,则表A中的第二行数据存储到数据节点2上,学号3除3余0,则表A中的第三行数据存储到数据节点0上,其中哈希模3算法中的除数3为并行数据库系统中数据节点的个数。同理,控制节点分别以学号字段和课程标识字段作为分布列,将表B和表C的数据分布存储到三个数据节点上。其中,控制节点将学号字段作为表B的分布列(j)通过哈希模3算法对表B进行分布,将课程标识字段作为表C的分布列(k)通过哈希模3算法对表C进行分布。逻辑数据表分布后,每个数据节点上建立的数据表称为该逻辑数据表的分布表,分布表的名称可以由逻辑数据表标识+数据节点标识+分布列标识来表示,例如数据节点1中的B+mdt1+j,表示数据节点1以学号字段(j)作为分布列创建表B的分布表。当客户端执行查询语句selectstu_name,course_idfromA,BwhereA:stu_id=B:stu_id时,该查询语句表示通过表A和表B的分布列联合查询(fromA,B),查询姓名、课程标识和成绩的数据,以及三者之间的对应关系(selectstu_name,course_id),其中表A和表B均以学号字段作为分布列分布存储在各个数据节点上(A:stu_id=B:stu_id)。查询结果为数据节点1查询到学号1对应的三个课程标识以及对应的三门成绩,数据节点2查询到学号2对应的三个课程标识以及对应的三门成绩,数据节点0查询到学号3对应的三个课程标识以及对应的三门成绩。三个数据节点分别将查询结果上报给控制节点,控制节点将接收的查询结果汇总上报给客户端,从而完成查询。当客户端执行查询语句Selectstu_id,course_namefromB,CwhereB:course_id=C:course_id时,由于表B的分布列为学号字段,而表C的分布列为课程标识字段,两表的分布列不同,所以数据节点1只能查询到学号1对应的课程标识1的课程名称,学号1对应的课程标识2和3的课程名称则无法查询,并且数据节点2和数据节点0上也无法查询学号1对应的课程标识2和3的课程名称,类似的,数据节点2和数据节点0也存在相同的问题。此时控制节点需要以课程标识字段作为分布列对表B重新进行分布(由于表C没有学号字段,为使表B和表C按照相同的分布列进行分布,需要以课程标识字段作为分布列对表B按照哈希模3算法重新进行分布,重新创建表B的分布表)。三个数据节点上为表B重新创建的分布表如图4所示,其中分布表名称中的k为代表课程标识字段作为分布列的分布列标识。在重新创建完成表B的分布表后,控制节点控制三个数据节点进行数据迁移,以便数据节点从其他数据节点处获取自身重建的分布表中新增表项所对应的数据。例如,在数据节点1中的分布表B+mdt1+k中,新增了学号2和学号3分别对应的课程1及课程1成绩两行表项,而数据节点1在创建分布表B+mdt1+j时不涉及这两行表项,所以数据节点1在创建分布表B+mdt1+j时未获取这两行表项的数据。数据节点1从数据节点2处获取学号2对应的课程1及课程1成绩的数据(即B+mdt2+j中第一行表项对应的数据),从数据节点0处获取学号3对应的课程1及课程1成绩的数据(即B+mdt0+j中第一行表项对应的数据)。数据节点2和数据节点0重建表B的分布表后,同样按照自身表项特征执行相应步骤,此处不进行一一赘述。数据节点获取到重建表B分布表需要的数据后,将该数据添加到重建的表B分布表中对应的表项里,从而完成重建表B的分布表。此时,控制节点就可以控制数据节点根据表C的分布表以及重建后表B的分布表查询到每个学号对应的三门课程的课程名称了。各个数据节点上对应同一个逻辑数据表的分布表的加和可以完整反映该逻辑数据表的内容。本发明实施例提供了一种数据分布的方法,如图5所示,所述方法包括如下步骤:501、在数据查询前,控制节点根据创建规则设置分布表创建指...
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1