CN104504154B - 一种数据聚合查询的方法及装置 - Google Patents

一种数据聚合查询的方法及装置 Download PDF

Info

Publication number
CN104504154B
CN104504154B CN201510018619.XA CN201510018619A CN104504154B CN 104504154 B CN104504154 B CN 104504154B CN 201510018619 A CN201510018619 A CN 201510018619A CN 104504154 B CN104504154 B CN 104504154B
Authority
CN
China
Prior art keywords
data
node
aggregate
inquiry
packet
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
Application number
CN201510018619.XA
Other languages
English (en)
Other versions
CN104504154A (zh
Inventor
李晋钢
宋怀明
狄静舒
惠润海
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shuguang Information Industry Henan Co ltd
Original Assignee
Dawning Information Industry Beijing Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Dawning Information Industry Beijing Co Ltd filed Critical Dawning Information Industry Beijing Co Ltd
Priority to CN201510018619.XA priority Critical patent/CN104504154B/zh
Publication of CN104504154A publication Critical patent/CN104504154A/zh
Application granted granted Critical
Publication of CN104504154B publication Critical patent/CN104504154B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations
    • G06F16/24556Aggregation; Duplicate elimination

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种数据聚合查询的方法及装置,方法包括:第一级节点对各自存储的数据执行聚合查询,所述节点为无共享架构下的节点;将第一级节点执行聚合查询后得到的数据汇总至第二级节点;第二级节点对第一级节点执行聚合查询后得到的数据执行聚合查询。装置包括:第一执行模块,用于在第一级节点对各自存储的数据执行聚合查询,所述节点为无共享架构下的节点;汇总模块,用于将第一级节点执行聚合查询后得到的数据汇总至第二级节点;第二执行模块,用于在第二级节点对第一级节点执行聚合查询后得到的数据执行聚合查询。采用本发明的技术方案,能够有效降低了数据聚合查询的网络通信开销,提高了数据聚合查询的效率。

Description

一种数据聚合查询的方法及装置
技术领域
本发明涉及数据处理技术领域,特别涉及一种数据聚合查询的方法及装置。
背景技术
随着大数据时代到来,与传统数据分析相比,现在遇到了更大的挑战,一方面是数据量的爆炸式增长,另一方面是数据类型的增加。Hadoop应运而生,解决了数据离线分析的难题,但对于实时的数据分析,由于Hadoop自身的特点,不能应用在实时的数据分析,因此,并行数据库依然是实时的数据分析的主要工具。在并行数据库系统中,聚合查询和关联查询是执行数据分析的主要方法。并行数据库的查询涉及到集群中的多个节点,如果直接在各节点上执行聚合查询,最终很可能会得到一个错误的结果。为保证结果的正确性,现有的并行数据库聚合查询的执行方式,主要是通过将分布在多个节点中的数据汇聚到一个节点后,由这一关节点执行聚合查询,这种聚合查询的执行方式,在将多个节点中的数据汇聚到这一个节点的过程,需要传输大量的原始数据,数据传输的网络通信开销很大,且仅由一个节点对汇聚到该节点上的大量数据执行聚合查询处理,受该节点的数据处理能力限制,现有的数据聚合查询能效率不高。
综上,现有的并行数据库聚合查询方案是将数据汇聚到一个节点后执行聚合,加剧了网络通信开销,且限制了并行数据库聚合查询的效率。
发明内容
本发明实施例提出了一种数据聚合查询的方法及装置,用以解决现有并行数据库的聚合查询方式存在的数据传输网络通信开销较大,聚合查询效率较低的问题。
本发明实施例提供了一种数据聚合查询的方法,包括如下步骤:
第一级节点对各自存储的数据执行聚合查询,所述节点为无共享架构下的节点;
将第一级节点执行聚合查询后得到的数据汇总至第二级节点;
第二级节点对第一级节点执行聚合查询后得到的数据执行聚合查询。
本发明实施例提供了一种数据聚合查询的装置,包括:
第一执行模块,用于在第一级节点对各自存储的数据执行聚合查询,所述节点为无共享架构下的节点;
汇总模块,用于将第一级节点执行聚合查询后得到的数据汇总至第二级节点;
第二执行模块,用于在第二级节点对第一级节点执行聚合查询后得到的数据执行聚合查询。
本发明有益效果:
相对于现有技术中主要是通过将分布在多个节点中的数据汇聚到一个节点后,由这一关节点执行聚合查询的并行数据库聚合查询执行方式,由于本发明实施例提供的数据聚合查询的方法及装置技术方案中,采用分阶段的数据聚合查询执行方式,将由第一级节点对各自存储的数据进行聚合查询得到的结果汇总至第二级节点执行聚合查询,由于第一级节点汇总至第二级节点的聚合查询结果相对于第一级节点聚合查询处理前的原始数据来说,数据量小很多,且将现有技术中仅有一个节点进行的聚合查询的数据,在多个第一级节点上分阶段进行聚合查询,所以,避免了现有的数据聚合查询方案中将所有数据不做处理直接汇总到一个节点进行聚合查询处理造成的网络通信开销较大和聚合查询性能下降的问题,本发明实施例中提供的技术方案有效降低了网络通信开销,提高了数据聚合查询的效率。
附图说明
下面将参照附图描述本发明的具体实施例,其中:
图1为本发明实施例中提供的数据聚合查询的方法实施流程示意图;
图2为本发明实施例中采用聚合函数进行数据聚合查询的实施流程示意图;
图3为本发明实施例中分组列中不包含数据的分布列时大量数据聚合查询的实施流程示意图;
图4为本发明实施例中提供的数据聚合查询的装置结构示意图。
具体实施方式
为了通过本发明的技术方案及优点更加清楚明白,以下结合附图对本发明的示例性实施例执行进一步详细的说明,显然,所描述的实施例仅是本发明的一部分实施例,而不是所有实施例的穷举。
本发明实施例提供了一种数据聚合查询的方法,下面进行说明。
图1为本发明实施例提供的数据聚合查询的方法实施流程示意图,如图所示,该数据查询的方法,可以包括如下步骤:
步骤101:第一级节点对各自存储的数据执行聚合查询,所述节点为无共享架构下的节点;
步骤102:将第一级节点执行聚合查询后得到的数据汇总至第二级节点;
步骤103:第二级节点对第一级节点执行聚合查询后得到的数据执行聚合查询。
具体实施中,并行数据库系统的目标是高性能和高可用性,通过多个处理节点并行执行数据库任务,提高整个数据库系统的性能和可用性。本发明实施例中通过统一的SQL(Structured Query Language,结构化查询语言)接口进行聚合查询的优化,以提升并行数据库的数据聚合查询效率,降低网络通信开销。
本发明实施例应用在SNA(Shared nothing architecture,无共享架构)下,即,本发明实施例中的节点均为无共享架构节点。无共享架构节点中独立地存储分布式数据,各个节点的计算单元拥有独立的存储和计算资源,存储的数据相互隔离。在本发明实施例提供的数据聚合查询的过程中,先在各个节点上进行聚合查询,再将各个节点聚合查询的结果汇总到一个节点做最终的聚合查询,由于汇总的数据是在各个节点上进行聚合查询后的数据,相对于现有技术的聚合查询过程中,将需要聚合查询处理的大量原始数据从多个节点汇总到一个节点进行聚合查询,汇总的数据量大幅度减小,有效降低了网络通信开销,且先在各个节点进行聚合查询,将各个节点聚合查询的结果汇总到一个节点做最终的聚合查询,先由多个节点进行并行的聚合查询,避免了将所有的聚合查询工作由一个节点处理,可以提高数据聚合查询的效率。
实施中,该数据聚合查询的方法可以进一步包括:在第一级节点对各自存储的数据执行聚合查询之前,第一级节点对各自存储的数据执行过滤查询。
具体实施中,为了更高效地进行数据的聚合查询,通常在聚合查询之前,通过数据过滤查询滤除不满足条件的数据,确定满足条件的数据,并将确定的满足条件的数据进行后续的聚合查询。本发明实施例中要满足的条件是根据实际需要确定的,作为数据过滤过程种确定数据是否被滤除的条件。
实施中,当第一级节点中采用非简单聚合函数执行数据聚合查询时,第一级节点可以将非简单聚合函数分解为多个简单聚合函数执行数据聚合查询,其中,简单聚合函数包括以下函数之一或者其组合:SUM、COUNT、MAX和/或MIN,非简单聚合函数包括以下函数之一:AVG、CHECKSUM、BINARY_CHECKSUM、STDEV、STDEVP、VAR或VARP。
具体实施中,聚合查询主要通过聚集函数和GROUP BY的SQL语句等实现,而与过滤和分组的话,会产生更多的查询方式。针对不同的聚合查询,会采用不同的优化方式。其中,聚合函数对一组值执行计算并返回单一的值。聚合函数忽略空值。聚合函数经常与SELECT语句的GROUP BY的SQL语句一同使用。所有聚合函数都具有确定性。任何时候用一组给定的输入值调用它们时,都返回相同的值。例如Transact-SQL编程语言提供的聚合函数如下:
1.AVG返回指定组中的平均值,空值被忽略。
例:select prd_no,avg(qty)from sales group by prd_no
2.COUNT返回指定组中项目的数量。
例:select count(prd_no)from sales
3.MAX返回指定数据的最大值。
例:select prd_no,MAX(qty)from sales group by prd_no
4.MIN返回指定数据的最小值。
例:select prd_no,MIN(qty)from sales group by prd_no
5.SUM返回指定数据的和,只能用于数字列,空值被忽略。
例:select prd_no,sum(qty)from sales group by prd_no
6.COUNT_BIG返回指定组中的项目数量,与COUNT函数不同的是COUNT_BIG返回bigint值,而COUNT返回的是int值。
例:select count_big(prd_no)from sales
7.GROUPING产生一个附加的列,当用CUBE或ROLLUP运算符添加行时,输出值为1.当所添加的行不是由CUBE或ROLLUP产生时,输出值为0.
例:select prd_no,sum(qty),grouping(prd_no)from sales group by prd_nowith rollup
8.BINARY_CHECKSUM返回对表中的行或表达式列表计算的二进制校验值,用于检测表中行的更改。
例:select prd_no,binary_checksum(qty)from sales group by prd_no
9.CHECKSUM_AGG返回指定数据的校验值,空值被忽略。
例:select prd_no,checksum_agg(binary_checksum(*))from sales group byprd_no
10.CHECKSUM返回在表的行上或在表达式列表上计算的校验值,用于生成哈希索引。
11.STDEV返回给定表达式中所有值的统计标准偏差。
例:select stdev(prd_no)from sales
12.STDEVP返回给定表达式中的所有值的填充统计标准偏差。
例:select stdevp(prd_no)from sales
13.VAR返回给定表达式中所有值的统计方差。
例:select var(prd_no)from sales
14.VARP返回给定表达式中所有值的填充的统计方差。
例:select varp(prd_no)from sales
简单聚合查询是指对全局数据或过滤后的数据进行的不涉及关联或分组的聚合查询。这类查询的主要形式有两种:
(1)当聚合查询采用的是简单聚合函数,直接在各节点执行聚合查询后汇总不会影响全局聚合查询的正确性。简单聚合函数包括:SUM、COUNT、MAX和/或MIN。图2为本发明实施例中提供的采用聚合函数进行数据聚合查询的实施流程示意图,如图所示,采用简单聚合函数的聚合查询可以分两阶段进行,第一阶段为下面三个执行聚合查询的第一级节点,第一级节点执行过滤查询和/或聚合查询,执行完成后,将第一级节点过滤查询和/或聚合查询后得到的数据汇总到第二级节点,第二级节点对汇总的数据进行聚合查询,图2中的第一级节点为三个,第二级节点为一个,仅是作示例性说明,具体第一级节点和第二级节点的个数可以根据数据聚合查询的实际处理需求来确定,这里不作具体限定。
(2)当聚合查询采用的是非简单聚合函数,非简单聚合函数包括:AVG、CHECKSUM、BINARY_CHECKSUM、STDEV、STDEVP、VAR或VARP。这类函数如果直接在各节点上执行聚合查询会影响全局聚合查询的正确性,例如有四个非共享架构节点,这四个节点中分别独立存储数据,具体存储数据如下:
节点1中的数据为:46;
节点2中的数据为:3、56、17、24;
节点3中的数据为:43、19;
节点4种的数据为:20、39、90、22、11。
采用聚合函数AVG进行聚合查询,若直接在各节点进行聚合查询,各个节点的聚合查询结果如下,节点1聚合查询后的结果为:46;节点2聚合查询后的结果为:25;节点3聚合查询后的结果为:31;节点4聚合查询后的结果为:32;则最后将各节点聚合查询后得到数据汇总再进行聚合查询,得到的结果为:28.75,而上述四个节点中所有数据的真正平均值应为:30.67(为保留小数点后两位的数据),显然,直接在各节点上执行求平均值的聚合查询后汇总得到的结果不正确,因此,在采用非简单聚合函数进行聚合查询时需要对非简单聚合函数进行改写,以AVG为例,可以分解为简单聚合函数COUNT和SUM,分两阶段进行,如图2所示,其中对于AVG的聚合查询,第一阶段在四个第一级节点(节点1、节点2、节点3和节点4)执行的操作为过滤查询和聚合查询,具体的聚合查询为两个聚合查询操作,即:COUNT聚合查询和SUM聚合查询,第一级节点执行完成后,将结果集汇总到第二级节点,其中第二级节点可以根据具体数据聚合查询的处理需求选择节点1、节点2、节点3或节点4中的一个。第二级节点对汇总的结果进行最终的聚合查询。具体的聚合查询为,第一级节点对于各自存储的数据进行COUNT(计数)和SUM(求和)的聚合查询,第二级节点得到汇总的COUNT和SUM结果,将多个COUNT结果进行加和合并,对多个SUM结果进行加和合并后,将加和合并后的SUM结果除以加和合并后的COUNT结果,得到最终的聚合查询结果。还以上面四个节点中存储的数据为例,进行说明。
节点1中的数据为:46;
节点2中的数据为:3、56、17、24;
节点3中的数据为:43、19;
节点4种的数据为:20、39、90、22、11。
第一级节点执行COUNT和SUM聚合查询后得到的结果一次分别为:COUNT为1和SUM为46、COUNT为4和SUM为100、COUNT为2和SUM为62、COUNT为5和SUM为160,第二级节点将上述结果进行聚合查询,具体将COUNT结果加和合并为12,SUM结果加和合并为368后,AVG=SUM/COUNT=368/12=30.67(为保留小数点后两位的数据),得到最终正确的结果。
如上所述,这类非简单聚合函数,若直接在各节点上并行地执行聚合查询,会造成全局结果错误,但是通过对这类非简单聚合函数分解为简单聚合函数,则可以避免错误,得到正确的聚合查询结果。
本发明实施例中还对AVG之外的非简单聚合函数VAR、VARP、STDEV、STDEVP、BINARY_CHECKSUM、CHECKSUM_AGG和CHECKSUM的具体聚合查询处理进行了说明,具体如下:
1.VAR/VARP的SQL分解执行方式:
select var(column1)from table;
第一阶段:
select count(column1)col1,sum(column1)col2from table;
第二阶段:
select sum(power(column1-(select sum(col2)/sum(col1)from table_1),2))col3,count(column1)col4from table;
第三阶段:
VAR为:select sum(col3)/(sum(col4)-1)from table_2;
VARP为:select sum(col3)/sum(col4)from table_2
2.STDEV/STDEVP的SQL分解执行方式:
select stdev(column1)from table;
执行流程如下:
第一阶段:
select count(column1)col1,sum(column1)col2from table;
第二阶段:
select sum(power(column1-(select sum(col2)/sum(col1)from table_1),2))col3,count(column1)col4from table;
第三阶段:
select sqrt(sum(col3)/(sum(col4)-1))from table_2
3.BINARY_CHECKSUM/CHECKSUM_AGG/CHECKSUM的SQL分解执行方式(不支持对无group by SQL的并行优化):
select binary_checksum(column1)from table group by column2;
第一阶段:
select column1col1,column2col2from table;
按照col2列的值做hash重划分。
第二阶段:
select binary_checksum(col1)from table_1group by col2.
实施中,数据聚合查询的方法,可以进一步包括:当数据存在重复时,第一级节点可以采用含有DISTINCT的结构化查询语言SQL语句执行数据去重,将去重后的数据添加至列表中;
第一级节点确定GROUP BY的SQL语句,并将所述列表中的去重的数据加入到所述GROUP BY的SQL语句执行数据聚合查询;
将第一级节点执行聚合查询后得到的数据汇总至第二级节点;
第二级节点对第一级节点聚合查询后得到的数据执行去重后,确定聚合函数对去重后的数据执行聚合查询。
具体实施中,存在重复数据的情况下,数据聚合查询涉及数据去重。在SQL语句中,去重关键字为DISTINCT,对于包含DISTINCT的聚合查询,如果分布在各节点上的数据存在重复的值,那么在各节点上直接执行聚合查询,会得到错误的最终结果,即使采用简单聚合函数进行聚合查询,得到的最终结果也是错误的。在这种情况下,会涉及到分组操作,具体执行流程如下:
如图2所示,此类聚合查询同样分两阶段进行,在第一级节点上对非简单聚合函数分解为简单聚合函数,且在包含在DISTINCT聚合的查询中,依然含有DISTINCT关键字,同时将去重的数据添加到列表中(列表是指select列表),同时构造GROUP BY的SQL语句,将去重的数据加入到GROUP BY的SQL语句中进行聚合查询后,将聚合查询后得到的结果汇总到第二级节点,第二级节点构造子聚合查询语句先对重复数据进行去重操作,然后确定聚合函数进行聚合查询。下面举例,具体如下:
聚合查询为:
select count(distinct column1),sum(distinct column2),avg(distinctcolumn3)from table;
执行流程如下:
1)第一阶段:
select count(distinct column1)col1,sum(distinct column2)col2,count(distinct column3)ccol3,sum(distinct column3)scol3,column1,column2,column3from table group by column1,column2,column3
2)第二阶段:
select sum(col1),sum(col2),sum(scol3)/sum(ccol3)from(select max(col1)col1,max(col2)col2,max(ccol3)ccol3,max(scol3)scol3from table_1group bycolumn1,column2,column3)
其中table_1为第一阶段产生的结果集。
另外,本发明实施例中提出的上述聚合查询优化方式对数据的分布有一定要求,如果数据过于离散,数据通过分组和去重后,数据量减少不明显,聚合查询的耗时和现有技术相比优势不明显,而在大数据量的聚合查询时,通过对数据的分组和去重,可以有效的提升查询效率。
实施中,数据聚合查询的方法,可以进一步包括:当第一级节点或第二级节点确定聚合函数为MAX或MIN执行聚合查询时,可以省略数据去重。
具体实施中,由于聚合函数MAX和MIN的运算的特点,对于采用聚合函数MAX和MIN进行的聚合查询,不需要做这些数据去重。
实施中,当执行数据的分组聚合查询时,第一级节点可以根据含有GROUP BY的SQL语句对数据执行分组聚合查询;
将第一级节点执行数据分组聚合查询后得到的数据汇总至第二级节点;
第二级节点根据含有GROUP BY的SQL语句对第一级节点执行分组聚合查询后得到的数据执行分组聚合查询。
具体实施中,在SQL语句中,分组聚合查询,即包含GROUP BY的SQL语句的聚合查询。当执行数据的分组聚合查询时,第一级节点可以根据含有GROUP BY的SQL语句对数据执行分组聚合查询后,将第一级节点执行数据分组聚合查询后得到的数据汇总至第二级节点,由第二级节点根据含有GROUP BY的SQL语句对第一级节点执行分组聚合查询后得到的数据执行分组聚合查询。因为分组列的多样性,可能是表中的任意一列,所以对分组列和数据分布情况要进行具体分析,根据分组列的具体情况区别处理。
实施中,当分组列中含有数据的分布列时,第一级节点可以根据含有GROUP BY的SQL语句对分组列数据执行分组聚合查询,所述数据的分布列是以列表List、范围Range和/或哈希Hash的形式分布的;
将第一级节点执行数据分组聚合查询后得到的数据汇总至第二级节点。
具体实施中,当分组列包含数据的分布列,且数据的分布方式可以是以列表List、范围Range和/或哈希Hash的形式分布时,即数据是按照分组子句中某一列进行数据分布的,这种分布方式说明在各个节点进行分组聚合查询获得的就是最终结果,因此只需在各个节点并行执行分组聚合查询即可。
实施中,当分组列中不包含数据的分布列时,第一级节点可以根据含有GROUP BY的SQL语句对分组列数据执行分组聚合查询;
将第一级节点根据含有GROUP BY的SQL语句对分组列数据执行分组聚合查询后得到的数据汇总至第二级节点;
第二级节点对第一级节点分组聚合查询后的数据划分后执行分组聚合查询;
将第二级节点分组聚合查询后得到的数据汇总至第三级节点;
第三级节点对第二级节点分组聚合查询后得到的数据执行聚合查询。
具体实施中,当分组列不包含数据的分布列时,各个节点进行分组聚合查询后获得的只是部分结果,需要按照分布列重新分组后,再进行聚合查询,以获取最终结果。针对数据量的大小,执行流程分为两种:
第一种情况是在进行数据量较小的分组聚合查询时,第一级节点根据含有GROUPBY的SQL语句对数据执行分组聚合查询后,将第一级节点执行数据分组聚合查询后得到的数据汇总至第二级节点,由第二级节点根据含有GROUP BY的SQL语句对第一级节点执行分组聚合查询后得到的数据执行分组聚合查询,得到最终聚合查询结果。
图3为本发明实施例中分组列中不包含数据的分布列时大量数据聚合查询的实施流程示意图,如图所示,第二种情况是在进行数据量较大的分组聚合查询时,第一级节点根据含有GROUP BY的SQL语句对分组列数据执行分组聚合查询,将第一级节点执行分组聚合查询的结果汇总至第二级节点,第二级节点需要按照分组列对数据进行重新划分后,进行数据的分组聚合查询,第二级节点执行完分组聚合查询后,将结果汇总到最终的聚合查询处理节点-第三级节点,进行最后的聚合查询。图3中的第一级节点为三个,第二级节点为三个,第三级节点为一个,仅是作示例性说明,具体第一级节点、第二级节点和第三级节点的个数可以根据数据聚合查询的实际处理需求来确定,这里不作具体限定。
基于同一发明构思,本发明实施例中还提供了一种数据聚合查询的装置。由于该装置解决问题的原理与数据聚合查询的方法相似,因此该装置的实施可以参见数据聚合查询的方法的实施,重复之处不再赘述。
图4为本发明实施例中提供的数据聚合查询的装置结构示意图,如图所示,该数据聚合查询的装置,可以包括:
第一执行模块401,用于在第一级节点对各自存储的数据执行聚合查询,所述节点为无共享架构下的节点;
汇总模块402,用于将第一级节点执行聚合查询后得到的数据汇总至第二级节点;
第二执行模块403,用于在第二级节点对第一级节点执行聚合查询后得到的数据执行聚合查询。
实施中,第一执行模块401可以进一步用于在第一级节点对各自存储的数据执行聚合查询之前,在第一级节点对各自存储的数据执行过滤查询。
实施中,第一执行模块401可以进一步用于当第一级节点中采用非简单聚合函数执行数据聚合查询时,在第一级节点将非简单聚合函数分解为多个简单聚合函数执行数据聚合查询,其中,简单聚合函数包括以下函数之一或者其组合:SUM、COUNT、MAX和/或MIN,非简单聚合函数包括以下函数之一:AVG、CHECKSUM、BINARY_CHECKSUM、STDEV、STDEVP、VAR或VARP。
实施中,第一执行模块401可以进一步用于当数据存在重复时,在第一级节点采用含有DISTINCT的结构化查询语言SQL语句执行数据去重,将去重后的数据添加至列表中,第一级节点确定GROUPBY的SQL语句,并将所述列表中的去重的数据加入到所述GROUP BY的SQL语句执行数据聚合查询;
汇总模块402可以进一步用于将第一级节点执行聚合查询后得到的数据汇总至第二级节点;
第二执行模块403可以进一步用于在第二级节点对第一级节点聚合查询后得到的数据执行去重后,确定聚合函数对去重后的数据执行聚合查询。
实施中,第一执行模块401可以进一步用于当第一级节点确定聚合函数为MAX或MIN执行聚合查询时,省略数据去重;
第二执行模块402可以进一步用于当第二级节点确定聚合函数为MAX或MIN执行聚合查询时,省略数据去重。
实施中,第一执行模块401可以进一步用于当执行数据的分组聚合查询时,在第一级节点根据含有GROUP BY的SQL语句对数据执行分组聚合查询;
汇总模块402进一步可以用于将第一级节点执行数据分组聚合查询后得到的数据汇总至第二级节点;
第二执行模块403可以进一步用于在第二级节点根据含有GROUP BY的SQL语句对第一级节点执行分组聚合查询后得到的数据执行分组聚合查询。
实施中,第一执行模块401可以进一步用于当分组列中含有数据的分布列时,在第一级节点根据含有GROUP BY的SQL语句对分组列数据执行分组聚合查询,所述数据的分布列是以列表List、范围Range和/或哈希Hash的形式分布的;
汇总模块402可以进一步用于将第一级节点执行数据分组聚合查询后得到的数据汇总至第二级节点。
实施中,第一执行模块401可以进一步用于当分组列中不包含数据的分布列时,在第一级节点根据含有GROUP BY的SQL语句对分组列数据执行分组聚合查询;
汇总模块402可以进一步用于将第一级节点根据含有GROUP BY的SQL语句对分组列数据执行分组聚合查询后得到的数据汇总至第二级节点;
第二执行模块403可以进一步用于在第二级节点对第一级节点分组聚合查询后的数据划分后执行分组聚合查询;
汇总模块402可以进一步用于将第二级节点分组聚合查询后得到的数据汇总至第三级节点;
可以进一步包括:
第三执行模块404,用于在第三级节点对第二级节点分组聚合查询后得到的数据执行聚合查询。
本发明实施例提供的数据聚合查询的方法及装置技术方案中,由于采用分阶段的数据聚合查询执行方式,将由第一级节点对各自存储的数据进行聚合查询得到的结果汇总至第二级节点执行聚合查询,由于第一级节点汇总至第二级节点的聚合查询结果相对于第一级节点聚合查询处理前的原始数据来说,数据量小很多,且将现有技术中仅有一个节点进行的聚合查询的数据,在多个第一级节点上分阶段进行聚合查询,所以,避免了现有的数据聚合查询方案中将所有数据不做处理直接汇总到一个节点进行聚合查询处理造成的网络通信开销较大和聚合查询性能下降的问题,本发明实施例中提供的技术方案有效降低了网络通信开销,提高了数据聚合查询的效率。
为了描述的方便,以上装置的各部分以功能分为各种模块或单元分别描述。当然,在实施本发明时可以把各模块或单元的功能在同一个或多个软件或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (12)

1.一种数据聚合查询的方法,其特征在于,包括如下步骤:
第一级节点对各自存储的数据执行聚合查询,所述节点为无共享架构下的节点;
将第一级节点执行聚合查询后得到的数据汇总至第二级节点;
第二级节点对第一级节点执行聚合查询后得到的数据执行聚合查询;
进一步包括:在第一级节点对各自存储的数据执行聚合查询之前,第一级节点对各自存储的数据执行过滤查询;
进一步包括:当数据存在重复时,第一级节点采用含有DISTINCT的结构化查询语言SQL语句执行数据去重,将去重后的数据添加至列表中;
第一级节点确定GROUP BY的SQL语句,并将所述列表中的去重的数据加入到所述GROUPBY的SQL语句执行数据聚合查询;
将第一级节点执行聚合查询后得到的数据汇总至第二级节点;
第二级节点对第一级节点聚合查询后得到的数据执行去重后,确定聚合函数对去重后的数据执行聚合查询。
2.如权利要求1所述的方法,其特征在于,当第一级节点中采用非简单聚合函数执行数据聚合查询时,第一级节点将非简单聚合函数分解为多个简单聚合函数执行数据聚合查询,其中,简单聚合函数包括以下函数之一或者其组合:SUM、COUNT、MAX、MIN,非简单聚合函数包括以下函数之一:AVG、CHECKSUM、BINARY_CHECKSUM、STDEV、STDEVP、VAR、VARP。
3.如权利要求1所述的方法,其特征在于,进一步包括:当第一级节点或第二级节点确定聚合函数为MAX或MIN执行聚合查询时,省略数据去重。
4.如权利要求1所述的方法,其特征在于,当执行数据的分组聚合查询时,第一级节点根据含有GROUP BY的SQL语句对数据执行分组聚合查询;
将第一级节点执行数据分组聚合查询后得到的数据汇总至第二级节点;
第二级节点根据含有GROUP BY的SQL语句对第一级节点执行分组聚合查询后得到的数据执行分组聚合查询。
5.如权利要求4所述的方法,其特征在于,当分组列中含有数据的分布列时,第一级节点根据含有GROUP BY的SQL语句对分组列数据执行分组聚合查询,所述数据的分布列是以列表List、范围Range和/或哈希Hash的形式分布的;
将第一级节点执行数据分组聚合查询后得到的数据汇总至第二级节点。
6.如权利要求4所述的方法,其特征在于,当分组列中不包含数据的分布列时,第一级节点根据含有GROUP BY的SQL语句对分组列数据执行分组聚合查询;
将第一级节点根据含有GROUP BY的SQL语句对分组列数据执行分组聚合查询后得到的数据汇总至第二级节点;
第二级节点对第一级节点分组聚合查询后的数据划分后执行分组聚合查询;
将第二级节点分组聚合查询后得到的数据汇总至第三级节点;
第三级节点对第二级节点分组聚合查询后得到的数据执行聚合查询。
7.一种数据聚合查询的装置,其特征在于,包括:
第一执行模块,用于在第一级节点对各自存储的数据执行聚合查询,所述节点为无共享架构下的节点;
汇总模块,用于将第一级节点执行聚合查询后得到的数据汇总至第二级节点;
第二执行模块,用于在第二级节点对第一级节点执行聚合查询后得到的数据执行聚合查询;
第一执行模块进一步用于在第一级节点对各自存储的数据执行聚合查询之前,在第一级节点对各自存储的数据执行过滤查询;
第一执行模块进一步用于当数据存在重复时,在第一级节点采用含有DISTINCT的结构化查询语言SQL语句执行数据去重,将去重后的数据添加至列表中,第一级节点确定GROUPBY的SQL语句,并将所述列表中的去重的数据加入到所述GROUP BY的SQL语句执行数据聚合查询;
汇总模块进一步用于将第一级节点执行聚合查询后得到的数据汇总至第二级节点;
第二执行模块进一步用于在第二级节点对第一级节点聚合查询后得到的数据执行去重后,确定聚合函数对去重后的数据执行聚合查询。
8.如权利要求7所述的装置,其特征在于,第一执行模块进一步用于当第一级节点中采用非简单聚合函数执行数据聚合查询时,在第一级节点将非简单聚合函数分解为多个简单聚合函数执行数据聚合查询,其中,简单聚合函数包括以下函数之一或者其组合:SUM、COUNT、MAX和/或MIN,非简单聚合函数包括以下函数之一:AVG、CHECKSUM、BINARY_CHECKSUM、STDEV、STDEVP、VAR或VARP。
9.如权利要求7所述的装置,其特征在于,第一执行模块进一步用于当第一级节点确定聚合函数为MAX或MIN执行聚合查询时,省略数据去重;
第二执行模块进一步用于当第二级节点确定聚合函数为MAX或MIN执行聚合查询时,省略数据去重。
10.如权利要求7所述的装置,其特征在于,第一执行模块进一步用于当执行数据的分组聚合查询时,在第一级节点根据含有GROUP BY的SQL语句对数据执行分组聚合查询;
汇总模块进一步用于将第一级节点执行数据分组聚合查询后得到的数据汇总至第二级节点;
第二执行模块进一步用于在第二级节点根据含有GROUP BY的SQL语句对第一级节点执行分组聚合查询后得到的数据执行分组聚合查询。
11.如权利要求10所述的装置,其特征在于,第一执行模块进一步用于当分组列中含有数据的分布列时,在第一级节点根据含有GROUP BY的SQL语句对分组列数据执行分组聚合查询,所述数据的分布列是以列表List、范围Range和/或哈希Hash的形式分布的;
汇总模块进一步用于将第一级节点执行数据分组聚合查询后得到的数据汇总至第二级节点。
12.如权利要求10所述的装置,其特征在于,第一执行模块进一步用于当分组列中不包含数据的分布列时,在第一级节点根据含有GROUP BY的SQL语句对分组列数据执行分组聚合查询;
汇总模块进一步用于将第一级节点根据含有GROUP BY的SQL语句对分组列数据执行分组聚合查询后得到的数据汇总至第二级节点;
第二执行模块进一步用于在第二级节点对第一级节点分组聚合查询后的数据划分后执行分组聚合查询;
汇总模块进一步用于将第二级节点分组聚合查询后得到的数据汇总至第三级节点;
进一步包括:
第三执行模块,用于在第三级节点对第二级节点分组聚合查询后得到的数据执行聚合查询。
CN201510018619.XA 2015-01-14 2015-01-14 一种数据聚合查询的方法及装置 Active CN104504154B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510018619.XA CN104504154B (zh) 2015-01-14 2015-01-14 一种数据聚合查询的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510018619.XA CN104504154B (zh) 2015-01-14 2015-01-14 一种数据聚合查询的方法及装置

Publications (2)

Publication Number Publication Date
CN104504154A CN104504154A (zh) 2015-04-08
CN104504154B true CN104504154B (zh) 2018-01-16

Family

ID=52945551

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510018619.XA Active CN104504154B (zh) 2015-01-14 2015-01-14 一种数据聚合查询的方法及装置

Country Status (1)

Country Link
CN (1) CN104504154B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105045871B (zh) * 2015-07-15 2018-09-28 国家超级计算深圳中心(深圳云计算中心) 数据聚合查询方法及装置
CN106250519A (zh) * 2016-08-04 2016-12-21 曙光信息产业(北京)有限公司 用于并行数据库的数据查询方法和装置
CN106250566A (zh) * 2016-08-31 2016-12-21 天津南大通用数据技术股份有限公司 一种分布式数据库及其数据运算的管理方法
CN106339480A (zh) * 2016-08-31 2017-01-18 天津南大通用数据技术股份有限公司 数据分组聚合数据分布的选择方法及装置
CN106844415B (zh) * 2016-11-18 2021-08-20 北京奇虎科技有限公司 一种SparkSQL系统中的数据处理方法和装置
CN107480260B (zh) * 2017-08-16 2021-02-23 北京奇虎科技有限公司 大数据实时分析方法、装置、计算设备及计算机存储介质
CN107729365B (zh) * 2017-09-07 2020-02-07 中国科学院自动化研究所 物化视图选择和优化方法及装置
CN107918676B (zh) * 2017-12-15 2022-01-18 联想(北京)有限公司 结构化查询的资源优化方法及数据库查询系统
CN108628975B (zh) * 2018-04-25 2020-08-21 上海达梦数据库有限公司 一种数据库sql语句优化方法及装置
CN109710630A (zh) * 2018-12-25 2019-05-03 中科曙光国际信息产业有限公司 异构数据源的查询方法及装置
CN109828968B (zh) * 2019-02-19 2021-12-21 广州虎牙信息科技有限公司 一种数据去重处理方法、装置、设备、集群及存储介质
CN112182028B (zh) * 2020-09-29 2024-07-05 北京人大金仓信息技术股份有限公司 基于分布式数据库的表的数据行数查询方法和装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103136364A (zh) * 2013-03-14 2013-06-05 曙光信息产业(北京)有限公司 集群数据库系统及其数据查询处理方法
CN103310011A (zh) * 2013-07-02 2013-09-18 曙光信息产业(北京)有限公司 集群数据库系统环境下的数据查询解析方法
CN104123374A (zh) * 2014-07-28 2014-10-29 北京京东尚科信息技术有限公司 分布式数据库中聚合查询的方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8386508B2 (en) * 2008-04-28 2013-02-26 Infosys Technologies Limited System and method for parallel query evaluation

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103136364A (zh) * 2013-03-14 2013-06-05 曙光信息产业(北京)有限公司 集群数据库系统及其数据查询处理方法
CN103310011A (zh) * 2013-07-02 2013-09-18 曙光信息产业(北京)有限公司 集群数据库系统环境下的数据查询解析方法
CN104123374A (zh) * 2014-07-28 2014-10-29 北京京东尚科信息技术有限公司 分布式数据库中聚合查询的方法及装置

