CN110196882B - 数据重分布方式的确定方法、装置、服务器及存储介质 - Google Patents
数据重分布方式的确定方法、装置、服务器及存储介质 Download PDFInfo
- Publication number
- CN110196882B CN110196882B CN201910445801.1A CN201910445801A CN110196882B CN 110196882 B CN110196882 B CN 110196882B CN 201910445801 A CN201910445801 A CN 201910445801A CN 110196882 B CN110196882 B CN 110196882B
- Authority
- CN
- China
- Prior art keywords
- node
- redistribution
- distribution
- determining
- nodes
- 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
Images
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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- 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/242—Query formulation
- G06F16/2433—Query languages
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种数据重分布方式的确定方法、装置、服务器及存储介质。该方法包括:遍历执行二叉树,确定执行二叉树的叶节点、中间节点以及叶节点和中间节点所在的层级信息,按照由下至上的顺序,依次确定所述叶节点和所述中间节点的分布属性,根据叶节点和中间节点的分布属性,分别确定叶节点和中间节点的数据动态重分布方式。与现有技术相比,本发明实施例按照由下至上的顺序,依次确定叶节点和中间节点的分布属性,进而根据分布属性确定对应的数据重分布方式,解决了现有技术中数据重分布资源消耗较多的问题,提高了系统的执行效率。
Description
技术领域
本发明实施例涉及数据库技术领域,尤其涉及一种数据重分布方式的确定方法、装置、服务器及存储介质。
背景技术
MPP(Massively Parallel Processing)即大规模并行处理,在非共享数据库集群中,每个节点都有独立磁盘存储系统和内存系统,各节点之间的数据通过网络相互连接,彼此协调计算。简单来说,MPP是将任务并行的分散到多个服务器和节点上,每个节点计算完成后,将各自部分的结果汇总在一起得到最终的执行结果。
当数据表进行连接等操作时,如果操作涉及非分布列,各个节点的计算还需要本节点以外即其他节点的数据才能完成,此时需要对本节点的数据进行重分布。随着数据库处理的数据量越来越大,数据库集群的节点数越来越多,由于数据重分布过程是各节点间交叉连接,当节点数很多时,资源消耗严重,系统的执行效率也较低。
发明内容
本发明实施例提供一种数据重分布方式的确定方法、装置、服务器及存储介质,以解决现有技术中进行数据重分布时资源消耗严重的问题。
第一方面,本发明实施例提供一种数据重分布方式的确定方法,包括:
遍历执行二叉树,确定所述执行二叉树的叶节点、中间节点以及所述叶节点和所述中间节点所在的层级信息,所述执行二叉树通过对用户所输入连接查询语句的解析生成,所述中间节点为非叶节点;
按照由下至上的顺序,依次确定所述叶节点和所述中间节点的分布属性;
根据所述叶节点和所述中间节点的分布属性,分别确定所述叶节点和所述中间节点的数据重分布方式。
第二方面,本发明实施例还提供一种数据重分布方式的确定装置,包括:遍历模块,用于遍历执行二叉树,确定所述执行二叉树的叶节点、中间节点以及所述叶节点和所述中间节点所在的层级信息,所述执行二叉树通过对用户所输入连接查询语句的解析生成,所述中间节点为非叶节点;
分布属性确定模块,用于按照由下至上的顺序,依次确定所述叶节点和所述中间节点的分布属性;
重分布方式确定模块,用于根据所述叶节点和所述中间节点的分布属性,分别确定所述叶节点和所述中间节点的数据重分布方式。
第三方面,本发明实施例还提供一种服务器,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面所述的数据重分布方式的确定方法。
第四方面,本发明实施例还提供一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现如第一方面所述的数据重分布方式的确定方法。
本发明实施例提供一种数据重分布方式的确定方法、装置、服务器及存储介质,通过遍历执行二叉树,确定所述执行二叉树的叶节点、中间节点以及所述叶节点和所述中间节点所在的层级信息,所述执行二叉树通过对用户所输入连接查询语句的解析生成,所述中间节点为非叶节点,按照由下至上的顺序,依次确定所述叶节点和所述中间节点的分布属性,根据所述叶节点和所述中间节点的分布属性,分别确定所述叶节点和所述中间节点的数据重分布方式。与现有技术相比,本发明实施例按照由下至上的顺序,依次确定叶节点和中间节点的分布属性,进而根据分布属性确定对应的数据重分布方式,解决了现有技术中数据重分布资源消耗较多的问题,提高了系统的执行效率。
附图说明
图1为本发明实施例一提供的一种数据重分布方式的确定方法的流程图;
图2为本发明实施例一提供的一种连接操作对应的执行二叉树的示意图;
图3为本发明实施例一提供的一种分组操作对应的执行二叉树的示意图;
图4为本发明实施例二提供的一种数据重分布方式的确定方法的流程图;
图5为本发明实施例二提供的一种连接操作对应的执行二叉树的示意图;
图6为本发明实施例二提供的另一种数据重分布方式的确定方法的流程图;
图7为本发明实施例三提供的一种数据重分布方式的确定方法的流程图;
图8为本发明实施例三提供的一种分组操作对应的执行二叉树的示意图;
图9为本发明实施例四提供的一种数据重分布方式的确定装置的结构图;
图10为本发明实施例五提供的一种服务器的结构图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。此外,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
实施例一
图1为本发明实施例一提供的一种数据重分布方式的确定方法的流程图,本实施例可适用于在大规模并行处理环境中,根据节点的分布属性确定节点的数据重分布方式,以使该节点基于确定的数据重分布方式执行数据重分布的情况,该方法可以由数据重分布方式的确定装置来执行,该装置可以由软件和/或硬件的方式来实现,该装置集成在服务器中,具体的,该方法包括如下步骤:
S110、遍历执行二叉树,确定所述执行二叉树的叶节点、中间节点以及所述叶节点和所述中间节点所在的层级信息。
所述执行二叉树通过对用户所输入查询语句的解析生成,所述中间节点为非叶节点。查询语句包括连接查询语句和非连接查询语句,其中,连接查询语句是对两个或多个数据表执行连接操作的结构化查询语言(Structured Query Language,SQL),即SQL语句。非连接查询语句也是SQL语句,用于对数据表进行分组或排序等操作,本实施例的非连接查询语句以分组查询语句为例,分组查询以GROUP BY作为关键词。二叉树是每个节点最多有两个子树的树结构。
对SQL语句进行语法和语义解析,获取SQL语句中包含的数据表,以及SQL语句执行的具体操作,比如是连接操作还是分组操作,如果是连接操作,获取数据表之间的连接关系,根据数据表以及数据表之间的连接关系即可生成SQL语句对应的执行二叉树,如果是分组操作,当SQL语句中只包含一个数据表时,执行二叉树中仅包含一个根节点以及位于根节点之下的数据表,当SQL语句中包含多个数据表,且各个数据表存在一定的关联关系时,根据数据表以及各数据表之间的关联关系生成执行二叉树。
示例性的,假如用户输入的SQL语句为:SELECT*FROM A,B WHERE A.c1=B.d1andA.c2=B.d2,对该SQL语句进行语法和语义解析,得到的执行二叉树如图2所示,图2为本发明实施例一提供的一种连接操作对应的执行二叉树的示意图。再如,用户输入的SQL语句为:SELECT c1,count(c2)FROM T1,T2WHERE T1.c1=T2.d1GROUP BYc1,d1,对该SQL语句进行语法和语义解析,得到的执行二叉树如图3所示,图3为本发明实施例一提供的一种分组操作对应的执行二叉树的示意图。实施例将数据表称为执行二叉树的叶节点,即图2中的数据表A和数据表B以及图3中的数据表T称为执行二叉树的叶节点,图2中的HI表示对数据表A和数据表B执行哈希内连接,图3中的HI表示对数据表T1和数据表T2执行哈希内连接,图3中的HAGR为根节点,实施例将HI节点和根节点统称为中间节点,即非叶节点,对于连接操作来说,中间节点为HI节点,对于非连接操作如分组操作来说,中间节点可以是HI节点或根节点,需要说明的是,分组操作中不一定包含HI节点。
层级信息是各节点在执行二叉树的位置信息,比如位于执行二叉树的第几层,如图2所示,该执行二叉树存在两层,按照由下至上的顺序,两个叶节点均位于执行二叉树的第一层,中间节点位于第二层。遍历执行二叉树,即可确定执行二叉树的层数、叶节点、中间节点以及叶节点和中间节点所在的层数,进而明确各节点之间的关联关系,比如图2中的两个叶节点为中间节点的子节点,中间节点为两个叶节点的父节点,两个叶节点互为兄弟节点,为后续确定各节点的分布属性提供依据。
S120、按照由下至上的顺序,依次确定所述叶节点和所述中间节点的分布属性。
分布属性反映了节点的一种数据分布情况,比如哈希分布、随机分布和复制分布等。例如对数据表A和数据表B进行哈希内连接,连接条件为HI(A.c1=B.d1and A.c2=B.d2),此时,可以确定数据表A的分布属性为哈希分布c1/c2/(c1,c2)、随机分布和复制分布五种情况之一,数据表B的分布属性为哈希分布d1/d2/(d1,d2)、随机分布和复制分布五种情况之一,以数据表A为例,哈希分布c1表示数据表A按照c1哈希分布,哈希分布c2表示数据表A按照c2哈希分布,哈希分布(c1,c2)表示数据表A按照(c1,c2)哈希分布。再如,对数据表T执行分组操作,分组项为c1和c2,则数据表T的分布属性为哈希分布c1/c2/(c1,c2)、随机分布和复制分布五种情况之一。
叶节点即为执行连接操作或分组操作的数据表,该数据表的分布属性在建表时已确定,可以通过查找数据字典获取,其中,数据字典用于存储执行二叉树上各个叶节点的分布属性,如数据表A的分布属性可确定为上述五种情况之一。对于中间节点,可以根据该中间节点的子节点确定。实际应用过程中,执行二叉树最底层的节点为叶节点,叶节点的分布属性已知,按照由下至上的顺序,根据下层节点的分布属性依次确定上层节点的分布属性,当节点的分布属性满足数据重分布要求时,无需对该节点再执行数据重分布,减少了数据重分布的次数和数据量,节省了资源,也提高了系统的执行效率。示例性的,参考图2,数据表A和数据表B作为叶节点,其分布属性可以通过查找数据字典获取,HI节点的分布属性可以根据数据表A和数据表B的分布属性以及HI节点的特征进一步确定。
S130、根据所述叶节点和所述中间节点的分布属性,分别确定所述叶节点和所述中间节点的数据重分布方式。
数据重分布方式是与分布属性相匹配的一种数据分布方式,分布属性是当前节点执行数据重分布的依据,包括哈希分布、复制分布和随机分布。需要说明的是,并非所有节点都需要进行数据重分布,即有的节点需要进行数据重分布,有的则不需要,具体需要考虑该节点的分布属性是否满足数据重分布要求,如果满足,则不需要进行数据重分布,否则,需要按照数据重分布要求进行数据重分布,其中,数据重分布要求可以根据该节点的父节点的特征进一步确定,父节点的特征可以是父节点代表的具体的连接操作,比如哈希内连接或索引连接等,也可以是分组操作,其中,叶节点的数据重分布方式的确定过程和中间节点的数据重分布方式的确定过程类似。
如果父节点代表的操作为哈希内连接、索引连接或分组操作等,则父节点具有两种可选择的重分布方式,分别为分发重分布方式和收集重分布方式,其中,分发重分布方式是数据表的数据按照重分布项进行数据重分布,重分布项是一个包含数据表分布属性的元组。收集重分布方式是将一个数据表的数据全部收集到一个站点上。父节点选择的重分布方式不同,对应的数据重分布要求不同,例如,当父节点选择分发重分布方式时,数据重分布要求为重分布项,当父节点选择收集重分布方式时,数据重分布要求为复制分布。需要说明的是,如果父节点为根节点,则父节点也具有两种可选择的重分布方式,分别为分发重分布方式和收集重分布方式。
还需要说明的是,并非所有连接在选择收集重分布方式时,都可以对数据表A或数据表B进行收集重分布,比如哈希左外连接,对收集重分布有进一步的限定,即只能对哈希左外连接的右数据表进行收集重分布,实施例不考虑这种情况,只考虑不进行限定的情况。
示例性的,参考图2,以HI节点选择分发重分布方式为例,数据重分布要求为(c1,d2),若数据表A的分布属性为按照c1哈希分布,数据表B的分布属性为随机分布,将数据表A和数据表B的分布属性与数据重分布要求进行匹配,数据表A的分布属性与数据重分布要求中的分布属性一致,则数据表A不需要进行数据重分布,数据表B的分布属性与数据重分布要求中的分布属性不一致,则确定数据表B的数据重分布方式为以d2为重分布项进行分发重分布。这样考虑的好处是可以避免不必要的数据重分布,减少了数据重分布的次数和数据量。
本发明实施例一提供的一种数据重分布方式的确定方法,通过遍历执行二叉树,确定所述执行二叉树的叶节点、中间节点以及所述叶节点和所述中间节点所在的层级信息,所述执行二叉树通过对用户所输入查询语句的解析生成,所述中间节点为非叶节点,按照由下至上的顺序,依次确定所述叶节点和所述中间节点的分布属性,根据所述叶节点和所述中间节点的分布属性,分别确定所述叶节点和所述中间节点的数据重分布方式。与现有技术相比,本发明实施例按照由下至上的顺序,依次确定叶节点和中间节点的分布属性,进而根据分布属性确定对应的数据重分布方式,解决了现有技术中数据重分布资源消耗较多的问题,提高了系统的执行效率。
实施例二
图4为本发明实施例二提供的一种数据重分布方式的确定方法的流程图,本实施例是以连接操作为例,即查询语句为连接查询语句,在上述实施例的基础上进行具体化,具体的,该方法包括:
S210、遍历执行二叉树,确定所述执行二叉树的叶节点、中间节点以及所述叶节点和所述中间节点所在的层级信息。
S220、按照由下至上的顺序,依次确定所述叶节点和所述中间节点的分布属性。
叶节点和中间节点的分布属性的确定方式不同,具体如下:
S2201、查找数据字典,获取所述叶节点的分布属性。
所述数据字典用于存储所述执行二叉树上各个叶节点的分布属性。对于执行二叉树上的叶节点,可以通过查找数据字典获取对应的分布属性,前面已经介绍,此处不再赘述。
S2202、根据所述中间节点所包含子节点的分布属性确定所述中间节点的分布属性。
本实施例是按照由下至上的顺序,依次确定各节点的分布属性,当需要确定中间节点的分布属性时,中间节点所包含子节点的分布属性已经确定,根据中间节点所包含子节点的分布属性以及中间节点所选择的重分布方式即可确定中间节点的分布属性。
参考图2,当HI节点选择分发重分布时,HI节点的分布属性与重分布项相同,当HI节点选择收集重分布时,HI节点的分布属性与不执行收集重分布的数据表的分布属性相同,例如对数据表A执行收集重分布,则HI节点的分布属性与数据表B的分布属性相同。由此可以确定执行二叉树上各个节点的分布属性。
S230、分别计算所述叶节点的父节点和所述中间节点的父节点在重分布方式下对应的代价值。
所述重分布方式包括:分发重分布方式和收集重分布方式,两种重分布方式在前面已经介绍过,此处不再赘述。代价值是系统执行数据重分布的代价,重分布方式不同,对应的代价值不同。本实施例对S230进行具体化,分别介绍叶节点和中间节点在不同重分布方式下对应的代价值的计算过程。
S2301、根据所述叶节点和所对应的兄弟节点的连接关系以及代价计算规则确定所述叶节点的父节点在所述分发重分布方式下对应的代价值。
叶节点和所对应兄弟节点的连接关系通过解析连接查询语句获取,具体可以体现在执行二叉树的非叶节点中,比如图2中的HI节点,表示叶节点和其兄弟节点的连接关系为哈希内连接。代价计算规则是计算代价值的一种具体算法,本实施例不进行具体介绍,假定已经存在这样一种算法,可以计算父节点在不同重分布方式下对应的代价值。当父节点选择分发重分布方式时,重分布项不同,最终计算的代价值也不同。其中,重分布项可以根据连接查询语句中的连接条件确定。
相应的,可以进一步对S2301进行具体化,以根据连接条件确定重分布项,进而根据重分布项计算相应的代价值。
根据所述连接关系对应的连接条件确定所述分发重分布方式的重分布项,所述重分布项包括所述叶节点和所对应兄弟节点的目标分布属性;
根据所述叶节点和所对应兄弟节点的目标分布属性以及代价计算规则确定所述叶节点的父节点在所述分发重分布方式下对应的代价值。
假设连接条件为HI(A.c1=B.d1and A.c2=B.d2),则可以确定重分布项为(c1,d1)、(c2,d2)和{(c1,d1),(d1,d2)}三种情况,以重分布项为(c1,d1)为例,c1为数据表A的目标分布属性,d1为数据表B的目标分布属性,此时,可以利用代价计算规则计算父节点在分发重分布方式下,数据表A和数据表B对应目标分布属性时的代价值。
S2302、根据所述叶节点、所对应的兄弟节点以及代价计算规则确定所述叶节点的父节点在所述收集重分布方式下对应的代价值。
当叶节点的父节点选择收集重分布方式,可以根据叶节点、所对应的兄弟节点和代价计算规则确定父节点在该方式下对应的代价值。具体如下:
将所述叶节点作为执行目标,根据所述执行目标的分布属性和代价计算规则确定所述叶节点的父节点在所述收集重分布方式下对应的代价值。
当叶节点的父节点选择收集重分布方式时,执行目标可以选择任意一个子节点,示例性的,参考图5,图5为本发明实施例二提供的一种连接操作对应的执行二叉树的示意图,当HI1节点选择收集重分布方式时,执行目标可以是对数据表A执行收集重分布,也可以是对HI2节点执行收集重分布。为了确定叶节点的数据重分布方式,可以直接选择叶节点作为执行目标。
执行目标选定后,获取执行目标的分布属性,如果执行目标的分布属性为非复制分布,则需要对执行目标进行收集重分布,然后利用代价计算规则计算执行收集重分布以后对应的代价值,如果执行目标的分布属性为复制分布,则不需要对执行目标执行收集重分布,可以利用代价计算规则计算不进行收集重分布对应的代价值。示例性的,参考图2,假定执行目标为数据表A,数据表A的分布属性为随机分布,由于数据表A的分布属性为非复制分布,则需要对数据表A执行收集重分布,然后利用代价计算规则计算数据表A执行收集重分布以后对应的代价值。
S2303、根据所述中间节点和所对应的兄弟节点的连接关系以及代价计算规则确定所述中间节点的父节点在所述分发重分布方式下对应的代价值。
确定中间节点的父节点在分发重分布方式下对应的代价值的过程与确定叶节点的父节点在分发重分布方式下对应的代价值的过程类似,此处不再赘述。
进一步的,S2303还可以具体化为:
根据所述连接关系对应的连接条件确定所述分发重分布方式的重分布项,所述重分布项包括所述中间节点和所对应的兄弟节点的目标分布属性;
根据所述中间节点和所对应的兄弟节点的目标分布属性以及代价计算规则确定所述中间节点的父节点在所述分发重分布方式下对应的代价值。
该过程与叶节点类似,具体可以参考前面所述。
S2304、根据所述中间节点、所对应的兄弟节点以及代价计算规则确定所述中间节点的父节点在所述收集重分布方式下对应的代价值。
确定中间节点的父节点在收集重分布方式下对应的代价值的过程与确定叶节点的父节点在收集重分布方式下对应的代价值的过程类似,此处不再赘述。
进一步的,S2304还可以具体化为:
将所述中间节点作为执行目标,根据所述执行目标的分布属性和代价计算规则确定所述中间节点的父节点在所述收集重分布方式下对应的代价值。
该过程与叶节点类似,具体可以参考前面所述。
S240、根据所述叶节点的父节点在所述分发重分布方式和收集重分布方式下对应的代价值确定所述叶节点的数据重分布方式。
代价值不同,数据重分布的次数和数据量不同,代价值越小,表示数据重分布的次数和数据量越少,系统的执行效率越高,为此可以基于代价值确定叶节点最优的数据重分布方式。可以理解的是,父节点选择不同的数据重分布方式,对应的代价值不同,本实施例将S240具体化进行说明,具体可以参考图6,图6为本发明实施例二提供的另一种数据重分布方式的确定方法的流程图。
S2401、比较各所述代价值。
最小代价值对应的重分布方式不同,叶节点的数据重分布方式的确定方法不同,代价值确定后即可进行排序,确定代价值最小时,父节点对应的重分布方式,进而根据父节点对应的重分布方式确定叶节点的数据重分布方式。
S2402、所述父节点在最小代价值所对应的重分布方式是否为分发重分布方式,若是,执行S2403,否则,执行S2406。
得到最小代价值后,需要进一步确定父节点在最小代价值所对应的重分布方式,如果为分发重分布方式,则执行S2403,如果不是,则执行S2406,需要说明的是,父节点在最小代价值所对应的重分布方式为分发重分布方式或收集重分布方式,如果不是分发重分布方式,则为收集重分布方式,需要按照S2406执行。
S2403、获取所述父节点在所述分发重分布方式下所述叶节点具备的目标分布属性。
如果父节点在最小代价值所对应的数据重分布方式为分发重分布方式,由于重分布项不同,对应的代价值也不同,为此需要进一步获取对应的重分布项,根据重分布项获取叶节点具备的目标分布属性。
S2404、所述叶节点的分布属性与所述目标分布属性是否相同,若不相同,执行S2405,否则,执行S2408。
叶节点的目标分布属性获取后,需要将叶节点初始对应的分布属性与目标分布属性进行比较,根据比较结果确定叶节点的数据重分布方式,此处的初始即为代价值计算之前,叶节点对应的分布属性。
S2405、将所述目标分布属性对应的数据重分布方式确定为所述叶节点的目标数据重分布方式,以使所述叶节点基于所述目标数据重分布方式执行数据重分布。
数据重分布方式与分布属性相匹配,例如叶节点的分布属性为按c1哈希分布,则数据重分布方式为按c1哈希分布。如果叶节点初始对应的分布属性与目标分布属性不相同,将目标分布属性对应的目标数据重分布方式确定为叶节点的数据重分布方式,以使叶节点基于目标数据重分布方式执行数据重分布。示例性的,叶节点初始的分布属性为按c1哈希分布,目标分布属性为按c2哈希分布,则该叶节点的数据重分布方式为以c2为重分布项执行分发重分布。
S2406、获取所述父节点在所述收集重分布方式下所述执行目标具备的分布属性。
如果父节点在最小代价值所对应的重分布方式为收集重分布方式,获取父节点在收集重分布方式下执行目标具备的分布属性。
S2407、所述执行目标的分布属性是否为复制分布,若是,执行S2408,否则执行S2409。
如果执行目标的分布属性为复制分布,则执行S2408,否则执行S2409。
S2408、所述叶节点不执行数据重分布。
对于分发重分布方式,如果叶节点初始的分布属性与目标分布属性相同,则无需对该叶节点执行数据重分布。对于收集重分布方式,如果执行目标的分布属性为复制分布,则也无需对该执行目标对应的叶节点执行数据重分布。
S2409、将所述收集重分布方式确定为所述执行目标所对应叶节点的数据重分布方式,以使所述叶节点基于所述收集重分布方式执行数据重分布。
如果执行目标的分布属性为非复制分布,比如随机分布或哈希分布,则对该执行目标对应的叶节点执行收集重分布。
S250、根据所述中间节点的父节点在所述分发重分布方式和收集重分布方式下对应的代价值确定所述中间节点的数据动态重分布方式。
具体的确定过程与叶节点类似,此处不再赘述。
本发明实施例二提供一种数据重分布方式的确定方法,在上述实施例的基础上,介绍了连接操作对应的数据重分布方式的确定方法,按照由下至上的顺序根据叶节点的分布属性和叶节点的父节点所选择的重分布方式,依次确定父节点的分布属性,中间节点也是类似,保证了代价值最小,而且减少了不必要的数据重分布,提高了系统的执行效率。
在上述实施例的基础上,根据所述中间节点所包含子节点的分布属性确定所述中间节点的分布属性的具体过程如下:
所述中间节点选择分发重分布方式时,所述中间节点的分布属性与所述分发重分布方式所对应的重分布项相同;
所述中间节点选择收集重分布方式时,根据所述收集重分布方式以及所述中间节点所包含子节点的分布属性确定所述中间节点的分布属性。
具体的,对于连接查询语句,中间节点选择分发重分布方式时,中间节点的分布属性与重分布项一致,具体细节在前面已经介绍过,此处不再赘述。中间节点选择收集重分布方式时,中间节点的分布属性与非执行目标的分布属性相同,如图2所示,假定执行目标为数据表A,则HI节点的分布属性与数据表B的分布属性相同。
下面通过两个示例具体说明一下连接操作对应的过程:
示例1
数据表A和数据表B执行哈希内连接,连接条件为HI(A.c1=B.d1 and A.c2=B.d2),执行二叉树如图2所示。HI节点具有两种可选择的数据重分布方式,分别为分发重分布方式和收集重分布方式。
(1)选择分发重分布方式
根据连接条件确定重分布项为(c1,d1)、(c2,d2)或{(c1,c2),(d1,d2)},其中,HI节点的分布属性与重分布项一致,基于数据表A和数据表B的分布属性,具体包括如下情况:
1)数据表A和数据表B均不为哈希分布,如随机分布或复制分布,则数据表A和数据表B都需要执行分发重分布,重分布项为(c1,d1)、(c2,d2)或{(c1,c2),(d1,d2)};
2)数据表A按c1哈希分布,数据表B不是哈希分布,例如随机分布或复制分布,则数据表B必须执行分发重分布,进一步的,如果重分布项为(c1,d1),则数据表A不需要执行分发重分布,数据表B以d1为重分布项进行分发重分布,如果重分布项为(c2,d2)或{(c1,c2),(d1,d2)},则数据表A和数据表B都需要按照重分布项进行分发重分布;
3)数据表A按c1哈希分布,数据表B按d1哈希分布,如果重分布项为(c1,d1),则数据表A和数据表B均不需要执行分发重分布,如果重分布项为(c2,d2)或{(c1,c2),(d1,d2)},则数据表A和数据表B均需要按照重分布项进行分发重分布;
4)数据表A按c1哈希分布,数据表B按d2哈希分布,如果重分布项为(c1,d1),则数据表A不需要执行分发重分布,数据表B以d1为重分布项进行分发重分布,如果重分布项为(c2,d2),则数据表A需要以c2为重分布项进行分发重分布,数据表B不需要执行分发重分布,如果重分布项为{(c1,c2),(d1,d2)},则数据表A和数据表B都需要按照重分布项进行分发重分布;其他情况类似,此处不再赘述。
(2)选择收集重分布方式
如果执行目标的分布属性为复制分布,则不需要对执行目标执行数据重分布,否则,需要执行收集重分布,HI节点的分布属性与非执行目标的分布属性相同。基于数据表A和数据表B的分布属性,具体包括如下情况:
1)数据表A和数据表B均为随机分布,如果执行目标为数据表A,则需要对数据表A进行收集重分布,HI节点的分布属性为随机分布,如果执行目标为数据表B,也需要对数据表B进行收集重分布,HI节点的分布属性为随机分布;
2)数据表A按c1哈希分布,数据表B为随机分布,如果执行目标为数据表A,则需要对数据表A进行收集重分布,HI节点的分布属性为随机分布,如果执行目标为数据表B,也需要对数据表B进行收集重分布,HI节点的分布属性为按c1哈希分布;
3)数据表A按c1哈希分布,数据表B按d1哈希分布,如果执行目标为数据表A,则需要对数据表A进行收集重分布,HI节点的分布属性为按d1哈希分布,如果执行目标为数据表B,也需要对数据表B进行收集重分布,HI节点的分布属性为按c1哈希分布;
4)数据表A按c1哈希分布,数据表B为复制分布,如果执行目标为数据表A,则需要对数据表A进行收集重分布,HI节点的分布属性为复制分布,如果执行目标为数据表B,则不需要对对数据表B进行收集重分布,HI节点的分布属性为按c1哈希分布;其他情况类似,此处不再赘述。
按照由下至上的顺序,可以依次确定执行二叉树上各个节点的分布属性,以便后续使用。父节点选择不同的数据重分布方式,对应的代价值不同,假定最小代价值对应的数据重分布方式为收集重分布方式,数据表A按c1哈希分布,数据表B为复制分布,执行目标为数据表B,则此时无需对数据表B执行重分布,即减少了数据重分布的次数和数据量。
示例2
如图5所示,执行二叉树为三表连接,先对数据表A和数据表B进行哈希内连接,连接结果与数据表T进行哈希内连接,其中,A.c1=B.d1and A.c2=B.d2为HI2的连接条件,A.c1=T.e1and A.c2=T.e2为HI1的连接条件,可以确定数据表A的分布属性为哈希分布c1/c2/(c1,c2)、随机分布和复制分布五种情况之一,数据表B的分布属性为哈希分布d1/d2/(d1,d2)、随机分布和复制分布五种情况之一,数据表T的分布属性为哈希分布e1/e2/(e1,e2)、随机分布和复制分布五种情况之一。
根据数据表A和数据表B的分布属性以及HI2节点选择的数据重分布方式可以确定HI2节点的分布属性,确定过程与示例1类似,此处不再赘述,HI2节点的分布属性确定后,即可根据数据表T和HI2节点的分布属性以及HI1节点选择的数据重分布方式确定HI1节点的分布属性,确定过程与示例1类似,此处不再赘述。每个节点的分布属性的确定都保证了代价值最小,提高了系统的执行效率。
实施例三
图7为本发明实施例三提供的一种数据重分布方式的确定方法的流程图,本实施例是以分组操作为例,即查询语句为分组查询语句,具体的,该方法包括:
S310、遍历执行二叉树,确定所述执行二叉树的叶节点、中间节点以及所述叶节点和所述中间节点所在的层级信息。
S320、按照由下至上的顺序,依次确定所述叶节点和所述中间节点的分布属性。
其中,S320还包括:
S3201、查找数据字典,获取所述叶节点的分布属性。
S3202、根据所述中间节点所包含子节点的分布属性确定所述中间节点的分布属性。
S330、分别计算所述叶节点的父节点和所述中间节点的父节点在重分布方式下对应的代价值。
本实施例对S330进行具体化,分别介绍分组操作中,叶节点和中间节点在不同重分布方式下对应的代价值的计算过程。
S3301、根据所述叶节点以及代价计算规则确定所述叶节点的父节点在所述分发重分布方式下对应的代价值。
对于分组操作来说,叶节点不一定存在兄弟节点,如果分组查询语句中包含两个数据表,如图3所示,叶节点存在兄弟节点,这种情况下,叶节点的父节点在分发重分布方式下对应的代价值的计算过程与连接操作类似,此处不再赘述。如果分组查询语句中仅包含一个数据表,则该数据表对应的叶节点没有兄弟节点,此时,可以根据叶节点的目标分布属性以及代价计算规则确定叶节点的父节点在分发重分布方式下对应的代价值,相应的,S3301可以具体化为:
根据所述非连接查询语句确定所述分发重分布方式的重分布项,所述重分布项包括所述叶节点的目标分布属性;
根据所述叶节点的目标分布属性以及代价计算规则确定所述叶节点的父节点在所述分发重分布方式下对应的代价值。
示例性的,参考图8,图8为本发明实施例三提供的一种分组操作对应的执行二叉树的示意图,对应的SQL语句为:SELECT c1,count(c2)FROM T GROUP BY c1,c2。可以确定重分布项为c1、c2和(c1,c2)三种情况,以重分布项为c1为例,c1数据表T的目标分布属性,此时,可以利用代价计算规则计算父节点在分发重分布方式下,数据表T对应目标分布属性时的代价值。
S3302、根据所述叶节点以及代价计算规则确定所述叶节点的父节点在所述收集重分布方式下对应的代价值。
当叶节点存在兄弟节点时,叶节点的父节点在收集重分布方式下对应的代价值的计算过程与连接操作类似,此处不再赘述。当叶节点不存在兄弟节点时,如图8所示,可以根据叶节点的分布属性和代价计算规则确定该叶节点的父节点在收集重分布方式下对应的代价值,相应的,可以将S3302具体化为:
将所述叶节点作为执行目标,根据所述执行目标的分布属性和代价计算规则确定所述叶节点的父节点在所述收集重分布方式下对应的代价值。
由于叶节点不存在兄弟节点,当该叶节点的父节点选择收集重分布方式时,执行目标只能选择该叶节点。执行目标确定以后,获取执行目标的分布属性,参考图8,若数据表T的分布属性为复制分布,则不需要对数据表T执行收集重分布,然后利用代价计算规则计算数据表T不执行收集重分布对应的代价值。
S3303、根据所述中间节点以及代价计算规则确定所述中间节点的父节点在所述分发重分布方式下对应的代价值。
对于分组操作,中间节点没有兄弟节点,如图3所示,确定中间节点的父节点在分发重分布方式下对应的代价值与分组操作中确定叶节点的父节点在分发重分布方式下对应的代价值类似,此处不再赘述。
进一步的,S3303可以具体化为:
根据所述非连接查询语句确定所述分发重分布方式的重分布项,所述重分布项包括所述中间节点的目标分布属性;
根据所述中间节点的目标分布属性以及代价计算规则确定所述中间节点的父节点在所述分发重分布方式下对应的代价值。
该过程与分组操作的叶节点对应的过程类似,具体可以参考前面所述。
S3304、根据所述中间节点以及代价计算规则确定所述中间节点的父节点在所述收集重分布方式下对应的代价值。
确定中间节点的父节点在收集重分布方式下对应的代价值的过程与确定叶节点的父节点在收集重分布方式下对应的代价值的过程类似,此处不再赘述。
进一步的,S3304可以具体化为:
将所述中间节点作为执行目标,根据所述执行目标的分布属性和代价计算规则确定所述中间节点的父节点在所述收集重分布方式下对应的代价值。
该过程与分组操作的叶节点对应的过程类似,具体可以参考前面所述。
S340、根据所述叶节点的父节点在所述分发重分布方式和收集重分布方式下对应的代价值确定所述叶节点的数据重分布方式。
本实施例将S340具体化进行说明,具体如下:
S3401、比较各所述代价值。
S3402、所述父节点在最小代价值所对应的重分布方式是否为分发重分布方式,若是,执行S3403,否则,执行S3406。
与连接操作类似,父节点在最小代价值所对应的重分布方式为分发重分布方式或收集重分布方式,如果不是分发重分布方式,则为收集重分布方式。
S3403、获取所述父节点在所述分发重分布方式下所述叶节点具备的目标分布属性。
S3404、所述叶节点的分布属性与所述目标分布属性是否相同,若不相同,执行S3405,否则,执行S3408。
叶节点的目标分布属性获取后,需要将叶节点初始对应的分布属性与目标分布属性进行比较,根据比较结果确定叶节点的数据重分布方式,此处的初始即为代价值计算之前,叶节点对应的分布属性。
S3405、将所述目标分布属性对应的数据重分布方式确定为所述叶节点的目标数据重分布方式,以使所述叶节点基于所述目标数据重分布方式执行数据重分布。
示例性的,参考图8,叶节点初始对应的分布属性为按c1哈希分布,目标分布属性为按(c1,c2)哈希分布,则该叶节点的数据重分布方式为以(c1,c2)为重分布项执行分发重分布。
S3406、获取所述父节点在所述收集重分布方式下所述执行目标具备的分布属性。
S3407、所述执行目标的分布属性是否为复制分布,若是,执行S3408,否则执行S3409。
S3408、所述叶节点不执行数据重分布。
S3409、将所述收集重分布方式确定为所述执行目标所对应叶节点的目标数据重分布方式,以使所述叶节点基于所述收集重分布方式执行数据重分布。
S350、根据所述中间节点的父节点在所述分发重分布方式和收集重分布方式下对应的代价值确定所述中间节点的数据重分布方式。
具体的确定过程与叶节点类似,此处不再赘述。
本发明实施例三提供一种数据重分布方式的确定方法,在上述实施例的基础上,介绍了分组操作对应的数据重分布方式的确定方法,按照由下至上的顺序根据叶节点的分布属性和叶节点的父节点所选择的重分布方式,依次确定父节点的分布属性,中间节点也是类似,保证了代价值最小,而且减少了不必要的数据重分布,提高了系统的执行效率。
在上述实施例的基础上,所述根据所述中间节点所包含子节点的分布属性确定所述中间节点的分布属性,包括:
所述中间节点选择分发重分布方式时,所述中间节点的分布属性与所述分发重分布方式所对应的重分布项相同;
所述中间节点选择收集重分布方式时,根据所述收集重分布方式以及所述中间节点所包含子节点的分布属性确定所述中间节点的分布属性。
具体的,查询语句为非连接语句,中间节点选择分发重分布方式时,中间节点的分布属性与重分布项一致,该过程与连接操作对应的过程类似。中间节点选择收集重分布方式时,如图3所示,HI节点选择收集重分布方式时,HI节点的分布属性与非执行目标的分布属性一致,假定执行目标为数据表T2,则HI节点的分布属性与数据表T1的分布属性一致。还是如图3所示,HAGR节点选择收集重分布方式时,HAGR节点的分布属性为复制分布。
实施例四
图9为本发明实施例三提供的一种数据重分布方式的确定装置的结构图,该装置可以执行上述实施例提供的数据重分布方式的确定方法,具体的,该装置包括:
遍历模块410,用于遍历执行二叉树,确定所述执行二叉树的叶节点、中间节点以及所述叶节点和所述中间节点所在的层级信息,所述执行二叉树通过对用户所输入查询语句的解析生成,所述中间节点为非叶节点;
分布属性确定模块420,用于按照由下至上的顺序,依次确定所述叶节点和所述中间节点的分布属性;
重分布方式确定模块430,用于根据所述叶节点和所述中间节点的分布属性,分别确定所述叶节点和所述中间节点的数据动态重分布方式。
本发明实施例三提供一种数据重分布方式的确定装置,通过遍历执行二叉树,确定所述执行二叉树的叶节点、中间节点以及所述叶节点和所述中间节点所在的层级信息,所述执行二叉树通过对用户所输入查询语句的解析生成,所述中间节点为非叶节点,按照由下至上的顺序,依次确定所述叶节点和所述中间节点的分布属性,根据所述叶节点和所述中间节点的分布属性,分别确定所述叶节点和所述中间节点的数据动态重分布方式。与现有技术相比,本发明实施例按照由下至上的顺序,依次确定叶节点和中间节点的分布属性,进而根据分布属性确定对应的数据重分布方式,解决了现有技术中数据重分布资源消耗较多的问题,提高了系统的执行效率。
在上述实施例的基础上,分布属性确定模块420,包括:
获取单元,用于查找数据字典,获取所述叶节点的分布属性,所述数据字典用于存储所述执行二叉树上各个叶节点的分布属性;
确定单元,用于根据所述中间节点所包含子节点的分布属性确定所述中间节点的分布属性。
在上述实施例的基础上,重分布方式确定模块430,包括:
代价值计算单元,用于分别计算所述叶节点的父节点和所述中间节点的父节点在重分布方式下对应的代价值,所述重分布方式包括:分发重分布方式和收集重分布方式;
第一确定单元,用于根据所述叶节点的父节点在所述分发重分布方式和收集重分布方式下对应的代价值确定所述叶节点的数据重分布方式;
第二确定单元,用于根据所述中间节点的父节点在所述分发重分布方式和收集重分布方式下对应的代价值确定所述中间节点的数据重分布方式。
在上述实施例的基础上,所述查询语句包括连接查询语句和非连接查询语句。
在上述实施例的基础上,代价值计算单元,包括:
代价值第一确定子单元,用于当所述查询语句为连接查询语句时,根据所述叶节点和所对应的兄弟节点的连接关系以及代价计算规则确定所述叶节点的父节点在所述分发重分布方式下对应的代价值;
代价值第二确定子单元,用于根据所述叶节点、所对应的兄弟节点以及代价计算规则确定所述叶节点的父节点在所述收集重分布方式下对应的代价值;
代价值第三确定子单元,用于根据所述中间节点和所对应的兄弟节点的连接关系以及代价计算规则确定所述中间节点的父节点在所述分发重分布方式下对应的代价值;
代价值第四确定子单元,用于根据所述中间节点、所对应的兄弟节点以及代价计算规则确定所述中间节点的父节点在所述收集重分布方式下对应的代价值。
在上述实施例的基础上,代价值第一确定子单元,具体用于根据所述连接关系对应的连接条件确定所述分发重分布方式的重分布项,所述重分布项包括所述叶节点和所述兄弟节点的目标分布属性;
根据所述叶节点和所对应的兄弟节点的目标分布属性以及代价计算规则确定所述叶节点的父节点在所述分发重分布方式下对应的代价值。
在上述实施例的基础上,代价值第二确定子单元,具体用于将所述叶节点作为执行目标,根据所述执行目标的分布属性和代价计算规则确定所述叶节点的父节点在所述收集重分布方式下对应的代价值。
在上述实施例的基础上,代价值第三确定子单元,具体用于根据所述连接关系对应的连接条件确定所述分发重分布方式的重分布项,所述重分布项包括所述中间节点和所对应的兄弟节点的目标分布属性;
根据所述中间节点和所对应的兄弟节点的目标分布属性以及代价计算规则确定所述中间节点的父节点在所述分发重分布方式下对应的代价值。
在上述实施例的基础上,代价值第四确定子单元,具体用于将所述中间节点作为执行目标,根据所述执行目标的分布属性和代价计算规则确定所述中间节点的父节点在所述收集重分布方式下对应的代价值。
在上述实施例的基础上,第一确定单元,具体用于当所述查询语句为连接查询语句时,比较各所述代价值;
如果所述父节点在最小代价值所对应的重分布方式为分发重分布方式,获取所述父节点在所述分发重分布方式下所述叶节点具备的目标分布属性;
若所述叶节点的分布属性与所述目标分布属性不同,则将所述目标分布属性对应的数据重分布方式确定为所述叶节点的目标数据重分布方式,以使所述叶节点基于所述目标数据重分布方式执行数据重分布;
如果所述父节点在最小代价值所对应的重分布方式为收集重分布方式,获取所述父节点在所述收集重分布方式下所述执行目标具备的分布属性;
若所述执行目标的分布属性为非复制分布,则将所述收集重分布方式确定为所述执行目标所对应叶节点的目标数据重分布方式,以使所述叶节点基于所述收集重分布方式执行数据重分布。
在上述实施例的基础上,确定单元,具体用于当所述查询语句为连接查询语句时,所述中间节点选择分发重分布方式时,所述中间节点的分布属性与所述分发重分布方式所对应的重分布项相同;
所述中间节点选择收集重分布方式时,根据所述收集重分布方式以及所述中间节点所包含子节点的分布属性确定所述中间节点的分布属性。
在上述实施例的基础上,代价值计算单元,包括:
代价值第五确定子单元,用于当所述查询语句为非连接查询语句时,根据所述叶节点以及代价计算规则确定所述叶节点的父节点在所述分发重分布方式下对应的代价值;
代价值第六确定子单元,用于根据所述叶节点以及代价计算规则确定所述叶节点的父节点在所述收集重分布方式下对应的代价值;
代价值第七确定子单元,用于根据所述中间节点以及代价计算规则确定所述中间节点的父节点在所述分发重分布方式下对应的代价值;
代价值第八确定子单元,用于根据所述中间节点以及代价计算规则确定所述中间节点的父节点在所述收集重分布方式下对应的代价值。
在上述实施例的基础上,代价值第五确定子单元,具体用于根据所述非连接查询语句确定所述分发重分布方式的重分布项,所述重分布项包括所述叶节点的目标分布属性;
根据所述叶节点的目标分布属性以及代价计算规则确定所述叶节点的父节点在所述分发重分布方式下对应的代价值。
在上述实施例的基础上,代价值第六确定子单元,具体用于将所述叶节点作为执行目标,根据所述执行目标的分布属性和代价计算规则确定所述叶节点的父节点在所述收集重分布方式下对应的代价值。
在上述实施例的基础上,代价值第七确定子单元,具体用于根据所述非连接查询语句确定所述分发重分布方式的重分布项,所述重分布项包括所述中间节点的目标分布属性;
根据所述中间节点的目标分布属性以及代价计算规则确定所述中间节点的父节点在所述分发重分布方式下对应的代价值。
在上述实施例的基础上,代价值第八确定子单元,具体用于将所述中间节点作为执行目标,根据所述执行目标的分布属性和代价计算规则确定所述中间节点的父节点在所述收集重分布方式下对应的代价值。
在上述实施例的基础上,第一确定单元,具体用于当查询语句为分组查询语句时,比较各所述代价值;
如果所述父节点在最小代价值所对应的重分布方式为分发重分布方式,获取所述父节点在所述分发重分布方式下所述叶节点具备的目标分布属性;
若所述叶节点的分布属性与所述目标分布属性不同,则将所述目标分布属性对应的数据重分布方式确定为所述叶节点的目标数据重分布方式,以使所述叶节点基于所述目标数据重分布方式执行数据重分布;
如果所述父节点在最小代价值所对应的重分布方式为收集重分布方式,获取所述父节点在所述收集重分布方式下所述执行目标具备的分布属性;
若所述执行目标的分布属性为非复制分布,则将所述收集重分布方式确定为所述执行目标所对应叶节点的目标数据重分布方式,以使所述叶节点基于所述收集重分布方式执行数据重分布。
在上述实施例的基础上,确定单元,具体用于当查询语句为非连接查询语句时,所述中间节点选择分发重分布方式时,所述中间节点的分布属性与所述分发重分布方式所对应的重分布项相同;
所述中间节点选择收集重分布方式时,根据所述收集重分布方式以及所述中间节点所包含子节点的分布属性确定所述中间节点的分布属性。
本发明实施例提供的数据重分布方式的确定装置可以用于执行上述任意实施例提供的数据重分布方式的确定方法,具备相应的功能和有益效果。
实施例五
图10为本发明实施例五提供的一种服务器的结构图,具体的,参考图10,该服务器包括:处理器510、存储器520、输入装置530和输出装置540,服务器中处理器510的数量可以是一个或多个,图10中以一个处理器510为例,服务器中的处理器510、存储器520、输入装置530和输出装置540可以通过总线或其他方式连接,图10中以通过总线连接为例。
存储器520作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的数据分布方式的确定方法对应的程序指令/模块。处理器510通过运行存储在存储器520中的软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述实施例的数据重分布方式的确定方法。
存储器520主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器520可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器520可进一步包括相对于处理器410远程设置的存储器,这些远程存储器可以通过网络连接至服务器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置530可用于接收输入的数字或字符信息,以及产生与服务器的用户设置以及功能控制有关的键信号输入。输出装置540可包括显示屏等显示设备、扬声器以及蜂鸣器等音频设备。
本发明实施例提供的服务器与上述实施例提供的数据重分布方式的确定方法属于同一发明构思,未在本实施例中详尽描述的技术细节可参见上述实施例,并且本实施例具备执行数据重分布方式的确定方法相同的有益效果。
实施例六
本发明实施例六还提供一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任意实施例所述的数据重分布方式的确定方法。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的数据重分布方式的确定方法中的操作,还可以执行本发明任意实施例所提供的数据重分布方式的确定方法中的相关操作,且具备相应的功能和有益效果。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是机器人,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的数据重分布方式的确定方法。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (13)
1.一种数据重分布方式的确定方法,其特征在于,包括:
遍历执行二叉树,确定所述执行二叉树的叶节点、中间节点以及所述叶节点和所述中间节点所在的层级信息,所述执行二叉树通过对用户所输入查询语句的解析生成,所述中间节点为非叶节点;
按照由下至上的顺序,依次确定所述叶节点和所述中间节点的分布属性;
所述依次确定所述叶节点和所述中间节点的分布属性,包括:
查找数据字典,获取所述叶节点的分布属性,所述数据字典用于存储所述执行二叉树上各个叶节点的分布属性;
根据所述中间节点所包含子节点的分布属性确定所述中间节点的分布属性;
根据所述叶节点和所述中间节点的分布属性,分别确定所述叶节点和所述中间节点的数据重分布方式;
所述根据所述叶节点和所述中间节点的分布属性,分别确定所述叶节点和所述中间节点的数据重分布方式,包括:
分别计算所述叶节点的父节点和所述中间节点的父节点在重分布方式下对应的代价值,所述重分布方式包括:分发重分布方式和收集重分布方式;
根据所述叶节点的父节点在所述分发重分布方式和收集重分布方式下对应的代价值确定所述叶节点的数据重分布方式;
根据所述中间节点的父节点在所述分发重分布方式和收集重分布方式下对应的代价值确定所述中间节点的数据重分布方式。
2.根据权利要求1所述的方法,其特征在于,所述查询语句包括连接查询语句和非连接查询语句。
3.根据权利要求2所述的方法,其特征在于,当所述查询语句为连接查询语句时,所述分别计算所述叶节点的父节点和所述中间节点的父节点在重分布方式下对应的代价值,包括:
根据所述叶节点和所对应的兄弟节点的连接关系以及代价计算规则确定所述叶节点的父节点在所述分发重分布方式下对应的代价值;
根据所述叶节点、所对应的兄弟节点以及代价计算规则确定所述叶节点的父节点在所述收集重分布方式下对应的代价值;
根据所述中间节点和所对应的兄弟节点的连接关系以及代价计算规则确定所述中间节点的父节点在所述分发重分布方式下对应的代价值;
根据所述中间节点、所对应的兄弟节点以及代价计算规则确定所述中间节点的父节点在所述收集重分布方式下对应的代价值。
4.根据权利要求3所述的方法,其特征在于,所述根据所述叶节点和所对应的兄弟节点的连接关系以及代价计算规则确定所述叶节点的父节点在所述分发重分布方式下对应的代价值,包括:
根据所述连接关系对应的连接条件确定所述分发重分布方式的重分布项,所述重分布项包括所述叶节点和所对应兄弟节点的目标分布属性;
根据所述叶节点和所对应的兄弟节点的目标分布属性以及代价计算规则确定所述叶节点的父节点在所述分发重分布方式下对应的代价值;
相应的,所述根据所述中间节点和所对应的兄弟节点的连接关系以及代价计算规则确定所述中间节点的父节点在所述分发重分布方式下对应的代价值,包括:
根据所述连接关系对应的连接条件确定所述分发重分布方式的重分布项,所述重分布项包括所述中间节点和所对应的兄弟节点的目标分布属性;
根据所述中间节点和所对应的兄弟节点的目标分布属性以及代价计算规则确定所述中间节点的父节点在所述分发重分布方式下对应的代价值。
5.根据权利要求4所述的方法,其特征在于,所述根据所述叶节点、所对应的兄弟节点以及代价计算规则确定所述叶节点的父节点在所述收集重分布方式下对应的代价值,包括:
将所述叶节点作为执行目标,根据所述执行目标的分布属性和代价计算规则确定所述叶节点的父节点在所述收集重分布方式下对应的代价值;
相应的,所述根据所述中间节点、所对应的兄弟节点以及代价计算规则确定所述中间节点的父节点在所述收集重分布方式下对应的代价值,包括:
将所述中间节点作为执行目标,根据所述执行目标的分布属性和代价计算规则确定所述中间节点的父节点在所述收集重分布方式下对应的代价值。
6.根据权利要求2所述的方法,其特征在于,当所述查询语句为非连接查询语句时,所述分别计算所述叶节点的父节点和所述中间节点的父节点在重分布方式下对应的代价值,包括:
根据所述叶节点以及代价计算规则分别确定所述叶节点的父节点在所述分发重分布方式下对应的代价值;
根据所述叶节点以及代价计算规则分别确定所述叶节点的父节点在所述收集重分布方式下对应的代价值;
根据所述中间节点以及代价计算规则分别确定所述中间节点的父节点在所述分发重分布方式下对应的代价值;
根据所述中间节点以及代价计算规则分别确定所述中间节点的父节点在所述收集重分布方式下对应的代价值。
7.根据权利要求6所述的方法,其特征在于,所述根据所述叶节点以及代价计算规则确定所述叶节点的父节点在所述分发重分布方式下对应的代价值,包括:
根据所述非连接查询语句确定所述分发重分布方式的重分布项,所述重分布项包括所述叶节点的目标分布属性;
根据所述叶节点的目标分布属性以及代价计算规则确定所述叶节点的父节点在所述分发重分布方式下对应的代价值;
相应的,所述根据所述中间节点以及代价计算规则分别确定所述中间节点的父节点在所述分发重分布方式下对应的代价值,包括:
根据所述非连接查询语句确定所述分发重分布方式的重分布项,所述重分布项包括所述中间节点的目标分布属性;
根据所述中间节点的目标分布属性以及代价计算规则确定所述中间节点的父节点在所述分发重分布方式下对应的代价值。
8.根据权利要求7所述的方法,其特征在于,所述根据所述叶节点以及代价计算规则分别确定所述叶节点的父节点在所述收集重分布方式下对应的代价值,包括:
将所述叶节点作为执行目标,根据所述执行目标的分布属性和代价计算规则确定所述叶节点的父节点在所述收集重分布方式下对应的代价值;
相应的,所述根据所述中间节点以及代价计算规则分别确定所述中间节点的父节点在所述收集重分布方式下对应的代价值,包括:
将所述中间节点作为执行目标,根据所述执行目标的分布属性和代价计算规则确定所述中间节点的父节点在所述收集重分布方式下对应的代价值。
9.根据权利要求5或8所述的方法,其特征在于,所述根据所述叶节点的父节点在所述分发重分布方式和收集重分布方式下对应的代价值确定所述叶节点的数据重分布方式,包括:
比较各所述代价值;
如果所述父节点在最小代价值所对应的重分布方式为分发重分布方式,获取所述父节点在所述分发重分布方式下所述叶节点具备的目标分布属性;
若所述叶节点的分布属性与所述目标分布属性不同,则将所述目标分布属性对应的数据重分布方式确定为所述叶节点的目标数据重分布方式,以使所述叶节点基于所述目标数据重分布方式执行数据重分布;
如果所述父节点在最小代价值所对应的重分布方式为收集重分布方式,获取所述父节点在所述收集重分布方式下所述执行目标具备的分布属性;
若所述执行目标的分布属性为非复制分布,则将所述收集重分布方式确定为所述执行目标所对应叶节点的目标数据重分布方式,以使所述叶节点基于所述收集重分布方式执行数据重分布。
10.根据权利要求5或8所述的方法,其特征在于,所述根据所述中间节点所包含子节点的分布属性确定所述中间节点的分布属性,包括:
所述中间节点选择分发重分布方式时,所述中间节点的分布属性与所述分发重分布方式所对应的重分布项相同;
所述中间节点选择收集重分布方式时,根据所述收集重分布方式以及所述中间节点所包含子节点的分布属性确定所述中间节点的分布属性。
11.一种数据重分布方式的确定装置,其特征在于,包括:
遍历模块,用于遍历执行二叉树,确定所述执行二叉树的叶节点、中间节点以及所述叶节点和所述中间节点所在的层级信息,所述执行二叉树通过对用户所输入查询语句的解析生成,所述中间节点为非叶节点;
分布属性确定模块,用于按照由下至上的顺序,依次确定所述叶节点和所述中间节点的分布属性;
所述分布属性确定模块,包括:
获取单元,用于查找数据字典,获取所述叶节点的分布属性,所述数据字典用于存储所述执行二叉树上各个叶节点的分布属性;
确定单元,用于根据所述中间节点所包含子节点的分布属性确定所述中间节点的分布属性;
重分布方式确定模块,用于根据所述叶节点和所述中间节点的分布属性,分别确定所述叶节点和所述中间节点的数据重分布方式;
所述重分布方式确定模块,包括:
代价值计算单元,用于分别计算所述叶节点的父节点和所述中间节点的父节点在重分布方式下对应的代价值,所述重分布方式包括:分发重分布方式和收集重分布方式;
第一确定单元,用于根据所述叶节点的父节点在所述分发重分布方式和收集重分布方式下对应的代价值确定所述叶节点的数据重分布方式;
第二确定单元,用于根据所述中间节点的父节点在所述分发重分布方式和收集重分布方式下对应的代价值确定所述中间节点的数据重分布方式。
12.一种服务器,其特征在于,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-10中任一项所述的数据重分布方式的确定方法。
13.一种存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-10中任一项所述的数据重分布方式的确定方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910445801.1A CN110196882B (zh) | 2019-05-27 | 2019-05-27 | 数据重分布方式的确定方法、装置、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910445801.1A CN110196882B (zh) | 2019-05-27 | 2019-05-27 | 数据重分布方式的确定方法、装置、服务器及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110196882A CN110196882A (zh) | 2019-09-03 |
CN110196882B true CN110196882B (zh) | 2021-06-08 |
Family
ID=67753141
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910445801.1A Active CN110196882B (zh) | 2019-05-27 | 2019-05-27 | 数据重分布方式的确定方法、装置、服务器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110196882B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6928445B2 (en) * | 2002-06-25 | 2005-08-09 | International Business Machines Corporation | Cost conversant classification of objects |
WO2018024075A1 (en) * | 2016-08-03 | 2018-02-08 | Huawei Technologies Co., Ltd. | System and method for data redistribution in database |
CN108319623A (zh) * | 2017-01-18 | 2018-07-24 | 华为技术有限公司 | 一种数据重分布方法、装置及数据库集群 |
CN108932256A (zh) * | 2017-05-25 | 2018-12-04 | 中兴通讯股份有限公司 | 分布式数据重分布控制方法、装置及数据管理服务器 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2159269C (en) * | 1995-09-27 | 2000-11-21 | Chaitanya K. Baru | Method and apparatus for achieving uniform data distribution in a parallel database system |
US8396880B2 (en) * | 2009-11-30 | 2013-03-12 | Red Hat, Inc. | Systems and methods for generating an optimized output range for a data distribution in a hierarchical database |
CN106528833A (zh) * | 2016-11-14 | 2017-03-22 | 天津南大通用数据技术股份有限公司 | 一种mpp数据库数据动态重分布的方法及装置 |
-
2019
- 2019-05-27 CN CN201910445801.1A patent/CN110196882B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6928445B2 (en) * | 2002-06-25 | 2005-08-09 | International Business Machines Corporation | Cost conversant classification of objects |
WO2018024075A1 (en) * | 2016-08-03 | 2018-02-08 | Huawei Technologies Co., Ltd. | System and method for data redistribution in database |
CN108319623A (zh) * | 2017-01-18 | 2018-07-24 | 华为技术有限公司 | 一种数据重分布方法、装置及数据库集群 |
CN108932256A (zh) * | 2017-05-25 | 2018-12-04 | 中兴通讯股份有限公司 | 分布式数据重分布控制方法、装置及数据管理服务器 |
Non-Patent Citations (2)
Title |
---|
Study of Dynamic Data Redistribution Algorithm Based on Distributed Database System;Liu Zhenglong;《Procedia Engineering》;20111231(第15期);全文 * |
面向容器的云平台数据重分布策略研究;丁玺润;《软件与算法》;20161231;第35卷(第5期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110196882A (zh) | 2019-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Zhao et al. | Modeling MongoDB with relational model | |
CN110515973B (zh) | 一种数据查询的优化方法、装置、设备及存储介质 | |
US8954419B2 (en) | Method for serial and condition-based execution of operators by parallel processes | |
WO2016011904A1 (zh) | 数据库访问方法及装置、数据库系统 | |
CN107038161B (zh) | 一种用于过滤数据的设备及方法 | |
CN110909111B (zh) | 基于知识图谱rdf数据特征的分布式存储与索引方法 | |
JP6807963B2 (ja) | 情報処理システム及び情報処理方法 | |
CN104504154A (zh) | 一种数据聚合查询的方法及装置 | |
CN108431766B (zh) | 用于访问数据库的方法和系统 | |
CN112925789B (zh) | 一种基于Spark的空间矢量数据内存存储查询方法及系统 | |
CN111930770A (zh) | 数据查询方法、装置及电子设备 | |
CN111125199B (zh) | 一种数据库访问方法、装置及电子设备 | |
CN110196882B (zh) | 数据重分布方式的确定方法、装置、服务器及存储介质 | |
CN108549688A (zh) | 一种数据操作的优化方法、装置、设备和存储介质 | |
CN110162574B (zh) | 数据重分布方式的确定方法、装置、服务器及存储介质 | |
US20220215021A1 (en) | Data Query Method and Apparatus, Computing Device, and Storage Medium | |
CN115982230A (zh) | 数据库的跨数据源查询方法、系统、设备及存储介质 | |
CN112905598B (zh) | 基于接口实现分离的图任务中间结果存储方法及系统 | |
CN107506365B (zh) | 一种对输出列进行合并计算的方法 | |
CN113407810B (zh) | 一种基于大数据的城市信息和服务集成系统及方法 | |
CN109753520B (zh) | 半连接查询方法、装置、服务器及存储介质 | |
EP4209918A1 (en) | Data query method and apparatus, device, and storage medium | |
Li et al. | An improved distributed query for large-scale RDF data | |
CN114254005A (zh) | 分区表的分组聚集查询方法、装置、计算机设备和介质 | |
Papanikolaou | Distributed algorithms for skyline computation using apache spark |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |