CN104303176A - 查询处理 - Google Patents
查询处理 Download PDFInfo
- Publication number
- CN104303176A CN104303176A CN201280072765.5A CN201280072765A CN104303176A CN 104303176 A CN104303176 A CN 104303176A CN 201280072765 A CN201280072765 A CN 201280072765A CN 104303176 A CN104303176 A CN 104303176A
- Authority
- CN
- China
- Prior art keywords
- query
- sql
- inquiry
- grouping
- mda
- 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.)
- Pending
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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
-
- 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/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24537—Query rewriting; Transformation of operators
-
- 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/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24554—Unary operations; Data partitioning operations
- G06F16/24556—Aggregation; Duplicate elimination
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
- G06F16/285—Clustering or classification
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)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种用于查询处理的方法,包括:接收查询,并且通过确定所述查询是包括多个不重复的聚合(MDAS)的结构化查询语言(SQL)查询还是包括多维数据集操作、汇总操作或分组集合操作的SQL查询来确定查询类型。基于所述确定,所述方法包括:处理所述查询以生成输出,并且基于所述查询类型来对所述输出执行最大预定次数的分组操作,以生成对所述查询的响应。
Description
背景技术
具有多个不重复的聚合(aggregate)、多维数据集(cube)、汇总(rollup)和分组集合(grouping set)的查询处理可以包括:保持分组的单独的流并且然后在流上执行操作(例如,分组、联接等),以生成查询结果。流的数量以及分组或联接操作的次数与例如查询中的不重复的聚合的次数是成比例的。这引起了存储器的使用的增加,并且由此,随着用于响应查询的不重复的操作次数的增加,费用也增加了。这可以进一步导致分布式的死锁。
附图说明
本公开的特征作为示例示出并且不限制于下面的附图,在所述附图中相似的附图标记表示相似的元件,其中:
图1示出了根据本公开的示例的查询处理装置的架构;
图2示出了根据本公开的示例的用于查询处理的方法;
图3示出了根据本公开的示例的用于查询处理的方法的进一步的细节;以及
图4示出了根据本公开的示例的计算机系统。
具体实施方式
出于简洁和举例说明的目的,本公开主要通过参考示例来进行描述。在下述的描述中,阐述了许多具体的细节,以提供对本公开的全面的理解。然而,显而易见的是,可以在没有这些具体的细节的限制的情况下来实施本公开。在其他实例中,未对某些方法和结构进行详细描述,以免不必要地使本公开难以理解。
贯穿本公开,术语“一”和“一个”是要表示特定元素中的至少一个。正如本文所使用的,术语“包括”意思是包括但不限于,术语“包含”意思是包含但不限于。术语“基于”意思是“至少部分地基于”。
本文描述了查询处理装置和方法,并且所述查询处理装置和方法提供了对具有多个不重复的聚合(MDA)的结构化查询语言(SQL)查询以及具有多维数据集操作、汇总操作或分组集合操作的SQL查询的高效的应答。通常,查询处理装置包括用于接收查询的查询输入模块。查询确定模块确定SQL查询包括MDA还是多维数据集操作、汇总操作或分组集合操作。基于该确定,中间处理模块处理查询的From和Where子句,并且将结果转发至组发生器模块。组发生器模块生成分组作为特定于查询类型的输出。对于包括MDA的SQL查询,SQL-MDA分组处理模块对组发生器模块的输出执行两次连续的分组操作以应答查询。对于包括多维数据集操作、汇总操作或分组集合操作的SQL查询,SQL多维数据集、汇总或分组集合分组处理模块对组发生器模块的输出执行一次分组操作以应答查询。
所述装置和方法提供了对中间结果(或者,中间分组的结果)的处理,所述中间结果是在对具有MDA或者多维数据集操作、汇总操作或分组集合操作的SQL查询的处理期间生成的。应答上述查询类型所需的分组操作的次数也是有限制的。此外,中间结果(即,组发生器模块的输出)被保持在单个的流中,这消除了分布式死锁的可能性。
对于包括MDA的SQL查询,所使用的分组操作的次数为2次。由此,对于包括MDA的SQL查询,分组操作的次数独立于查询中的不重复的聚合的次数并且保持为2次。对于包括多维数据集操作、汇总操作或分组集合操作的SQL查询,所使用的分组操作的次数为1次。由于限制了分组操作的次数,所以也限制了所需的资源,并且因此,所需的资源与例如MDA的次数、或者多维数据集操作或汇总操作中的键值的数量、或者分组集合操作中集合的数量无关。
图1示出了根据示例的查询处理装置100的架构。参考图1,装置100被描述为包括用于接收查询104的查询输入模块102。查询104可以是包括MDA的SQL查询或者是包括多维数据集操作、汇总操作或者分组集合操作的SQL查询。查询确定模块106确定SQL查询包括MDA还是包括多维数据集操作、汇总操作或分组集合操作。基于该确定,中间处理模块108处理所述查询并且将结果转发至组发生器模块110。组发生器模块110处理所述查询和来自中间处理模块108的输入,以生成包括MDA的SQL查询的输出112,或者包括多维数据集操作、汇总操作或者分组集合操作的SQL查询的输出114。对于包括MDA的SQL查询,SQL-MDA分组处理模块116对组发生器模块110的输出112执行两次连续的分组操作以应答查询。对于包括多维数据集操作、汇总操作或分组集合操作的SQL查询,SQL多维数据集、汇总和分组集合分组处理模块118对组发生器模块110的输出114执行一次分组操作以应答查询。对于查询104的应答是由查询响应模块122在120处的输出。查询响应模块122还基于查询类型对SQL-MDA分组处理模块116和SQL多维数据集、汇总和分组集合分组处理模块118的输出执行所需的任何附加的处理。
模块102、106、108、110、116、118和122以及装置100的其他部件可以包括存储于计算机可读介质上的机器可读指令。另外,或者可替代地,模块102、106、108、110、116、118和122以及装置100的其他部件可以包括硬件或者机器可读指令与硬件的组合。
一般而言,组发生器模块110基于SQL查询包括MDA还是包括多维数据集操作、汇总操作或分组集合操作来生成用于应答查询104的分组。用于表1(即,表foo)的具有MDA的SQL查询的示例,如下:
具有MDA的SQL查询(例如,用于下面的示例的两个不重复的聚合)可以包括:select a,sum(distinct b),count(distinct c)from foo group by a。包括多维数据集操作、汇总操作和分组集合操作的SQL查询允许在单个查询中执行多级聚合。用于表1的包括多维数据集操作的SQL查询的示例可以包括:select a,b,sum(b)from foo group by cube(a,b)。用于表1的包括汇总操作的SQL查询的示例可以包括:select a,b,sum(b)from foo group by rollup(a,b)。类似地,用于表1的包括分组集合操作的SQL查询的示例可以包括:selecta,b,sum(b)from foo group by grouping sets(a,(b,c))。
一般而言,包括MDA或者多维数据集操作、汇总操作或分组集合操作的SQL查询使用已经形成并且处理过的多个组。对于包括MDA的SQL查询的上述示例,针对a的每一个唯一的值,该查询返回b的所有唯一值的总和,以及c的所有唯一值的计数。该操作基于针对a的每一个唯一值而对b和c的所有唯一值的确定,所述确定使用分组{a,b}和{a,c}。对于包括多维数据集操作的SQL查询的上述示例,该操作使用分组{}、{a}、{b}、{a,b}。对于包括汇总操作的SQL查询的上述示例,该操作使用分组{}、{a}、{a,b}。进一步地,对于包括分组集合操作的SQL查询的上述示例,该操作使用分组{a}、{b,c}。正如下面详细描述的,所述查询处理装置和方法提供用于这些不重复的分组的生成、传播以及处理。
关于对具有MDA的前述SQL查询的处理,模块110和116采用如下所示的转换:
组发生器模块110由此在前述的转换中实施了最内层的子查询(即,select a,b,null as c,0as grouping_id from foo union all select a,null,c,1from foo)。两个外层的选择块(即,select a,b,c,grouping_id from(…)group by a,b,c,grouping_id and select a,sum(b),count(c)from(…)group by a)表示由SQL-MDA分组处理模块116对组发生器模块110的输出112应用的两次分组操作。
对于一般地具有MDA的SQL查询,描述了组发生器模块110和由SQL-MDA分组处理模块116对组发生器模块110的输出112应用的两次分组操作的详述。
关于用于处理具有MDA的SQL查询的组发生器模块110的通用说明,考虑以下通用的SQL:
select g1,...,gm,agg(a1),...,agg(ak),agg(distinct d1),...,agg(distinct dn)
from<>
where<>
group by g1,...,gm
上述的具有MDA的SQL查询包含m(m≥0)个分组列(g1,…,gm)、k(k≥0)个非不重复的聚合、以及n(n>1)个不重复的聚合。由于对组发生器模块110的操作独立于上述From和Where子句(即,from<>、where<>)的内容,所以未提供对这些子句的内容的详述。
对于组发生器模块110的详述,假设“foo”表示至组发生器模块110的输入数据流(由中间处理模块108处理Where子句(即,where<>)的结果)。组发生器模块110将在输出112处输出(m+n+k+1)个列,这些列正如下面的SQL所表示:
select g1,...,gm,a1,...,ak,d1,...,null,...,null,0 as grouping_id from foo
...
union all
select g1,...,gm,null,...,null,null,...,di,...,null,i from foo
....
union all
select g1,...,gm,null,...,null,null,...,null,...,dn,n-1from foo
对于上述的具有MDA的通用SQL查询,由SQL-MDA分组处理模块116执行的两次分组操作如下所示。内层分组操作可以如下所示:
分组:
分组列:(g1,…,gm,grouping-id)
聚合:agg(a1),…,agg(ak)
外层分组操作可以如下所示:
分组:
分组列:(g1,…gm)
聚合:(agg(d1),…,agg(dn),agg_convert(a1),…,agg_convert(ak))
对于上述外层分组,agg_convert是由下述两种规则所指定的转换聚合。对于规则1,如果agg为“count”或者“count(*)”,则agg_convert为“sum”。对于规则2,如果agg既非“count”也非“count(*)”,则agg_convert同agg相同。
基于与中间处理模块108和组发生器模块110对于通用的具有MDA的SQL查询的操作相关的上述论述,首先通过处理该查询的From和Where子句(即,通用的具有MDA的SQL查询的上述示例中的Where<>子句)来处理具有MDA的SQL查询。该Where子句由中间处理模块108处理。中间处理模块108的输出被反馈至组发生器模块110,所述组发生器模块110在输出112处输出(m+n+k+1)个列。组发生器模块110的输出112被反馈至SQL-MDA分组处理模块116,所述SQL-MDA分组处理模块116对输出112执行两次连续的分组操作以应答查询。
描述了对于具有MDA的SQL查询的组发生器模块110的操作的示例。包括MDA的SQL查询与如下所示的表2(即,表Orders)相关,该表还包括如下所示的数据:
对于表2,术语如下所示:
orderid指订单标识(ID)
prodid指产品ID
dealerid指经销商ID
amount指总额
quantity指数量
对于包括MDA的SQL查询,该查询可以指定:
select prodid,sum(distinct amount)as sum_amount,sum(distinct quantity)as
sum_quantity from orders group by prodid;
包括MDA的SQL查询的输出如表3所示:
对于图3,之前未定义的术语如下所示:
sum_amount指总额之和
sum_quantity指数量之和
为了转换包括MDA的SQL查询的上述示例,下文示出了由模块110和116应用的转换:
在包括MDA的SQL查询的上述示例中的每一个块的输出都在下面的表4-表6中给出了。
对于表4,之前未定义的术语如下所示:
grouping_id指分组ID
关于包括多维数据集操作、汇总操作或者分组集合操作的SQL查询,一般而言,组发生器模块110生成分组作为输出114。组发生器模块110的输出114被反馈至SQL多维数据集、汇总和分组集合分组处理模块118,所述SQL多维数据集、汇总和分组集合分组处理模块118对输出114执行一次分组操作以应答查询。对查询104的应答由查询响应模块122在120处输出。
包括多维数据集操作、汇总操作或者分组集合操作的通用SQL查询的示例如下所示:
select g1,…gm,agg(a1),…,agg(ak)
from<>
where<>
group by OPR(g1,…gm);
OPR(g1,…gm)可以是下面的任何一项:
cube((g1,…gm)
rollup((g1,…gm)
grouping sets(subset1(g1,…gm),…,subsetn(g1,…gm))
关于多维数据集(g1,...,gm),组发生器模块110如下所示。多维数据集(g1,...,gm)形成2m个分组(即,列(g1,...,gm)的所有可能的组合)。组发生器模块110在114输出(m+k+1)个列,这些列通过下面的SQL来表示:
假设“foo”表示至组发生器模块110的输入数据流(由中间处理模块108处理From和Where子句(即,from<>和where<>)的结果)。下面的每一个“union all”分支都将生成2m个组合中的其中一个组合。
select null,…,null,…,null,a1,…,ak,0as grouping_id from foo
union all
select g1,…,null,…,null,a1,…,ak,1from foo
…
union all
select null,…,gi,…,null,a1,…,ak,i from foo
…
union all select null,…,null,…,gi,a1,…,ak,m from foo;
…
union all
select g1,…,gi,…,gm,a1,…,ak,2m from foo
针对rollup(g1,...,gm),组发生器模块110可以如下所示。组发生器模块110输出(m+k+1)个列,这些列通过下面的SQL表示。假设“foo”表示从中间处理模块108至组发生器模块110的输入数据流。Rollup(g1,...,gm)将形成(m+1)个分组:()、(g1)、(g1,g2)、…、(g1,g2,g3)、…、(g1,g2,…,gm)。下面的每一个“union all”分支将生成上面的(m+1)个分组中的其中一个分组,如下所示:
select null,…,null,…,null,a1,…,ak,0as grouping_id from foo
union all
select g1,…,null,…,null,a1,…,ak,1from foo
union all
select null,…,gi,…,null,a1,…,ak,i from foo
union all
select null,…,null,…,gi,a1,…,ak,m from foo;
关于分组集合(子集1(g1,...,gm),…,子集n(g1,...,gm)),组发生器模块110可以如下所示。组发生器模块110输出(m+k+1)个列,这些列通过下面的SQL表示。假设“foo”表示从中间处理模块108至组发生器模块110的输入数据流。分组集合(子集1(g1,...,gm),…,子集n(g1,...,gm))将形成(n)个分组子集1(g1,...,gm),…,子集n(g1,...,gm)。下面的每一个“union all”分支将生成上面的(n)个分组中的其中一个分组。
select subset_1(g1,...,gm),a1,...,ak,0as grouping_id from foo
union all
...
select subset_i(g1,...,gm),a1,...,ak,i from foo
...
union all
select subset_n(g1,...,gm),a1,...,ak,n from foo
接收组发生器模块110的输出114的SQL多维数据集、汇总和分组集合分组处理模块118如下所示。SQL多维数据集、汇总和分组集合分组处理模块118的分组操作如下进行:
分组:
分组列:(g1,...,gm,grouping_id)
聚合:(agg(a1),…,agg(ak))
基于与对于包括多维数据集操作、汇总操作和分组集合操作的SQL查询的组发生器模块110的操作相关的上述论述,一般而言,首先通过处理查询的From和Where子句(即,包括多维数据集操作、汇总操作和分组集合操作的通用的SQL查询的上述示例中的where<>子句)来处理包括多维数据集操作、汇总操作和分组集合操作的SQL查询。Where子句由中间处理模块108处理。中间处理模块108的输出被反馈至组发生器模块110。组发生器模块110的输出114被反馈至SQL多维数据集、汇总和分组集合分组处理模块118,其对输出114执行一次分组操作以应答查询。对查询104的应答由查询响应模块122在120处输出。
描述了用于包括多维数据集操作的SQL查询的组发生器模块110的操作的示例。包括多维数据集操作的SQL查询与之前描述的表2(即,表Orders)相关。对于包括多维数据集操作的SQL查询,所述查询可以指出为:
select prodid,dealerid,sum(amount)as sum_amount,sum(quantity)as
sum_quantity
from orders
group by cube(prodid,dealerid)
包括多维数据集操作的SQL查询的输出如表7所述:
为了转换包括多维数据集操作的SQL查询的上述示例,下文示出的转换是由模块110和118所应用的:
正如由组发生器模块110和SQL多维数据集、汇总和分组集合分组处理模块118所处理的,包括多维数据集操作的SQL查询的上述示例中的内层和外层查询块的输出,分别如下面的表8和表9所示。
描述了用于包括汇总操作的SQL查询的组发生器模块110的操作的示例。包括汇总操作的SQL查询与之前描述的表2(即,表Orders)相关。对于包括汇总操作的SQL查询,所述查询可以指出为:
select prodid,dealerid,sum(amount)as sum_amount,sum(quantity)as
sum_quantity
from orders
group by rollup(prodid,dealerid)
包括汇总操作的SQL查询的输出如表10所述:
为了转换包括汇总操作的SQL查询的上述示例,下文示出的转换是由模块110和118应用的:
正如由组发生器模块110和SQL多维数据集、汇总和分组集合分组处理模块118所处理的,包括汇总操作的SQL查询的上述示例中的内层和外层查询块的输出,分别如下面的表11和表12所示。
描述了用于包括分组集合操作的SQL查询的组发生器模块110的操作的示例。包括分组集合操作的SQL查询与之前描述的表2(即,表Orders)相关。对于包括分组集合操作的SQL查询,所述查询可以指出为:
select prodid,dealerid,sum(amount)as sum_amount,sum(quantity)as
sum_quantity
from orders
group by grouping sets(dealerid,(dealerid))
包括分组集合操作的SQL查询的输出如表13所指出:
为了转换包括分组集合操作的SQL查询的上述示例,下文示出的转换是由模块110和118应用的:
正如由组发生器模块110和SQL多维数据集、汇总和分组集合分组处理模块118所处理的,包括分组集合操作的SQL查询的上述示例中的内层和外层查询块的输出,分别如下面的表14和表15所示。
图2和图3示出了用于查询处理的方法200和300的流程图,所述查询处理与上面详细描述了其结构的查询处理装置100的示例相对应。方法200和300可以参考图1作为示例且非限制地在查询处理装置100上实施。方法200和300可以在其他装置上实践。
参考图2,对于方法200,在框201处,接收查询。例如,参考图1,查询输入模块102接收查询104。
在框202处,对于查询是包括MDA的SQL查询还是包括多维数据集操作、汇总操作或者分组集合操作的SQL查询做出确定。例如,参考图1,查询确定模块106确定SQL查询是包括MDA还是多维数据集操作、汇总操作或者分组集合操作。
在框203处,基于所述确定,处理该查询以生成输出。例如,参考图1,中间处理模块108处理查询的From和Where子句,并且将该结果转发至组发生器模块110。组发生器模块110处理所述查询和来自中间处理模块108的输入以生成用于包括MDA的SQL查询的输出112或者用于包括多维数据集操作、汇总操作或者分组集合操作的SQL查询的输出114。
在框204处,基于查询类型,对输出执行最大预定次数的分组操作以生成对查询的响应。例如,参考图1,SQL-MDA分组处理模块116对组发生器模块110的输出112执行两次连续的分组操作以应答查询。对于包括多维数据集操作、汇总操作或者分组集合操作的SQL查询,SQL多维数据集、汇总和分组集合分组处理模块118对组发生器模块110的输出114执行一次分组操作以应答查询。
参考图3,对于方法300,在框301处,接收查询。例如,参考图1,查询输入模块102接收查询104。
在框302处,对于查询是包括MDA的SQL查询还是包括多维数据集操作、汇总操作或者分组集合操作的SQL查询来做出确定。例如,参考图1,查询确定模块106确定SQL查询是包括MDA还是多维数据集操作、汇总操作或者分组集合操作。
在框303处,处理查询的From和Where子句。例如,参考图1,中间处理模块108处理查询的From和Where子句,并且将结果转发至组发生器模块110。
在框304处,对于包括MDA的SQL查询,生成第一输出。例如,参考图1,组发生器模块110处理所述查询和来自中间处理模块108的输入,以生成包括MDA的SQL查询的输出112。
在框305处,对于包括多维数据集操作、汇总操作或者分组集合操作的SQL查询,生成第二输出。例如,参考图1,组发生器模块110处理所述查询和来自中间处理模块108的输入,以生成用于包括多维数据集操作、汇总操作或者分组集合操作的SQL查询的输出114。
在框306处,对于包括MDA的SQL查询,生成并且执行内层和外层分组操作。例如,参考图1,SQL-MDA分组处理模块116对组发生器模块110的输出112执行两次连续的分组操作以应答包括MDA的SQL查询。
在框307处,对于包括多维数据集操作的SQL查询,生成2m个分组,其中m是用于多维数据集操作的分组列的数量。例如,cube(g1,...,gm)形成2m个分组,(即,列(g1,...,gm)的所有可能的组合)。
在框308处,对于包括汇总操作的SQL查询,生成m+1个分组,其中m是用于汇总操作的分组列的数量。例如,组发生器模块110输出m+1个分组,每一个分组都具有(m+k+1)个列,对于包括汇总操作的SQL查询,其具有m个分组列和k个聚合。
在框309处,对于包括分组集合操作的SQL查询,生成n个分组,其中n是用于分组集合操作的集合的数量。例如,组发生器模块110输出n个分组,每一个分组都具有(m+k+1)个列,对于包括分组集合操作的SQL查询,其具有n个分组集合,m个分组列和k个聚合。
在框310处,对于包括多维数据集操作、汇总操作或者分组集合操作的SQL查询,对组发生器模块的输出执行一次分组操作以应答查询。例如,参考图1,SQL多维数据集、汇总或者分组集合分组处理模块118对组发生器模块110的输出114执行一次分组操作以应答包括多维数据集操作、汇总操作或者分组集合操作的SQL查询。
图4示出了可以与本文所描述的示例一起使用的计算机系统。所述计算机系统表示包括部件的通配平台,所述部件可以在服务器或另一计算机系统中。所述计算机系统可以被用作装置100的平台。所述计算机系统可以通过处理器或者其他硬件处理电路来执行本文所描述的方法、功能和其他处理。这些方法、功能和其他处理可以体现为存储在计算机可读介质上的机器可读指令,所述计算机可读介质是非暂时性的,例如,硬件存储装置(例如,RAM(随机存取存储器)、ROM(只读存储器)、EPROM(可擦、可编程ROM)、EEPROM(电可擦、可编程ROM)、硬盘和闪存存储器)。
所述计算机系统包括可以实施或者执行机器可读指令的处理器402,所述机器可读指令履行本文所描述的方法、功能和其他处理中的某些或者全部。来自处理器402的命令和数据通过通信总线404来进行传送。所述计算机系统还包括:主存储器406,例如,随机存取存储器(RAM),用于处理器402的机器可读指令和数据可以在运行时驻存于其中;以及,第二数据存储装置408,其可以是非易失性的并且存储机器可读指令和数据。所述存储器和数据存储装置是计算机可读介质的示例。存储器406可以包括模块420,所述模块420包括在运行时期间驻存于存储器406中并且由处理器402执行的机器可读指令。模块420可以包括图1所示的装置的模块102、106、108、110、116、118和122。
所述计算机系统可以包括I/O设备410,例如,键盘、鼠标、显示器等。所述计算机系统可以包括用于连接至网络的网络接口412。其他公知的电子部件可以在所述计算机系统中被添加或者替代。
本文所描述和示出的内容为示例连同所述示例的某些变型。本文所使用的术语、描述和附图仅作为举例说明进行阐述,并不表示为限制。在主题的精神和范围内许多变型是可能的,所述主题是要由以下的权利要求书—及其等效物—限定,在权利要求书中,除非另有说明,否则所有术语都被表示为其最广泛合理的意义。
Claims (15)
1.一种用于查询处理的方法,所述方法包括:
接收查询;
通过确定所述查询是包括多个不重复的聚合(MDA)的结构化查询语言(SQL)查询还是包括多维数据集操作、汇总操作或分组集合操作的SQL查询来确定查询类型;
基于所述确定,处理所述查询以生成输出;以及
由处理器,基于所述查询类型来对所述输出执行最大预定次数的分组操作,以生成对所述查询的响应。
2.如权利要求1所述的方法,其中,如果所述查询类型是包括MDA的SQL查询,则分组操作的所述最大预定次数为二次。
3.如权利要求1所述的方法,其中,如果所述查询类型是包括多维数据集操作、汇总操作或分组集合操作的SQL查询,则分组操作的所述最大预定次数为一次。
4.如权利要求1所述的方法,进一步包括:
如果所述查询类型是包括MDA的SQL查询,则生成用于所述包括MDA的SQL查询的内层和外层分组操作。
5.如权利要求4所述的方法,其中,所述内层分组操作不包括聚合。
6.如权利要求4所述的方法,其中,所述外层分组操作包括对用于所述包括MDA的SQL查询的聚合的确定。
7.如权利要求1所述的方法,进一步包括:
如果所述查询类型是包括所述多维数据集操作的SQL查询,则生成2m个分组,其中,m是用于所述多维数据集操作的分组列的数量。
8.如权利要求1所述的方法,进一步包括:
如果所述查询类型是包括所述汇总操作的SQL查询,则生成m+1个分组,其中,m是用于所述汇总操作的分组列的数量。
9.如权利要求1所述的方法,进一步包括:
如果所述查询类型是包括所述分组集合操作的SQL查询,则生成n个分组,其中,n是所述分组集合操作中的分组集合的数量。
10.如权利要求1所述的方法,进一步包括:
基于所述查询类型来生成分组以应答所述查询。
11.一种查询处理装置,包括:
存储包括机器可读指令的模块的存储器,用于:
接收查询;
通过确定所述查询是包括多个不重复的聚合(MDA)的结构化查询语言(SQL)查询还是包括多维数据集操作、汇总操作或分组集合操作的SQL查询来确定查询类型;
基于所述确定,处理所述查询以生成输出;以及
基于所述查询类型来对所述输出执行一次或两次连续的分组操作,以生成对所述查询的响应;以及
用于实施所述模块的处理器。
12.如权利要求11所述的装置,进一步包括机器可读指令,用于:
如果所述查询类型是包括MDA的SQL查询,则执行两次连续的分组操作。
13.如权利要求11所述的装置,进一步包括机器可读指令,用于:
生成用于包括MDA的SQL查询的内层和外层分组操作。
14.如权利要求11所述的装置,进一步包括机器可读指令,用于:
如果所述查询类型是所述包括多维数据集操作、汇总操作或分组集合操作的SQL查询,则执行一次分组操作。
15.一种具有存储于其上的用于查询处理的机器可读指令的非暂时性的计算机可读介质,当执行所述机器可读指令时,使计算机系统用于:
接收查询;
通过确定所述查询是包括多个不重复的聚合(MDA)的结构化查询语言(SQL)查询还是包括多维数据集操作、汇总操作或分组集合操作的SQL查询来确定查询类型;
基于所述确定,来处理所述查询以生成输出;以及
如果所述查询类型是所述包括MDA的SQL查询,则由处理器,对所述输出执行两次连续的分组操作,或者,如果所述查询类型是所述包括多维数据集操作、汇总操作或分组集合操作的SQL查询,则对所述输出执行一次分组操作,以生成对所述查询的响应。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2012/037938 WO2013172821A1 (en) | 2012-05-15 | 2012-05-15 | Query processing |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104303176A true CN104303176A (zh) | 2015-01-21 |
Family
ID=49584080
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280072765.5A Pending CN104303176A (zh) | 2012-05-15 | 2012-05-15 | 查询处理 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10180960B2 (zh) |
EP (1) | EP2850537A4 (zh) |
CN (1) | CN104303176A (zh) |
WO (1) | WO2013172821A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108431808A (zh) * | 2015-12-15 | 2018-08-21 | 微软技术许可有限责任公司 | 对分区的数据存储空间当中的结构化数据记录的提醒处理 |
CN108628975A (zh) * | 2018-04-25 | 2018-10-09 | 上海达梦数据库有限公司 | 一种数据库sql语句优化方法及装置 |
CN111488368A (zh) * | 2020-03-31 | 2020-08-04 | 摩拜(北京)信息技术有限公司 | 数据查询方法、装置及电子设备 |
CN112487032A (zh) * | 2020-11-27 | 2021-03-12 | 北京三快在线科技有限公司 | 数据查询的方法、装置、存储介质及电子设备 |
US11226985B2 (en) | 2015-12-15 | 2022-01-18 | Microsoft Technology Licensing, Llc | Replication of structured data records among partitioned data storage spaces |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10747763B2 (en) * | 2016-05-11 | 2020-08-18 | International Business Machines Corporation | Efficient multiple aggregation distinct processing |
US12067013B2 (en) | 2021-06-29 | 2024-08-20 | Microsoft Technology Licensing, Llc. | Data aggregation in a hierarchy for query execution |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020095430A1 (en) * | 1999-12-30 | 2002-07-18 | Decode Genetics Ehf | SQL query generator utilizing matrix structures |
US6507835B1 (en) * | 2000-02-17 | 2003-01-14 | International Business Machines Corporation | Generating grouping queries using tensor representations |
US20040236735A1 (en) * | 2001-01-12 | 2004-11-25 | Microsoft Corporation | Database aggregation query result estimator |
CN1588358A (zh) * | 2004-08-26 | 2005-03-02 | 陈红 | 对mdx多维数据查询语句的处理方法和系统 |
US20090228433A1 (en) * | 2008-03-07 | 2009-09-10 | International Business Machines Corporation | System and method for multiple distinct aggregate queries |
US20100094829A1 (en) * | 2008-10-14 | 2010-04-15 | Castellanos Maria G | Database query profiler |
US20100257191A1 (en) * | 2009-04-03 | 2010-10-07 | Microsoft Corporation | Data parallel query analysis |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5727196A (en) * | 1992-05-21 | 1998-03-10 | Borland International, Inc. | Optimized query interface for database management systems |
US6420526B1 (en) * | 1997-03-07 | 2002-07-16 | Human Genome Sciences, Inc. | 186 human secreted proteins |
US6112198A (en) * | 1997-06-30 | 2000-08-29 | International Business Machines Corporation | Optimization of data repartitioning during parallel query optimization |
US6212552B1 (en) * | 1998-01-15 | 2001-04-03 | At&T Corp. | Declarative message addressing |
US6240411B1 (en) * | 1998-06-15 | 2001-05-29 | Exchange Applications, Inc. | Integrating campaign management and data mining |
US6313375B1 (en) * | 1998-08-13 | 2001-11-06 | Pioneer Hi-Bred International, Inc. | Maize aquaporins and uses thereof |
US6395889B1 (en) * | 1999-09-09 | 2002-05-28 | Millennium Pharmaceuticals, Inc. | Nucleic acid molecules encoding human protease homologs |
US6430550B1 (en) | 1999-12-03 | 2002-08-06 | Oracle Corporation | Parallel distinct aggregates |
US6775682B1 (en) | 2002-02-26 | 2004-08-10 | Oracle International Corporation | Evaluation of rollups with distinct aggregates by using sequence of sorts and partitioning by measures |
US7149736B2 (en) | 2003-09-26 | 2006-12-12 | Microsoft Corporation | Maintaining time-sorted aggregation records representing aggregations of values from multiple database records using multiple partitions |
US7725455B1 (en) | 2003-12-31 | 2010-05-25 | Teradata Us, Inc. | Computing aggregates on distinct attribute values |
US7933890B2 (en) * | 2006-03-31 | 2011-04-26 | Google Inc. | Propagating useful information among related web pages, such as web pages of a website |
DE102007042898A1 (de) * | 2007-06-08 | 2008-12-11 | Sms Demag Ag | Verfahren und Vorrichtung zur Walzenschmierung |
US9323807B2 (en) * | 2010-11-03 | 2016-04-26 | Sap Se | Graphical manipulation of data objects |
US9965514B2 (en) * | 2014-12-19 | 2018-05-08 | Software Ag Usa, Inc. | Techniques for real-time generation of temporal comparative and superlative analytics in natural language for real-time dynamic data analytics |
-
2012
- 2012-05-15 WO PCT/US2012/037938 patent/WO2013172821A1/en active Application Filing
- 2012-05-15 US US14/398,229 patent/US10180960B2/en active Active
- 2012-05-15 EP EP12876711.8A patent/EP2850537A4/en not_active Withdrawn
- 2012-05-15 CN CN201280072765.5A patent/CN104303176A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020095430A1 (en) * | 1999-12-30 | 2002-07-18 | Decode Genetics Ehf | SQL query generator utilizing matrix structures |
US6507835B1 (en) * | 2000-02-17 | 2003-01-14 | International Business Machines Corporation | Generating grouping queries using tensor representations |
US20040236735A1 (en) * | 2001-01-12 | 2004-11-25 | Microsoft Corporation | Database aggregation query result estimator |
CN1588358A (zh) * | 2004-08-26 | 2005-03-02 | 陈红 | 对mdx多维数据查询语句的处理方法和系统 |
US20090228433A1 (en) * | 2008-03-07 | 2009-09-10 | International Business Machines Corporation | System and method for multiple distinct aggregate queries |
US20100094829A1 (en) * | 2008-10-14 | 2010-04-15 | Castellanos Maria G | Database query profiler |
US20100257191A1 (en) * | 2009-04-03 | 2010-10-07 | Microsoft Corporation | Data parallel query analysis |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108431808A (zh) * | 2015-12-15 | 2018-08-21 | 微软技术许可有限责任公司 | 对分区的数据存储空间当中的结构化数据记录的提醒处理 |
US11226985B2 (en) | 2015-12-15 | 2022-01-18 | Microsoft Technology Licensing, Llc | Replication of structured data records among partitioned data storage spaces |
CN108628975A (zh) * | 2018-04-25 | 2018-10-09 | 上海达梦数据库有限公司 | 一种数据库sql语句优化方法及装置 |
CN111488368A (zh) * | 2020-03-31 | 2020-08-04 | 摩拜(北京)信息技术有限公司 | 数据查询方法、装置及电子设备 |
CN112487032A (zh) * | 2020-11-27 | 2021-03-12 | 北京三快在线科技有限公司 | 数据查询的方法、装置、存储介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
US10180960B2 (en) | 2019-01-15 |
US20150088865A1 (en) | 2015-03-26 |
WO2013172821A1 (en) | 2013-11-21 |
EP2850537A4 (en) | 2015-09-23 |
EP2850537A1 (en) | 2015-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104303176A (zh) | 查询处理 | |
US11120026B1 (en) | System and method for executing queries on multi-graphics processing unit systems | |
CN104182405B (zh) | 一种连接查询方法及装置 | |
US9152669B2 (en) | System and method for distributed SQL join processing in shared-nothing relational database clusters using stationary tables | |
CN105630847B (zh) | 数据存储方法、数据查询方法、装置及系统 | |
CN106844405A (zh) | 数据查询方法和装置 | |
CN105205169A (zh) | 一种分布式图像索引与检索方法 | |
CN105204920B (zh) | 一种基于映射聚合的分布式计算作业的实现方法及装置 | |
CN104484398B (zh) | 数据表中的数据聚合方法和装置 | |
RU2017113620A (ru) | Составные функции разбиения | |
CN104392001B (zh) | 数据库查询方法和装置 | |
US20160283554A1 (en) | Optimizing window joins over data streams | |
CN106201537A (zh) | 一种数据处理方法及装置 | |
JP2012108635A (ja) | 分散メモリデータベースシステム、フロントデータベースサーバ、データ処理方法およびプログラム | |
CN106471501A (zh) | 数据查询的方法、数据对象的存储方法和数据系统 | |
CN106325756A (zh) | 一种数据存储、数据计算方法和设备 | |
CN103577455A (zh) | 用于数据库聚集操作的数据处理方法和系统 | |
CN104063501A (zh) | 基于hdfs的副本平衡方法 | |
CN110245155A (zh) | 数据处理方法、装置、计算机可读存储介质及终端设备 | |
CN109885651A (zh) | 一种问题推送方法和装置 | |
CN106302236A (zh) | 一种数据分流的方法及接入设备 | |
CN106227597A (zh) | 任务优先级处理方法和装置 | |
CN108182531A (zh) | 页岩气开发评价方法、装置及终端设备 | |
CN108874297A (zh) | 合并文件的方法、存储装置、存储设备和存储介质 | |
CN107735781A (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 | ||
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20160811 Address after: American Texas Applicant after: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP Address before: Texas USA Applicant before: Hewlett-Packard Development Company, Limited Liability Partnership |
|
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20150121 |
|
WD01 | Invention patent application deemed withdrawn after publication |