Also Published As

Publication number Publication date
CN104504154A (zh) 2015-04-08

Similar Documents

Publication Publication Date Title
CN104504154B (zh) 一种数据聚合查询的方法及装置
US11514045B2 (en) Structured cluster execution for data streams
CN106250519A (zh) 用于并行数据库的数据查询方法和装置
US9152669B2 (en) System and method for distributed SQL join processing in shared-nothing relational database clusters using stationary tables
US7730055B2 (en) Efficient hash based full-outer join
US9576026B2 (en) System and method for distributed SQL join processing in shared-nothing relational database clusters using self directed data streams
CN103678550B (zh) 一种基于动态索引结构的海量数据实时查询方法
CN104657446B (zh) 分表联合统计查询方法、装置和系统
CN103258049A (zh) 一种基于海量数据的关联规则挖掘方法
Ban et al. Query optimization of distributed database based on parallel genetic algorithm and max-min ant system
CN101739398A (zh) 分布式数据库多连接查询优化算法
CN105204920B (zh) 一种基于映射聚合的分布式计算作业的实现方法及装置
CN104809168A (zh) 超大规模rdf图数据的划分与并行分布处理方法
CN103177035A (zh) 一种在数据库中查询数据的装置及方法
CN105550332A (zh) 一种基于双层索引结构的起源图查询方法
CN107545005A (zh) 一种数据处理方法及装置
CN104834709B (zh) 一种基于负载均衡的并行余弦模式挖掘方法
US9934304B2 (en) Systems and methods for memory optimization interest-driven business intelligence systems
CN104303176A (zh) 查询处理
CN108228654A (zh) 一种大数据分布式存储方法和系统
CN105608077A (zh) 一种大数据分布式存储方法和系统
US9305065B2 (en) Calculating count distinct using vertical unions
CN116401277A (zh) 数据处理方法、装置、系统、设备及介质
Anyanwu et al. Algebraic optimization for processing graph pattern queries in the cloud
CN104834532B (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
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20220801

Address after: 100089 building 36, courtyard 8, Dongbeiwang West Road, Haidian District, Beijing

Patentee after: Dawning Information Industry (Beijing) Co.,Ltd.

Patentee after: DAWNING INFORMATION INDUSTRY Co.,Ltd.

Address before: 100193 No. 36 Building, No. 8 Hospital, Wangxi Road, Haidian District, Beijing

Patentee before: Dawning Information Industry (Beijing) Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20240430

Address after: Room 168, 1st Floor, Building 10, No. 1 Courtyard, Longxing Jiayuan, southeast corner of the intersection of Longhu Inner Ring Road and Longzhiyuan East Ninth Street, Zhengdong New District, Zhengzhou City, Henan Province, 450018

Patentee after: Shuguang Information Industry (Henan) Co.,Ltd.

Country or region after: China

Address before: 100089 building 36, courtyard 8, Dongbeiwang West Road, Haidian District, Beijing

Patentee before: Dawning Information Industry (Beijing) Co.,Ltd.

Country or region before: China

Patentee before: DAWNING INFORMATION INDUSTRY Co.,Ltd.

TR01 Transfer of patent right