CN115516442A - 在有限资源下查询大数据 - Google Patents
在有限资源下查询大数据 Download PDFInfo
- Publication number
- CN115516442A CN115516442A CN202180031489.7A CN202180031489A CN115516442A CN 115516442 A CN115516442 A CN 115516442A CN 202180031489 A CN202180031489 A CN 202180031489A CN 115516442 A CN115516442 A CN 115516442A
- Authority
- CN
- China
- Prior art keywords
- bounded
- query
- evaluable
- sql
- access mode
- 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
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/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
-
- 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/24558—Binary matching operations
- G06F16/2456—Join operations
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)
- Operations Research (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种用于通过SQL聚合查询的有界评估在有限资源下查询大数据的方法和系统。一个实施例包括:接收对数据库提出的SQL聚合查询(110);检查SQL聚合查询是否在包访问模式下是有界可评估的(120);当SQL聚合查询在包访问模式下是有界可评估的,生成有界查询计划(130);对由有界查询计划标识的有界数据集执行SQL聚合查询(140)。本方法扩展了有界评估的DBMS,并为小型企业提供了在资源受限的情况下查询大数据的能力。
Description
技术领域
实施例涉及数据库存储和访问,更具体地,涉及用于通过SQL聚合查询的有界评估在有限资源下查询大数据的方法和系统。
背景技术
查询大数据可能会非常昂贵。作为一个指标,判断一个元组是否在数据集D中对SPC(选择、投影、笛卡尔积)查询Q的答案Q(D)中是NP-hard1,当Q是关系代数(用RA表示)中的查询时是PSPACE-hard1。连接两个各有1000万个元组的表需要几天的时间。人们可能会认为并行计算可以完成这项工作。然而,存在并行可扩展性无法解决的计算问题,即无论使用多少台机器,此类问题的算法的并行运行时间都可能不会减少。更糟糕的是,小型企业通常资源受限,可能负担不起大规模并行计算。
发明内容
此处提供了简化的概要,以帮助实现对随后在更详细的描述和附图中的示例性、非限制性实施例的各个方面的基本或一般理解。
本文公开的一个方面涉及一种计算机实现的方法,包括:
接收对数据库提出的SQL聚合查询;
检查所述SQL聚合查询在包访问模式下是否是有界可评估的;
当所述SQL聚合查询在包访问模式下是有界可评估的,生成有界查询计划;和
在由有界查询计划标识的有界数据集上执行所述SQL聚合查询。
在一些实施例中,进一步包括:
当所述SQL聚合查询不是有界可评估的,生成部分有界查询计划;
优化和执行所述部分有界查询计划,以最大限度地利用所述包访问模式中的访问约束。
在一些实施例中,在检查所述SQL聚合查询在包访问模式下是否有界可评估的之前,所述方法还包括:
从数据库模式的实例中发现所述包访问模式;
在所述数据库上构建所述包访问模式的索引;和
维护所述包访问模式以响应对所述数据库的更新。
在一些实施例中,检查所述SQL聚合查询在包访问模式下是有界可评估的,包括:
检查所述SQL聚合查询和所述包访问模式是否属于特殊情况;
如果所述SQL聚合查询和所述包访问模式属于特殊情况,则确定所述SQL聚合查询在所述包访问模式下是有界可评估的。
在一些实施例中,检查所述SQL聚合查询在包访问模式下是有界可评估的,还包括:
检查所述SQL聚合查询是否在用于有界可评估查询的有效语法中;
如果所述SQL聚合查询在用于有界可评估查询的有效语法中,则确定所述SQL聚合查询在所述包访问模式下是有界可评估的。
在一些实施例中,其中,当所述SQL聚合查询在所述包访问模式下是有界可评估的时,生成有界查询计划包括:
为在所述SQL聚合查询中出现的每个关系获取有限数量的数据;和
对获取的数据执行SQL聚合查询的操作。
在一些实施例中,所述SQL聚合查询包括嵌套聚合子查询。
在一些实施例中,所述包访问模式包括在数据库模式上的一组包访问约束。
另一方面涉及一种计算系统,包括:
包含指令的存储器,以及
与所述存储器通信的一个或多个处理器,其中所述一个或多个处理器执行所述指令以:
接收对数据库提出的SQL聚合查询;
检查所述SQL聚合查询是否在包访问模式下是有界可评估的;
当所述SQL聚合查询在所述包访问模式下是有界可评估的时,生成有界查询计划;和
在由有界查询计划标识的有界数据集上执行所述SQL聚合查询。
在一些实施例中,所述一个或多个处理器进一步执行所述指令以:
当所述SQL聚合查询不是有界可评估的时,生成部分有界查询计划;
优化并执行所述部分有界查询计划,以最大限度地利用所述包访问模式中的访问约束。
在一些实施例中,在检查所述SQL聚合查询在包访问模式下是否有界可评估的之前,所述一个或多个处理器进一步执行所述指令以:
从数据库模式中发现所述包访问模式;
在所述数据库上构建所述包访问模式的索引;和
维护所述包访问模式以响应对所述数据库的更新。
在一些实施例中,所述一个或多个处理器执行所述指令以检查所述SQL聚合查询是否在包访问模式下是有界可评估的,包括:
检查所述SQL聚合查询和所述包访问模式是否属于特殊情况;
如果所述SQL聚合查询和所述包访问模式属于特殊情况,则确定所述SQL聚合查询在所述包访问模式下是有界可评估的。
在一些实施例中,所述一个或多个处理器执行所述指令以检查所述SQL聚合查询是否在包访问模式下是有界可评估的,包括:
检查所述SQL聚合查询是否在用于有界可评估查询的有效语法中;
如果所述SQL聚合查询在用于有界可评估查询的有效语法中,则确定所述SQL聚合查询在所述包访问模式下是有界可评估的。
在一些实施例中,当所述SQL聚合查询在所述包访问模式下是有界可评估的时,所述一个或多个处理器执行所述指令以生成有界查询计划,包括:
为所述SQL聚合查询中出现的每个关系获取有界数量的数据;和
对获取的数据执行所述SQL聚合查询操作。
在一些实施例中,所述SQL聚合查询包括嵌套聚合子查询。
在一些实施例中,所述包访问模式包括在数据库模式上的一组包访问约束。
另一方面涉及一种计算机可读存储介质,包括计算机指令,当由所述一个或多个处理器执行所述指令时,使所述一个或多个处理器:
接收对数据库提出的SQL聚合查询;
检查所述SQL聚合查询是否在包访问模式下是有界可评估的;
当所述SQL聚合查询在所述包访问模式下是有界可评估的时,生成有界查询计划;和
在由所述有界查询计划标识的有界数据集上执行所述SQL聚合查询。
在一些实施例中,所述介质还包括使所述一个或多个处理器执行以下操作的指令:
当所述SQL聚合查询不是有界可评估的时,生成部分有界查询计划;
优化并执行所述部分有界查询计划,以最大限度地利用所述包访问模式中的访问约束。
在一些实施例中,所述介质还包括使所述一个或多个处理器执行以下操作的指令:
从数据库模式中发现所述包访问模式;
在所述数据库上构建所述包访问模式的索引;和
维护所述包访问模式以响应对所述数据库的更新。
在一些实施例中,所述介质还包括使所述一个或多个处理器执行以下操作的指令:
检查所述SQL聚合查询和所述包访问模式是否属于特殊情况;
如果所述SQL聚合查询和所述包访问模式属于特殊情况,则确定所述SQL聚合查询在所述包访问模式下是有界可评估的。
在一些实施例中,所述介质还包括使所述一个或多个处理器执行以下操作的指令:
检查所述SQL聚合查询是否在用于有界可评估查询的有效语法中;
如果所述SQL聚合查询在用于有界可评估查询的有效语法中,则确定所述SQL聚合查询在所述包访问模式下是有界可评估的。
在一些实施例中,所述介质还包括使所述一个或多个处理器执行以下操作的指令:
为所述SQL聚合查询中出现的每个关系获取有限数量的数据;和
对获取的数据执行所述SQL聚合查询操作。
在一些实施例中,所述SQL聚合查询包括嵌套聚合子查询。
在一些实施例中,所述包访问模式包括在所述数据库模式上的一组包访问约束。
附图说明
当结合附图阅读时,可以更好地理解上述概述和以下对说明性实施方式的详细描述。为了说明实施方式,在附图中示出了实施方式的示例结构;然而,实施方式不限于所公开的具体方法和工具。在附图中:
图1示出了根据一个方面的用于在有限资源下查询大数据的示例性方法的流程图;
图2示出了根据一个方面的用于在有限资源下查询大数据的另一示例性方法的流程图;
图3示出了根据一个方面的用于发现包访问模式的示例性方法的流程图;
图4示出了根据一个方面的用于检查SQL聚合查询在包访问模式下是否是有界可评估的示例性方法的流程图;
图5示出了根据一个方面的用于检查SQL聚合查询在包访问模式下是否是有界可评估的另一示例性方法的流程图;
图6示出了根据一个方面的用于生成有界查询计划的示例性方法的流程图;
图7示出了根据一个方面的用于在有限资源下查询大数据的示例性系统的框图;
图8示出了根据一个方面的用于RAaggr查询的示例性有效语法;
图9示出了根据一个方面的用于在有限资源下查询大数据的示例性框架BEAS;
图10示出了算法示例的简化图。
具体实施方式
查询大数据是小公司无法企及的,还是只是大公司的特权?是否有可能扩展DBMS以立即能够在资源受限的情况下回答对大数据集的常见查询?
最近研究了一种基于有界评估的应对挑战的方法。为了回答数据集D上的查询Q,想法是只查看D中足以计算Q(D)的“有界”部分DQ,而不是查看整个D。这可以通过使用访问模式A来实现,它是基数约束和相关索引的组合。在A下,如果对于所有符合A的数据集D,可以通过推理基数约束来识别并通过使用A的索引来获取DQ,使得(a)Q(DQ)=Q(D)和(b)DQ仅由A和Q决定,则Q是有界可评估的。换句话说,如果Q在A下是有界可评估的,则查询Q可以通过有界评估准确地回答,方法是仅访问由A中的基数限制的大小的DQ。
该理论已经过工业界的检验,并发现“将性能提高了几个数量级”。
示例1:考虑来自Facebook Graph Search的查询Q1:查找我所有在英国签到的朋友。所述查询在数据集D1上提出,具有两个关系:
(a)friend(uid,fid),说明此人fid是uid的朋友,以及(b)checkin(uid,loc,cty,date),说明此人uid在日期date在国家cty的地点loc签到。记为RA查询,Q1如下(u0表示“我”):
这里数据集D1很大,有数万亿的朋友链接和签到。直接计算Q1(D1)的成本很高。
现在考虑现实生活中的基数约束集合A1:
这里约束说明Facebook政策:每个用户的朋友限制为5000个;表示每个用户最多可以签到193个国家。可以基于在D1上构建索引,这样给定一个人,它通过访问最多5000个朋友元组返回她所有朋友的id;对于类似。总而言之,这些约束及其相关索引称为访问约束。
使用A1,我们可以通过从D1访问最多970,000个元组而不是数万亿个元组来计算Q1(D1)。(1)我们使用从最多5000个uid=u0的朋友元组的fid中获取T1。(2)对于T1中的每个fidf,我们使用获取最多193个国家值的T2。(3)我们返回T1中的一组fid,具有在T2中country=UK。无论D1有多大,该计划最多获取5000+193×5000个元组来计算Q1(D1)。因此,Q1在A1下是有界可评估的。
如示例1所示,有界评估通过访问具有有界大小的一组数据值DQ来回答大数据集上的查询Q。它通过使用与关联属性的基数约束相关联的索引检索值(即部分元组)来做到这一点。有人可能认为这也可以通过传统的仅索引计划来进行查询优化。然而,这两个问题是不同的问题,正如它们的复杂性界限所表明的那样:决定是否可以用“有界”查询计划来回答SPC查询是EXPSPACE-hard的,而在PTIME中决定它是否具有仅索引计划。
虽然有界评估很有前景,但从理论到系统还有更多工作要做。有界评估仅针对集语义下的RA查询进行了研究。在现实世界中,查询通常用RAaggr表示,即在包语义下通过聚合扩展的RA。RAaggr可以表达所有不携带算术表达式的SQL(结构化查询语言)查询。
示例2:回想示例1中的查询Q1和访问模式A1。考虑查询Q2以查找我的每个朋友在英国签到的次数。记成RAaggr,Q2是:
Q2=gpBy(Q3,uid,count(cty)),其中
这里gpBy(Q3,uid,count(cty))按属性uid对Q3的结果进行分组,并为每个组计算count(cty)。与Q1相比,A1并不能帮助我们回答Q2。使用我们可以为每个朋友x获取一组不同的国家。但是,x可能有多个英国签到。在包语义下,访问模式不再满足RAaggr的需求。
为了便于描述实施例,本公开首先定义了包访问模式,然后在包语义下制定了RAaggr查询的有界评估、聚合与否,并进一步提供了相关的理论和证明。
RAaggr和包访问模式
RAaggr是RA的扩展,具有group-by构造和嵌套的聚合子查询。
gpBy(Q,X,agg1(V1),...,aggm(Vm)),
其中(a)Q是一个RAaggr查询,(b)X是group-by的一组属性,(c)aggi是聚合函数max、min、count、sum、avg中的一个,和(d)V1,...,Vm是属性,使得形成Q的输出关系。我们将aggi(Vi)称为属性Vi上的聚合字段。当从上下文中清楚时,我们将运算符写为gpBy(Q,X,agg(V))。由于Q本身可能包含聚合运算符,因此RAaggr查询中的聚合可能是任意嵌套的。
在SQL语法中,所述运算符可以写成
selectX,agg1(V1),...,aggm(Vm)from Q group byX
示例3:示例2中的查询Q2是RAaggr查询。
作为另一个示例,具有嵌套聚合的RAaggr查询是关系R(A,B,C)和S(E,F,W)上的Q4:
包访问模式。为了支持包语义,本公开将访问模式扩展到包访问模式。在数据库模式R上,包访问模式B是一组如下范式的包访问约束:
φ=R(|X→Y,N|),
其中R是R中的关系模式,X和Y是R的属性集,N是正整数。
为了定义包访问约束的语义,我们使用以下符号。(1)用D表示R的数据库,用D表示R中的关系模式R的实例。(2)对于R的实例D,DY(X=a)={t[Y]|t∈D,t[X]=a},即,DY(X=a)表示对应于X值a的Y值的集合。(3)对于D中的任意XY值ab,m(D,ab)表示所述包的基数(多重集){|t∈D|t[XY]=ab|},即ab作为XY属性在D中出现的次数;我们将m(D,ab)称为ab在D中的多重性。
我们说D符合ψ,记为D|=φ,如果
(1)对于D中的任意X值a,|DY(X=a)|≤N,即D中最多存在N个不同的关联Y值;和
(2)在D上存在φ的索引,使得给定任何X值a,通过访问最多N个元组,它检索(a)D中所有相关的不同Y值b,以及(b)对于每个这样的b,多重性m(D,ab)。
直观地说,如果对于任何X值,在D中最多存在N个不同的对应Y值,则D|=φ。此外,这些Y值(部分元组)及其在D中的多重性由ψ索引,并且可以通过索引有效检索。
示例4:扩展示例1的A1,包访问模式B1由以下包访问约束组成:
οφ1=friend(|pid→fid,5000|);
οφ2=checkin(|uid→country,193|)。
这里φ2表示(a)对于任何uid u1,最多存在193个不同的国家值,并且(b)存在一个构建在朋友关系上的索引,给定任何uid u1,获取所有关联的不同国家c和对于各个国家c,在朋友关系中的多重性(u1,c);对φ2类似。
作为另一个示例,考虑示例3的Q4的包访问模式B2,其由以下包访问约束组成:
οφ3=R(|A→B,1|),
οφ4=R(|B→C,10|),和
οφ5=S(|EF→W,10|)。
我们将看到Q4可以用B2有效地回答。
R的数据库实例D符合包访问模式B,记为D|=B,如果对于每个φ∈B,D|=φ,其中φ=R(|X→Y,N|),以及D是D中R的实例。
直观地说,包访问约束φ通过合并多重性来扩展访问约束。给定D中的任何X值a,φ强制执行基数约束|DY(X=a)|≤N并返回不同的相应Y值。对于每个对应的Y值b,φ还返回ab在D中的多重性。换句话说,当我们只限制基数并检索不同的值时,集合语义下的访问约束是包访问约束的特例。
当从上下文中清楚时,下文我们也将包访问模式简单地称为访问模式。
RAaggr查询的有界评估
我们接下来为RAaggr查询定义有界评估。
多重关系。从关系模式R的实例D中,我们可以使用包访问约束R(|X→Y,N|)的索引来检索由元组组成的关系(t[X,Y],m(t[X,Y])),其中t是D中的一个元组。它是一个集合,除了D中的部分元组t[X,Y]之外,还带有多重性m(D,t[X,Y]),称为多重关系。
RAaggr运算符可以很容易地扩展到多重关系。以连接运算符为例。给定两个多重关系I1和I2,的结果,记为Is,是如下多重关系:(a)Is中的元组具有范式(t,M),其中t是使用传统的连接语义(忽略多重性)的的结果元组,并且(b)M=m(I1,t1)×m(I2,t2),其中t由t1∈I1和t2∈I2连接,并且m(Ii,ti)表示在多重性关系Ii(i∈{1,2})中元组ti的多重性。类似地,其他RAaggr运算符是在多重关系上定义的。
有界RAaggr计划。包访问模式B下的有界RAaggr计划ξ是使用新运算符fetch(T,φ)扩展传统RAaggr查询计划的代数树,其中φ=R(|X→Y,N|)是在B中的包访问约束,T是属性R[X]上的中间多重性关系。在符合φ的R的实例D上,fetch(T,φ)通过使用D上φ的索引检索中间关系S=∪a∈TDXY(X=a),其中S中的每个元组t都用多重性m(D,t)注释(也由φ检索)。
直观地说,有界RAaggr计划从一组常量(可能是)开始,通过fetch运算符从D中检索数据,并将RAaggr运算符应用于获取的数据,除了它仅通过使用B中包约束的索引来访问数据,以及允许group-by聚合并对多重关系进行操作。
我们用ξ(D)表示将计划ξ应用于D的结果。
示例5:回想示例2中的RAaggr查询Q2和示例4中的包访问模式B1。B1下用于Q2的有界计划ξQ2用代数表达式记为如下:
T1(uid,fid)=fetch({u0},φ1),
T2(uid,cty)=fetch(πfidT1,φ2),
T3(uid,cty)=σctyT2,
T4=gpBy(T3,uid,count(cty))。
作为一个更有趣的例子,回想示例3中的查询Q4和示例4中的包访问模式B2。根据φ3中的基数约束,对于任何数据库实例D|=B2中的每个A值,对于Q4的w,最多存在1个与w相关的不同B值。因此,Q4≡B2 Q6,即Q4在每个数据库D|=B2上等价于Q6,其中Q6是
Q7(y)=sum(πyR(w,1,y))。
在B2下,Q6(由此Q4)有一个有界查询计划ξQ4:
T1(B,C)=fetch({1},φ4),
T2=sum(πCT1),
T3(E,F,W)=fetch(T2×{1},φ5),
T4=avg(πWT3)。
观察到ξQ4没有明确使用φ3。然而,ξQ4的正确性依赖于φ3的基数。此外,ξQ4通过join和fetch传播Q4的常数,使得回答Q4所需的所有值及其组合都从D|=B2中获取。特别是,在存在嵌套聚合的情况下,聚合子查询的答案也可以由fetch使用,例如T3。
有界可评估的查询。在访问模式B下,RAaggr Q是有界可评估的,如果它有一个计划ξ,使得:
ξ是B下的有界RAaggr计划;
ξ中的常数{c}来自Q的选择条件;
此外,对于任何数据库D|=B,ξ(D)=Q(D)。
如果Q有这样一个有界查询计划ξ,我们记为Q≡Bξ。
这里,对于任何多重性关系D1和传统的包(多重集)D2,如果D2可以通过包含每个元组(t,m)∈D1的m个副本从D1中获得,则我们写为D1=D2。
例如,示例2的查询Q2在示例4的B1下是有界可评估的,因为它具有示例5中给出的有界计划ξQ2。类似地,示例3的Q4在示例4的B2下也是有界可评估的。
观察以下关于有界RAaggr计划ξ的内容。
规模独立。ξ中的每个fetch操作检索数据,其成本可以通过所使用的包约束来量化。因此只要D符合B,执行ξ的成本仅由包访问模式B和查询计划ξ决定,而不是由数据集D的大小决定。也就是说,在包语义下,有界RAaggr计划保留了RA查询的有界评估的规模独立性。
延迟包语义执行。由于fetch(T,ψ)返回一个集合,因此计划ξ获取并操作集合。这将包语义的过程推迟到尽可能晚的阶段。这减少了由重复值引起的性能下降,例如连接,其中重复值迅速膨胀。
纳入列式存储。有界计划ξ还可以表达对列式存储或列式存储索引的查询评估。实际上,在列式存储(或列式存储索引)中,关系模式R的属性A上的每一列(或列索引)本质上是范式的包访问约束的特例。因此,列式存储和列式存储索引是包访问模式的特例,因此它们的评估计划可以由这种包访问模式下的有界计划ξ表示。
要注意的是,列式存储的效率主要来自其实现级别的优化,例如列式压缩和向量化。虽然这些优化策略也可以用于实现包访问模式的索引,但这些不是本公开的重点。当X不一定为空时,我们在通用约束R(|X→Y,N|)下研究逻辑级别的查询评估。因此,本公开集中于将行导向的数据库作为实现包访问模式的底层平台。
有界评估的复杂性
在本节中,我们研究有界可评估性的复杂性并确定实际的可判定情况。
有界可评估性。问题陈述如下。
输入:数据库模式R,R上的包访问模式B,以及R上的RAaggr查询Q。
问题:Q在B下是否有界可评估?
这个有界可评估性问题是决定是否可以通过访问有限数量的数据来回答查询,并且是我们在有限资源下查询大数据框架的第一步的基础。
无论多么重要,问题都很难。要了解它为什么有趣,让我们考虑以下示例。
示例6:考虑在关系T(A,B)和U(E,F)上定义的包访问模式B3和SPC查询Q8:
B3由以下两个访问约束组成:
φ6=T(|A→B,N|),
φ7=U(|E→F,2|);
查询Q8=Q9-Q10,其中
乍一看,Q9和Q10似乎没有一个是有界可评估的,因此Q8也不是。事实上,我们无法使用B3中的索引检索x、y或z中的任何一个的值。然而,将B3的φ7和 放在一起,通过Q9的任何查询计划可以推断出在从实例T检索到的所有元组中,x必须等于1或y。换句话说,在B3下,Q9简化为SPCU其中 且因此,由于 很容易看出在B3下是有界可评估的,Q8也是如此。
在实践中检查RA或RAaggr查询的等价性是遥不可及的。因此,有界可评估性问题对于RA,RAaggr的一个特例,已经是不可判定的。
定理1:有界可评估性问题对于RA查询是不可判定的。
定理1在访问模式下得到验证。如上所述,访问模式是包访问模式的一种特殊情况。因此,在包访问模式下,RA的有界可评估性问题仍然无法确定。作为直接推论,有界可评估性问题对于包含RA的RAaggr是不可判定的。
可判定的情况。我们接下来确定有界可评估性是可判定的特殊情况。原因是双重的。(1)特殊情况覆盖了大量实际使用的RAaggr查询,例如TPCH和TPCDS中内置基准查询的所有SPC子查询。(2)这些情况揭示了为什么查询变得有界可评估的洞察力。在第4节中,我们将通过为有界可评估的RAaggr查询设计一种有效的语法来处理通用RAaggr查询。
(Ⅰ)PTIME情况。第一个特殊情况,用CP表示,由SPC查询和包访问模式的组合组成,可以在PTIME中检查有界可评估性,覆盖TPCH和TPCDS的所有SPC子查询。
CP类。对于同一数据库模式R上的任何包访问模式B和SPC查询Q,(B,Q)∈CP如果
(a)对于每个包约束φ=R(|X→Y,N|),N>||Q||,其中||Q||是Q中的关系原子数量;和
(b)Q没有自连接。
定理2:对于任何包访问模式B和SPC Q,
(1)在PTIME中决定(B,Q)是否在CP中;和
(2)如果(B,Q)在CP中,则在PTIME中决定Q在B下是否有界可评估。
证明:陈述(1)显然成立。下面我们通过给出一个PTIME充分必要条件来证明(2),以检查在B下Q的有界可评估性。
该条件需要覆盖SPC查询的概念。它的特点是集合cov(Q,B),它由属性组成,属性值可以通过fetch操作与B一起检索,而无需直接访问数据库中的原始数据。更具体地说,令XC Q是Q的常数选择谓词中的属性A的集合,即,对于常数c,σA=c。那么cov(Q,B)归纳定义为:
(d)cov(Q,B)不包含其他内容。
用XR Q表示在Q的选择或连接谓词中的属性集,或者是顶层投影属性。然后我们展示以下内容。
从引理3可以得出定理2(2),因为可以简单地检查PTIME中引理3在Q和B的大小中的条件。下面我们证明引理3。
假设Q在B下是有界可评估的。那么在B下存在对于Q的有界计划ξ。下面我们首先从ξ归纳构造一个查询Qξ使得(a)ξ≡Qξ≡BQ,其中Q≡BQ0意味着对于任何数据库D|=B,Q(D)=Q0(D),并且(b)Qξ满足引理3中Q的条件。然后我们证明当Qξ满足时Q也满足条件,因此引理3成立。
Qξ的构建。我们通过对ξ结构的归纳构造查询Qξ如下。
如果ξ={c},则Qξ={c}。
如果ξ=σC(ξ0)(或πY(ξ0)),那么Qξ=σC(Qξ0)(或πY(Qξ0)),其中Qξ0是为ξ0构建的查询。
如果ξ=fetch(ξ0,R(|X→Y,N|)),则Qξ=πZ(Qξ01XR(X,Y,Z))。
如果ξ=ξ1×ξ2,则Qξ=Qξ1×Qξ2。
查询Q满足条件。我们接下来证明当Qξ满足时Q满足引理3中的条件。由于对于每个包约束φ=R(|X→Y,N|)∈B,N>||Q||,从Qξ≡B Q,可以验证Qξ≡Q。因此存在从Qξ到Q的同态ρ。此外,由于Q是无自连接的,每个关系模式R(即关系原子)在Q中最多出现一次。那么Q中的任何关系原子都不能在不改变Q的情况下被删除。因此,Q是最小的(如果SPC查询没有冗余关系原子,则它是最小的)。
(a)对于Q中的每个关系R,它有一个有界子计划ξR,它获取回答Q所需的所有属性值;
(b)它通过有界子计划ξR c组合Q中每个关系R的属性值,从而保证为R获取和保存的每个(部分)元组从D中的同一元组中提取值;和
为了证明在引理3的条件下Q存在这样的计划ξ,我们只需要证明以下两个性质:
(1)的证明。我们通过为每个属性构造这样一个有界计划ξR[A]来证明(1)。要注意的是,回答Q只需要中的属性。所述计划ξR[A]是通过转换见证A∈cov(Q,B)的证明来构建的。更具体地说,由于引理3的条件对Q和B成立,对于的任何属性A使得A∈cov(Q,B),必须存在一系列规则(a)–(c)的应用,定义cov(Q,B)使得
ξ:ξ0,...,ξn,
(i)如果ri是用于XC Q中常数c的规则(a),则ξi是{c};
(iii)如果ri是规则(c),则ξi=fetch(ξj11···ξj|X|,φ=R(|X→Y,N|)),其中ξj1,...,ξj|X|是在X(j1,...,j|X|<i)中获取属性的有界计划。
通过构造,ξi是一个有界计划,它为Q获取所有A属性值。要注意的是,每个子计划ξi都是有界的,因为它不涉及关系扫描。
(2)的证明。为每个A∈XR Q用ξA构建计划ξR c,(i)其中Ai的(i∈[1,|X|])范围在X中的所有属性上,并且XAi是上面生成的用于获取Ai值的计划;(ii)如果对于φ=R(|X→Y,N|)∈B,则ξR c=fetch(T1,φ)。因为ξA对每个A∈XR Q是有界计划,ξR c在B下是有界的。
因此,当引理3的条件对Q和B成立时,上面构造的ξ是Q在B下的有界计划。
(II)NP情况。有人可能想取消在CP中查询上的条件(b)约束。这覆盖了所有SPC查询,包括具有自联接的查询。但是,除非P=NP,否则有界可评估性分析变得更加困难。
CNP类。用CNP表示包访问模式B和SPC查询Q对的集合,使得对于每个包约束φ=R(|X→Y,N|),N>||Q||。我们有以下内容。
定理4:对于任何包访问模式B和SPC Q,
(a)在PTIME中决定(B,Q)是否在CNP中;和
(b)如果(B,Q)在CNP中,则决定Q在B下是否有界可评估是NP完全的。
证明:陈述(a)是直接的。为了证明陈述(b),我们首先给出查询Q在B下对于任何(B,Q)∈CNP是有界可评估的充分必要条件。基于表征,我们随后表明检查CNP的有界可评估性是NP完全的。
令Qm为Q的最小等价查询,即Q的最小化版本,可以通过去除所有冗余关系得到。对于SPC查询Q,在同构意义下存在唯一的最小等价查询。与引理3的证明相同,可以验证以下CNP情况。
在此基础上,我们证明对于CNP中的(B,Q),决定Q在B下是否有界可评估是NP完全的。
上限。我们给出一个NP算法如下:
(a)将Q转换为它的画面表示(TQ,u);
该算法是正确的,因为如果步骤的条件(i)和(ii)
(c)使Q0成立,它们还必须使Q的最小等价查询Qm成立。事实上,ρ还确定了从(TQ,u)到(TQm,u)的同态,因为Qm是Q的最小等价查询,即因此,如果条件(ii)在Q0上成立,则通过同态ρ它也必须在Qm上成立,即引理5的条件适用于Q和B。因此,根据引理5,Q是有界可评估的。该算法在NP中,因为步骤(a)在PTIME中,并且步骤(c)在PTIME中在|Q0|、|Q|、|ρ|和|B|中而|Q0|≤|Q|和ρ=O(|Q|)。这里|Q|是Q的大小,即Q中属性和聚合字段的数量;|B|是B中包约束的总长度。
下限。为了证明这个问题是NP-hard的,我们考虑下面的问题,用MinCQ表示。
输入:关系模式R和基于R的SPC查询Q。
问题:Q是否最小化,即Q是Q的最小等价查询吗?
很容易通过从NP完全的3着色问题简化来验证MinCQ是coNP完全的。
引理6:问题MinCQ是coNP完全的。
我们证明了CNP的有界可评估性问题是NP-hard问题,通过简化MinCQ的补码。
给定一个MinCQ的实例,即关系模式R(A1,...,Am)和基于R的SPC查询Q,我们构造了一个数据库模式R0、一个基于R0的SPC查询Q0和一个包访问模式B。我们证明当且仅当Q0在B下是有界可评估的,Q不是最小的。
数据库模式R0由单个关系模式组成
查询Q中出现的关系原子的数量。
查询Q0从Q派生如下:
查询Q0保留与Q相同数量的连接和关系原子,使得每个关系原子Ri(即关系模式R∈R的重命名)被替换为Ri 0(即关系模式R0∈R0的重命名);和
直观地说,C保留了Q的所有选择条件,并在专用属性上附加连接了各对n个关系原子:(a)对于每个Bk,恰好存在两个关系原子Ri 0和Rj 0,使得Ri 0[Bk]=Rj 0[Bk];(b)对于每个Ri 0和Rj 0,恰好存在一个属性Bk,使得Ri 0[Bk]=Rj 0[Bk]。
···
我们接下来证明当且仅当Q在B下是有界可评估的,查询Q不是最小的。
假设Q不是最小的。那么Q0中的n个关系原子都不能通过最小化Q0来移除。因此,所有个属性与W一起,根据引理5对于在B中的一些必须包含在XY中。这会产生个属性。这是不可能的,因为对于任何φi∈B,仅根据上面的定义,φi包含个属性。
尽管它难以处理,但通过引理5在实践中检查CNP的有界可评估性是可行的。确实,已经有有效的算法来最小化SPC查询,即为Q计算Qm,并且Q的大小通常很小。将其中一种算法作为计算Qm的图灵机,仍然可以有效地检查通用SPC查询的有界可评估性:首先最小化Q,产生Qm,然后检查Qm和B是否满足|Qm||和|B|中PTIME中引理5的条件。
RAaggr的有效语法
本公开提出了一种检查通用RAaggr查询的有界可评估性的有效方法。我们证明,虽然问题是不可判定的(定理1),但存在用于有界可评估RAaggr查询的有效语法,这将问题简化到语法检查。此外,我们确定了RAaggr查询的两个实用子类并提供了它们的有效语法。
在访问模式B下,用于L的有界可评估查询(L指代例如RA或RAaggr)的有效语法是L的子类LL B,使得对于L中的任何Q,
(a)如果Q是有界可评估的,那么在LL B中存在一个查询Q0,使得Q≡BQ0;
(b)LL B中的每个查询Q都是有界可评估的;和
(c)它在PTIME中在查询Q的大小|Q|和B中约束的长度|B|中来检查是否Q∈LL B。
对于所有数据库D|=B,如果Q(D)=Q0(D),这里Q≡BQ0。直观地说,有效的语法将决定L查询的有界可评估性的问题简化为对LL B的语法检查。事实上,每个有界可评估的L查询都可以在B下的LL B中找到等价查询。因此,我们可以安全地用LL B中的查询来解决,因为LL B可以表示、甚至等价所有有界可评估的L查询。
在某种程度上,有效语法LL B的开发类似于关系演算中范围安全查询的研究。事实上,检查关系演算查询的“安全性”的问题也是不可判定的。尽管如此,商业DBMS通过使用范围安全关系演算查询的有效语法支持范围安全查询。我们采用相同的方法来处理RAaggr查询的有界可评估性。
下面我们为在B下有界可评估的RAaggr查询开发了这样一种有效的语法,用LB表示。
LB类。简而言之,我们用三个集合来表征LB:BA(Q,B)、BR(Q,B)和BQ(Q,B)。非正式地,在包访问模式B下,对于RAaggr查询Q,
BA(Q,B)包含Q的属性(例如A)和聚合(例如sum(A)),其值可以通过B获取;
BR(Q,B)由Q中的关系组成,其回答Q所需的部分元组可以从BA(Q,B)中获取的属性值重构;和
BQ(Q,B)包含Q的有界可评估子查询。如果Q∈BQ(Q,B),则RAaggr查询Q包含在LB中。
直观地说,这些集合表征了RAaggr查询Q,其回答Q所需的所有属性的值可以通过访问模式B下的连接和获取从Q中的常量“推导出”。这些属性参与Q的RAaggr操作,并被称为查询Q的非平凡属性(nontrivial attribute)。此类查询的类为有界可评估的RAaggr查询提供了有效的语法。
更具体地说,集合BA、BR和BQ使用图8中给出的规则以相互递归的方式定义,符号在表1中解释。直观地说,(1)图8的规则γ1包括在BA(Q,B)中的常数属性XQ c(见表1);(2)γ2将值从属性和聚合字段传播到连接属性;(3)γ3指定通过fetch传播值;(4)γ4表示如果一个子查询是有界可评估的,那么它的输出属性和聚合字段也可以被获取;(5)γ5仅当R的部分元组可以从获取的值的组合中重构时,才将关系原子R添加到BR(Q,B);(6)γ6表示如果可以正确获取子查询的所有关系,则子查询是有界可评估的。
表1:符号和定义
示例7:回想示例2中的查询Q2和示例4中的包访问模式B1。我们证明Q2∈LB1。
(1)首先,根据规则γ1,BA(Q2,B1)包括f.uid和c.cty,其中f(或c)是friend(或checkin)的简写。
(2)根据规则γ3和φ1,BA(Q2,B1)进一步包括f.fid。
(4)因为f.uid和f.fid都在BA(Q2,B1)中并且是φ1的属性,由γ5,f∈BR(Q2,B1)。类似地,由于φ2,c∈BR(Q2,B1)。要注意的是,只有c.uid和c.cty是Q在关系c中的非平凡属性,并且它们都在BA(Q2,B1)中。
(5)通过γ6,子查询Q3和查询Q2本身在BQ(Q,B)中。
再举一个例子,回想示例5中的查询Q6和示例4中的B2。接下来我们将证明Q6∈LB2。
(1)利用γ1和γ3可以很容易地推导出BA(Q6,B2)包括B和C,以及通过γ5,BR(Q6,B2)包括R。
(2)通过γ6,BQ(Q6,B2)包含Q6的子查询Q7。
(3)因此,进一步通过γ4我们有ZQ7∈BA(Q6,B2),其中ZQ7是Q7的输出,即一个聚合字段。
(5)因此,由γ5和γ6,S∈BR(Q6,B2)和Q6∈BQ(Q6,B2)。
接下来我们将证明LB确实是B下有界可评估RAaggr查询的有效语法。
定理7:在任何包访问模式B下,LB是有界可评估RAaggr查询的有效语法。
证明:通过证明以下引理,我们在下面证明了LB具有有效语法的属性(a)和(b)。我们将建设性地证明属性(c)。
(I)对于B下的任意有界计划ξ,LB中存在Q≡Bξ。(II)对于任意Q∈LB,存在B下有界计划ξ≡BQ。
这些就足够了。事实上,对于任何B下有界的Q,根据定义,必定存在一个B下有界的计划ξQ;因此,由(I),LB中存在Q0≡BξQ。另一方面,如果Q≡B Q0∈LB,由(II),Q0有一个有界计划ξ0≡B Q0≡BQ,即Q在B下也是有界可评估的。因此,LB具有有效语法的属性(a)和(b)。
我们接下来证明这两个引理。
(I)的证明。我们通过对ξ结构的归纳来证明这一点。
归纳。我们考虑ξ的结构。
(i)ξ是gpBy(ξ0,X,agg(V))。根据归纳假设,存在一个查询Q0≡Bξ0使得Q0∈LB。考虑Q=gpBy(Q0,X,agg(V))。根据LB的定义,Q0中的所有关系都在中(因为Q和Q0共享相同的非平凡属性)。因此,根据规则γ6,Q∈BQ(Q,B)。即Q∈LB。显然,Q≡Bξ。
ξ=πY(ξ0),σC(ξ0),ξ1×ξ2,ξ1∪ξ2,ξ1-ξ2的情况相似,可以用相同的方法进行验证。
(ii)ξ是fetch(ξ0,φ),具有φ=R(|X→Y,N|)。根据归纳假设,存在查询Q0≡Bξ0使得Q0∈LB。考虑Q=πR[XY](Q01ZQ0=R[X]R)。根据fetch的语义,Q≡Bξ。我们接下来证明Q∈LB。由于Q0∈LB,Q'∈BQ(Q',B)。因此按规定γ4,进一步由γ2,由γ3,因此,由γ5和γ6,Q∈BQ(Q,B)。即ξ∈LB。
其中(a)ri(i∈[1,n])是图8中的规则之一;(b)(c)对于每个步骤i,BAi、BRi和BQi中只有一个分别改变为BAi+1、BRi+1和BQi+1;(d)rn是推导出Q∈BQ(Q,B)的规则γ6。我们将的长度定义为中应用的规则数n。
基本情况。当时,规则r1只能是(i)图8的γ1,即从Q的选择A=c中包含A∈BA1;或(ii)图8的γ3,即在BA1中包含R[Y],具有对于(i),简单地令ξA={c}。那么ξA是一个有界计划,它获取A的所有必要值。对于(ii),令 然后通过fetch的语义,回答Q所需的所有R[Y]值都由ξR[Y]获取(这里我们预先重命名Q,使得不存在重复的属性名称)。
(i)如果rk+1是规则γ1且属性A=c,那么A可以以与基本情况完全相同的方式获取。
(ii)如果rk+1是规则γ2,其包括BAi+1中的属性B,且A=B,则属性A必须在k+1之前的某个步骤包含在BAi+1中。根据归纳假设,必须存在一个有界计划ξA,它获取除了B之外的所有回答Q的必要值。因此ξB=ξA也是一个有界计划,它通过条件A=B为Q获取B。
(iii)如果rk+1是规则γ3,其包括BAi+1中的R[Y],且和约束φ=R(|X→Y,N|),则存在k+1之前的步骤i1,...,ip在BA中包括R[X1],...,R[Xip]使得R[X1]∪···∪R[Xp]=R[X]。因此,根据归纳假设,R[Xj](j∈[1,p])具有有界计划ξR[Xj]。令ξR[X]为1pj=1ξR[Xj],则ξR[X]获取R[X]的所有值,这些值是回答Q所必需的。因此,进一步通过fetch的语义,R[Y]有一个计划fetch(ξR[X],φ)检索回答Q所需的所有R[Y]值。
(iv)如果rk+1是γ4,其包括从Q的子查询Qs的BAi+1中的ZQs,它在步骤j<i+1时包含在BQj中,则根据归纳假设,B下存在Qs的计划ξQs正好回答Qs。因此,我们可以简单地通过ξQs获得其输出属性ZQs的值。请注意,由于ξQs是Qs的精确计划,因此即使Qs是聚合子查询,ZQs的值也可以保证正确。
(v)若rk+1是γ5,其包括BRi+1中的R,具有R[X]和φ=R(|X→Y,N|)∈B,则根据归纳假设,存在计划ξR[X1],...,ξR[Xp]分别为Q获取R[X1],...,R[Xp]的所有必要值,使得R[X1]∪···∪R[Xp]=R[X]。因此,R[X]有一个有界计划ξR[X]=1p j=1ξR[Xj],它为Q获取所有必要的R[X]-values。由于R[XY]覆盖了用于Q的R的所有非平凡属性,因此由ξR[XY]=fetch(ξR[X],φ),我们可以获取回答Q所需的所有R[XY]-values组合。
(vi)如果rk+1是γ6,其包括在BQi+1中的Qs,那么Qs的所有关系R1,...,Rp已在之前的步骤中包含在BR中。因此,根据归纳假设,存在ξR1,...,ξRp,它们分别从R1,...,Rp中获取Q所必需的所有值。现在通过将Qs中的每个关系Ri(i∈[1,p])替换为ξRi来构建计划ξQs。那么ξQs必须是Q的Qs的查询计划,因为所有必要的值组合都可以通过ξRi(i∈[1,p])从D中检索到,然后Qs过滤和组合与D上完全相同的值。
因此,该假设对于长度为k+1的证明成立。
特别情况
这是RAaggr的两个重要子类:(1)RA由没有聚合的RAaggr查询组成;(2)RA0 aggr是RAaggr查询的类别,其中group-by聚合如果存在,则仅出现在顶层(最终操作)。在实践中发现RA和RA0 aggr是很常见的。
本公开为有界可评估的RA和RA0 aggr查询提供了有效的语法。分别用LB[RA]和LB[RA0 agg]表示LB中的RA类和RA0 aggr查询类。它们为RA和RA0 aggr产生有效的语法。
推论8:对于任何访问模式B,(1)LB[RA]是以B为界的RA查询的有效语法;(2)LB[RA0 agg]是以B为界的RA0 aggr查询的有效语法。
证明:由于在PTIME中检查一个查询是否在LB中,并且LB中的每个查询在B下都有一个有界计划,为了证明LB[RA]和分别是有界可评估RA和RA0 aggr查询的有效语法,它足以证明对于任何有界可评估的RAQ1和RA0 aggrQ2,存在Q1'∈LB[RA]]和使得和这与上述定理7的引理(I)的证明相同,通过证明每个有界RA(或)计划在LB[RA](或)中都有一个等效的查询来验证。
RA0 aggr和RA之间在其有效语法方面有着密切的联系:任何有界可评估RA0 aggr查询的有效语法也为我们提供了有界可评估RA查询的有效语法,反之亦然。对于任何RA0 aggr查询Q=gpBy(Q0,X,agg(V))的类L,用(a)L0表示RA查询Q0的类,它是嵌入在L中的RAaggr查询Q中的子查询;(b)L[RA]表示L中的RA查询类。那么我们有以下内容。
引理9:在任何包访问模式B下,
(1)如果L是有界可评估RA0 aggr的有效语法,则L[RA]是有界可评估RA的有效语法;
(2)如果L0是有界可评估RA的有效语法,则L是有界可评估RA0 aggr的有效语法。
证明:引理9(1)可以通过有效句法的定义来验证。我们在这里关注引理9(2)(引理9(1)的证明更简单)。根据有界可评估查询的定义,很容易证明以下引理:对于任何RA0 aggrQ=gpBy(Q0,X,agg(V)),在B下,当Q0是有界可评估时,Q是有界可评估的。
我们接下来使用引理来证明引理9(2)。当L0是B下的有界可评估RA查询的有效语法时,考虑L0的关联类L。(1)首先观察L中的所有查询也是有界可评估的,因为L0中的RA查询是。(2)对于任何有界可评估的RA0 aggr查询Q=gpBy(Q1,X,agg(V)),根据上面的引理,Q1在B下也是有界可评估的。因此存在Q1'∈L0使得因此Q0=gpBy(Q′1,X,agg(V))≡BQ和Q0∈L(由于)。(3)此外,在PTIME中,通过检查在PTIME中其嵌入的RA查询Q0是否在L0中来检查查询Q是否在L中。从上面的(1)、(2)和(3)可以得出引理9(2)。
通过引理9,人们可以轻松地将用于有界可评估RA查询的有效语法(例如,[10]中覆盖的RA)扩展为用于有界可评估RA0 aggr查询的有效语法。
有人可能认为这样的扩展对于RAaggr也是可能的。但是,当group-by聚合与其他RAaggr运算符嵌套时,无法进行方便的扩展。表征从聚合子查询到其他关系的值的传播,或者覆盖所有有界可评估查询直到等价对RAaggr更加困难。
命题10:对于任何包访问模式B,由B覆盖的RA查询集正确地包含在LB[RA]中。
证明:可以验证覆盖的RA查询可以在没有规则γ4的情况下用LB[RA]表示。因此它是LB的一个子类。为看到它是一个适当的子类,考虑在关系R(A,B)和S(C,D)上的LB[RA]查询Q:Q=πD((σA=1R1-σB=1R2)1A=CS),其中R1和R2重命名为R。考虑由R(|A→B,N1|),R(|B→A,N2|)、R(|B→A,N2|)和S(|C→D,N3|)组成的B。可以验证Q没有被B覆盖,因为子查询S没有被覆盖。然而,Q∈LB[RA]。
实施例
下面提供通过RAaggr查询的有界评估在有限资源下查询大数据的各种实施例。
图1示出了根据一个方面的用于在有限资源下查询大数据的示例性方法100的流程图。在110,可以接收对数据库提出的SQL聚合查询(由RAaggr表示)。在一些实施例中,数据库可以是传统的关系数据库,其可以包括任何大数据集。在一些实施例中,SQL查询可以从客户端获得,即,用户输入或计算机程序或客户端设备。在120,检查所述SQL聚合查询在包访问模式下是否是有界可评估的。在130,当所述SQL聚合查询在所述包访问模式下是有界可评估的时,生成有界查询计划。在140,在由所述有界查询计划标识的有界数据集上执行所述SQL聚合查询。
在一些实施例中,所述SQL聚合查询包括嵌套聚合子查询。
如本文所讨论的,所公开的实施例以有界评估的功能扩展了DBMS,并且旨在将对大数据的查询减少为对小数据的计算,从而使得在有限资源下查询大数据成为可能。该实施例通过有界评估访问数据库的有界部分来计算对SQL聚合查询的准确答案。
图2示出了根据一方面的用于在有限资源下查询大数据的另一示例性方法200的流程图。在210,所述方法200还包括当所述SQL聚合查询不是有界可评估的,生成部分有界查询计划。在220,优化和执行所述部分有界查询计划以最大限度地利用包访问模式中的访问约束。
该实施例提出还通过访问有限量的数据来计算在受限资源下对无界查询的近似答案,并在访问模式下提供确定性准确性保证。
图3示出了根据一个方面的用于发现包访问模式的示例性方法300的流程图。在310,所述方法300从数据库模式的实例中发现所述包访问模式。在320,所述方法300在数据库上构建所述包访问模式的索引。在330,所述方法300进一步维护所述包访问模式以响应对所述数据库的更新。在一些实施例中,所述包访问模式包括在数据库模式上的一组包访问约束。
图4示出了根据一个方面的用于检查SQL聚合查询在包访问模式下是否是有界可评估的示例性方法400的流程图。在410,所述方法400检查SQL聚合查询和所述包访问模式是否属于特殊情况。在一些实施例中,所述特殊情况可以包括在PTIME中的两类特殊情况,即CP或CNP。
在420,如果所述SQL聚合查询和所述包访问模式属于特殊情况,则所述方法400确定所述SQL聚合查询在包访问模式下是有界可评估的。
图5示出了根据一个方面的用于检查SQL聚合查询在包访问模式下是否是有界可评估的另一示例性方法500的流程图。在510,所述方法500检查所述SQL聚合查询是否在用于有界可评估查询的有效语法中。有效的语法在图7中描述,它是有界可评估RAaggr查询的核心子类,在不牺牲表达能力的情况下在语法上是可检查的。
在520,如果所述SQL聚合查询在用于有界可评估查询的有效语法中,则所述方法500确定所述SQL聚合查询在所述包访问模式下是有界可评估的。
图6示出了根据一个方面的用于生成有界查询计划的示例性方法600的流程图。在610,所述方法600为出现在SQL聚合查询中的每个关系获取有限数量的数据。在620,所述方法600对获取的数据执行所述SQL聚合查询的操作。
在一些实施例中,所述方法600可以为所述SQL聚合查询中的关系生成有界逻辑访问路径。所述有界逻辑访问路径获取关系模式的所有值(部分元组),这些值是使用包访问模式评估SQL聚合查询所必需的。直观地说,所述有界逻辑访问路径与传统DBMS访问路径的作用相同。但不是通过扫描或索引访问完整的元组,所述有界逻辑访问路径使用所述包访问模式获取值(部分元组),以致访问的数据量是有界的。
图7示出了根据一个方面的用于在有限资源下查询大数据的示例性系统700的框图。所述系统700包括接口组件710、检查组件720、计划组件730和执行组件740。所述接口组件710被配置为接收对数据库提出的SQL聚合查询。所述检查组件720被配置为检查SQL聚合查询在包访问模式下是否是有界可评估的。所述计划组件730被配置为当所述SQL聚合查询在包访问模式下是有界可评估的时生成有界查询计划。所述执行组件740被配置为对由所述有界查询计划标识的有界数据集执行所述SQL聚合查询。
在一些实施例中,所述系统700还包括发现组件750、构建组件760和维护组件770。所述发现组件750被配置为从数据库模式的实例中发现包访问模式。所述构建组件760被配置为在数据库上构建包访问模式的索引。所述维护组件770被配置为维护所述包访问模式以响应对所述数据库的更新。
在一些实施例中,所述检查组件720还用于检查所述SQL聚合查询和所述包访问模式是否属于特殊情况,如果所述SQL聚合查询和所述包访问模式属于特殊情况,则确定所述SQL聚合查询在所述包访问模式下是有界可评估的。
在一些实施例中,所述检查组件720还被配置为检查所述SQL聚合查询是否在用于有界可评估查询的有效语法中,并且如果所述SQL聚合查询在用于有界可评估查询的有效语法中,则确定所述SQL聚合查询在包访问模式下是有界可评估的。
在一些实施例中,所述计划组件730还被配置为为出现在所述SQL聚合查询中的每个关系获取有限数量的数据;并对获取的数据进行所述SQL聚合查询的操作。
在一些实施例中,所述计划组件730还被配置为在所述SQL聚合查询不是有界可评估时生成部分有界查询计划。所述执行组件740还被配置为优化和执行所述部分有界查询计划以最大限度地利用所述包访问模式中的访问约束。
示例性实施
根据上面讨论的实施例,下面介绍一个称为BEAS的示例性实现,一种用于查询大数据的框架。然后,我们提供框架底层的算法,用于检查有界可评估性并生成有界计划。
框架BEAS如图9所示。给定一个涉及对数据库模式R的实例进行查询的应用程序,BEAS工作如下。
离线预处理。如图8的C1所示,作为离线预处理,BEAS从R的(样本)实例中发现包访问模式B,在正在使用的R的数据库D上构建B的索引,并维护B以响应对D的更新。
在线处理。当用户在D上提出RAaggr查询Q时,BEAS首先检查Q在B下是否是有界可评估的(C2)。如果是,它会在B下为Q生成一个有界查询计划ξ(C3),该计划被解释为SQL查询Qξ,因此可以由底层DBMS在计划ξ标识的有界数据集DQ上直接执行(C4)。如果Q不是有界可评估的,它会为Q生成一个部分有界的查询计划ξ0,以最大限度地利用B中的访问约束(C5)。所述(部分)有界计划由DBMS优化和执行(C4)。
需要注意的是,BEAS框架不需要更改底层DBMS。实际上,它仅通过SQL与DBMS交互。因此,BEAS可以构建在任何现有DBMS之上,提供有界评估能力。
BEAS还可以在资源受限的情况下计算无界查询的近似答案,并在访问模式下提供确定性准确性的保证。
下面我们分别针对BEAS的C2和C3组件开发算法。
检查有界可评估性
我们接下来为BEAS的C2组件开发一种实用算法。在包访问模式B下,给定一个RAaggr查询Q,它决定Q是否是有界可评估的。
为此,我们首先在PTIME中检查Q和B是否属于两类特殊情况,即CP或CNP。如果是,它们的有界可评估性可以有效地确定,如定理2和4的证明所示。否则,我们检查Q是否在用于RAaggr的有效语法LB中。下面我们为此给出一个PTIME算法。
算法BEChk。该算法用BEChk表示,如算法1所示。它首先将BA(Q,B)、BR(Q,B)和BQ(Q,B)设置为然后它使用图8中的规则迭代更新BA(Q,B)、BR(Q,B)和BQ(Q,B)。在每次迭代中,它
(a)首先使用γ1、γ2和γ3计算BA(Q,B)(第3行);
(b)然后使用γ4更新BR(Q,B)(第4行);和(c)它最终使用γ5更新BQ(Q,B)(第5行)。
迭代一直持续到BQ(Q,B)不能再被更新(第6行)。如果Q∈BQ(Q,B)返回“是”,否则返回“否”(第7-8行)。在每次迭代中,步骤(b)和(c)都很简单。下面我们将更详细地讨论步骤(a)。
计算BA(Q,B)(算法1的第3行)。在每次迭代中,BA(Q,B)分两步更新,如下所示。
(1)建立通用关系。我们首先构建Q关于BQ(Q,B)的“通用模式”UQ,通过映射函数ρ将Q的属性和聚合字段映射到UQ的属性。当且仅当在Q的选择条件中,对于Q的任意两个属性R[A]和S[B],ρ(R[A])=ρ(S[B])。对于聚合字段agg(A)和属性R[B],仅当agg(A)在ZQs中时(回想表1),对于一些Qs∈BQ(Q,B),ρ(agg(A))=ρ(R[B])。因此,B中的包约束也通过ρ映射到UQ。
(2)计算fetch闭包。然后我们将BA(Q,B)的计算简化为在UQ上使用B关于ρ获取闭包的计算。对于UQ的一组W属性,它的fetch闭包,记为WB,是一组UQ的属性,使得
(iii)WB不包含任何其他内容。
令W=ρ(XQ c)∪ρ(BA(Q,B))∪S Qs∈BQ(Q,B)ρ(ZQs)。我们设置BA(Q,B)={A∈XQ|ρ(A)∈WB}(参见表1中的ZQ、XQ)。
在第一次迭代中,BECHk从更新BA(Q2,B1)开始(第3行)。为此,它通过函数ρ构建一个通用关系UQ2={f.uid,f.fid,c.cty,c.date},将c.uid映射到f.fid并保持所有其他属性不变(f和c分别代表朋友和签到)。由于ρ(XQ c 2)={f.uid,c.cty}、和BEChk将W设置为ρ(XQ c 2)并计算W的获取闭包WB1,产生WB1={f.uid,f.fid,c.cty}。因此它将BA(Q2,B1)更新为{f.uid,f.fid,c.cty}。然后它将BR(Q2,B1)更新为{f,c},因为f和c的所有非平凡属性都已经在BA(Q2,B1)中(第4行)。BEChk最终将BQ(Q2,B1)更新为{Q3,Q2}(第5行)并在下一次迭代中终止并返回“是”。
示例5中的Q6和示例4中的B2涉及更多。在第一次迭代中,BEChk通过保留R和S属性的映射函数ρ构建通用模式UQ6={A,B,C,E,F,W,F0},并将Q7的聚合字段(即输出)sum(y)映射到F0。需要注意的是,尽管由于ρ并未将sum(y)映射到E。BEChk然后计算XQ C 6在UQ6上的fetch闭包,并将BA(Q6,B2)设置为{B,C,F}。然后它发现R的所有非平凡属性都在BA(Q6,B2)中,因此将BR(Q6,B2)更新为{R}。因此,它也将BQ(Q6,B2)设置为{Q7}。在第二次迭代中,BEChk构建一个更新的通用关系UQ6={A,B,C,E,F,W},因为Q7∈BQ(Q6,B2)和它继续将BA(Q6,B2)更新为{B,C,E,F,W},将BR(Q6,B2)更新为{R,S},将BQ(Q6,B2)更新为{Q7,Q6}。它在第三次迭代后终止,并在B2下为Q6返回“是”。
正确性和复杂性。要查看BEChk正确检查图8的有效语法LB,请观察以下内容。(1)LB对于任何固定的BQ(Q,B),由规则γ1,...,γ决定的对应的BA(Q,B)就是fetch闭包WB(回想上文WB的定义)。(2)while循环将更改从BA传播到BR和BQ,最后再传播到BA,直到到达关于图8的规则的一个固定点。
BEChk可以在O(pQ(||Q|||B|+|Q|))时间内实现,其中pQ是Q中的子查询数量,||Q||是Q中关系原子的数量,|Q|是Q的关系原子和谓词中的属性和聚合字段的数量,||B||和|B|分别是B中包约束的数量和总长度(见表1)。实际上,计算fetch闭包可以在O(||Q||||B||)时间内实现,因此每次迭代都在O(||Q||||B||+|Q|)时间;最多有pQ次迭代。
算法BEChk为定理7中有效语法LB的属性(c)提供了建设性证明,即在PTIME中检查RAaggr查询Q是否Q∈LB。
这也完成了定理7的证明。
生成有界计划
我们接下来提供BEAS组件C3的底层算法,用BPlan表示。给定一个包访问模式B和一个RAaggr查询Q,该查询Q被第5.2节的BEChk确定为在B下是有界可评估的,BPlan为B下的Q生成一个有界RAaggr查询计划。
算法BPlan。给定一个有界可评估的RAaggr查询Q∈LB,BPlan为B下的Q生成一个有界计划ξQ,如下所示:(1)为出现在Q中的每个关系R获取有界数据量,以及(2)对获取的数据执行Q的操作。虽然步骤(2)很简单,但步骤(1)相当复杂。
为了执行步骤(1),BPlan生成有界逻辑访问路径(bLAP)。用于Q中关系R的bLAPξR获取R的所有值(部分元组),这些值是用B评估Q所必需的;此外,ξR是B下的有界RAaggr计划。直观地说,bLAPs与传统DBMS访问路径的作用相同。但是bLAPs不是通过扫描或索引访问完整的元组,而是使用B获取值(部分元组),这样访问的数据量是有限的。
更具体地说,我们给出了一种算法,用BAP表示,作为BPlan的子过程,以在B下为R找到bLAPξR。虽然可能存在指数级的许多这样的bLAPs,但BAP旨在以最小的成本计算那些。
在BAP为Q中的每个关系R计算bLAPξR之后,算法BPlan通过将Q中的每个R替换为其bLAPξR,并对由ξR检索到的数据执行Q的RAaggr操作,为B下的Q生成一个有界计划ξQ。
在本节的其余部分,我们将重点介绍算法BAP。
参数化成本测量。为了评估BAP发现的bLAPs的质量,我们从一类通用的成本函数开始。传统的访问路径测量评估物理表访问方法的成本,例如顺序扫描和索引扫描。这些指标不适用于bLAPs,它涉及例如fetch和join。因此,BAP采用通用成本函数c(ξR),将用户指定的函数作为参数,将ξR上的各种成本测量表示为bLAPs,例如输出大小、数据访问等。
对于B下R的bLAPξR的成本,用c(ξR)表示,在表2中归纳定义,具有五个用户可配置的参数函数Γ1、ΓU、Γ-、Γfetch和ΓgpBy。
通过参数化这些用户可配置的函数,我们可以支持bLAPs的各种测量。例如,要估计ξ的最坏情况输出大小,我们只需设置(i)为c1*c2、(ii)Γfetch(c',N)为c0*N、(iii)Γ∪(c1,c2)为c1+c2、(iv)Γ-(c1,c2)为c1以及(v)如果c≠0,ΓgpBy(c0,c)为c0,不然为1(当 时,假设λπ(X)=0)。
算法BAP。算法BAP分两个步骤工作:
(1)它将bLAPs简化为R∈BR(Q,B)的证明,并在PTIME中用有向图G(Q,B)对所有证明进行编码;和
(2)它搜索G(Q,B)以找到具有最小成本的证明,其中一个证明对应于搜索轨迹中的一个子图。
这里R∈BR(Q,B)的证明是图8中给出的规则的一系列应用。所述证明的每个步骤对应于R的bLAPξR中的一个或几个操作。
下面我们概述BAP:
(1)简化。它简化了在B下为Q的R生成bLAPs以找到R∈BR(Q,B)的证明的问题。它在加权有向图G(Q,B)中编码R∈BR(Q,B)的所有证明(因此所有bLAPs为R),其中(a)在约束中R(|X→Y,N|)∈B节点编码属性R[X]和R[XY],以及(b)节点编码Q的关系和子查询。对它们之间的值传播进行边编码。它确保R∈BR(Q,B)的每个证明都通过从虚拟节点遍历到在G(Q,B)中编码R的节点uR进行编码。图G(Q,B)最多有2||B||+|Q|节点和||B||(||B||+|Q|)边。
我们用下面的例子来说明简化图。
示例9:回想示例2的RAaggr查询Q2和示例5的Q6,以及示例4中的包访问模式B1和B2。图G(Q2,B1)和G(Q6,B2)如图10所示。这里是连接到Q中所有常量属性的虚拟节点。具有数字权重的边将使用图8的规则γ3编码推演步骤,其中权重是相应访问约束的基数N0。
(2)条件Dijkstra搜索。然后算法BAP在G(Q,B)上采用类似Dijkstra的搜索,从虚拟节点到编码R的关系节点uR,使得搜索的轨迹编码B下为R的bLAP(即证明)。它扩展了Dijkstra算法[29]如下。
有条件的扩展。用Uu表示由G(Q,B)中的节点u编码的属性、关系或子查询。请注意,Uu可以从由u的多个前趋节点编码的属性或子查询推导出来,作为R∈BR(Q,B)证明中的前提条件。为了捕获这个,在Uu可以通过例如joins或fetch从u的前趋节点获得的条件下,BAP访问一个新节点u。
一个信息更丰富的例子是S∈BR(Q6,B2)。它的证明也在示例7中描述。证明是通过从到uS的遍历编码的,即没有边(us,uQ6)的G(Q6,B2),如图10所示。需要注意的是,虽然有从到uS的两条简单路径,由于条件扩展,它们都不是有效的遍历。
由这些证明编码的bLAPs恰好是示例5中给出的Q2和Q6的子计划。实际上,B1下Q2的关系c的bLAPξc是示例5中的有界计划ξQ2的(T1,T2),并且对于f的bLAPξf就是T1。类似地,对于B2下Q6的R的bLAPξR就是示例5中ξQ4的T1;对于S的bLAPξS是ξQ4的(T1,T2,T3)。
需要注意的是,一个bLAP可能通过fetch和join涉及多个关系,例如,对于Q6的S的ξS。因此,它的成本不能通过传统的访问路径测量来评估,因为这些方法是为评估单个关系的访问方法而开发的,例如,顺序或索引扫描。
搜索修订。需要注意的是,RAaggr子查询的输出可用于获取已经推导出的属性,可能以较小的由c(ξR)降低的成本。为了保持搜索的最优性,当访问对Q的子查询进行编码的节点u时,算法BAP通过从u开始新的搜索并将所有节点标记为未访问来检查这是否会产生更好的bLAP。如果它不能进一步改进先前搜索的bLAP,它将终止。
示例11:继续示例9,假设我们使用c(ξR)来表示ξR的最坏情况输出大小(回想前面描述的参数函数)。然后BAP分别精确计算B1和B2下对于Q2和Q6的bLAP,如示例10中所述。特别是,对于B1下的Q2,c(ξf)=5000和c(ξc)=5000*193;对于B2下的Q6,c(ξR)=10和c(ξS)=10。在这种情况下,在B2下为Q6的关系S计算ξS时,由于聚合子查询Q7,它重新开始搜索一次,这不会改善bLAPsξR和ξS。
正确性和复杂性。算法BAP的正确性由以下几点保证:(1)BAP的每个搜索轨迹都对R∈BR(Q,B)的证明进行编码;(2)R∈BR(Q,B)的证明对B下对于R的bLAP进行编码。可以在O(|Q||B|(||B||+|Q|log(|Q|+2||B||)))-time(忽略c(ξR)的参数函数的复杂性)实施BAP。可以验证BAP最多重启N次,其中N是G(Q,B)中的节点数量。
最优性。算法BAP能够为c(ξR)的一大类参数函数找到最佳bLAP。
实验研究
我们通过使用有界评估扩展PostgreSQL来开发BEAS@PG。使用一个基准和两个现实生活数据集,我们进行了四组实验来评估(1)BEAS@PG与PostgreSQL的整体性能;(2)有界查询的有界评估的有效性;和(3)无界查询的有界评估的有效性。
实验设置。我们从设置开始。
基准。我们使用了TPCH基准。它使用TPCH dbgen生成8个关系,具有61个不同尺度的属性。它包含22个内置基准查询。
现实生活中的数据集。我们还使用了两个真实的数据集。
USAir carriers(AIRCA)记录美国航空公司的航班和统计数据。它包括出发和到达信息的航班准时性能数据,以及航空公司市场的承运人统计数据和航空承运人的分段数据。它有3个表,200个属性,以及大约16GB的数据,记录从1990年到1997年。
UKMOTdata(UKMOT)整合了记录MOT测试和结果的匿名数据,以及包括车辆通过英国观察点的车辆观察的路边调查。它有3个表,42个属性,从2007年到2011年大约有16GB的数据。
查询。为了测试查询结构对有界评估有效性的影响,我们设计了一个生成器,用于在两个真实数据集上生成具有不同结构的查询。更具体地说,我们为两个数据集的每一个手动创建了30个查询模板(Q1-Q15是有界可评估的,Q16-Q30是无界的),有0到4个连接。所述生成器通过使用数据集中的值随机实例化模板中的参数来填充这些模板,为每个真实数据集生成150个查询。
访问模式。我们分别在TPCH、AIRCA和UKMOT上构建了具有59、18和14个访问约束的访问模式。我们扩展了TANE,一种用于发现函数依赖的算法,首先在100MB的小样本数据集上找到候选约束φ=R(|X→Y,N|),并按其基数N对它们进行排序。然后,我们通过改变D的大小,例如200MB和500MB,来检查它们的N是否对数据集D的大小不敏感。我们选择了那些具有小且对大小不敏感的N的访问约束,使得索引的总大小最多是其D大小的3倍。
配置。对于DBMS,我们使用启用了所有优化的PostgreSQL 9.6(BEAS@PG是使用PostgreSQL 9.6构建的)。为了支持PostgreSQL,除了访问约束的索引,我们还为PostgreSQL构建了以下额外的索引:(1)对于每个访问约束R(|X→Y,N|),我们也在R上的属性X上构建了一个B-tree索引;(2)我们构建了所有的主键和外键索引;(3)我们还在数值属性上构建了B-tree。需要注意的是,这些仅适用于PostgreSQL,而不是为BEAS@PG构建的。我们将BEAS@PG的成本测量参数设置为最坏情况下的输出大小估计。
实验在Amazon EC2密集存储实例m4.xlarge上进行,该实例具有16GB内存、4个Intel Xeon E5-2676 vCPU和500GB EBS SSD存储。计划生成时间和生成计划的执行时间都包含在评估时间中。所有实验进行3次。此处报告平均值。
实验结果
我们发现以下几点:(1)BEAS@PG(在上面构建了BEAS的PostgreSQL)在所有情况下对每个查询都比PostgreSQL做得更好,即使为后者构建了额外的索引。平均而言,BEAS@PG在16GB、AIRCA和UKMOT的TPCH基准测试中分别将PostgreSQL提高了7.32、9.58×103和2.06×104倍,最好的情况下提高了40.46、3.44×104和2.52×105倍。(2)对于有界可评估的查询,BEAS@PG在AIRCA和UKMOT上分别优于PostgreSQL 1.9×104和3.6×104倍。(3)对于具有复杂连接的查询,例如非键属性的连接(AIRCA和UKMOT查询),BEAS@PG特别有效,即使对于无界查询。例如,对于在AIRCA和UKMOT上不是有界可评估的查询,BEAS@PG平均将PostgreSQL分别提高了5.97×102和1.90×103倍。对于传统DBMS表现最好的情况,例如表扫描/聚合和键-外键连接(大多数TPCH查询),BEAS@PG仍然比PostgreSQL做得更好。(4)访问模式索引的存储成本适中,分别是16GB TPCH、AIRCA和UKMOT大小的2.98、0.01和0.25倍。
应该说明的是,上述实施例可以通过硬件元件、软件元件或者软件和硬件的某种组合来实现。硬件元件可以包括电路。软件元件可以包括作为机器可读指令存储在有形的、非瞬时性的机器可读存储介质上的计算机代码。一些实施例可以以硬件、固件和软件之一或它们的组合来实现。
一些实施例可以在包括存储器的计算系统或计算设备中实现,该存储器包括指令以及一个或多个与存储器通信的处理器,所述一个或多个处理器执行指令以执行本公开中描述的功能或操作。
一些实施例还可以实现为存储在机器可读介质上的指令,该指令可以由计算平台读取和执行以执行本公开中描述的操作。机器可读介质可以包括用于以机器例如计算机可读的形式存储或传输数据的任何机制。例如,机器可读存储介质可以包括只读存储器(ROM);随机存取存储器(RAM);磁盘存储介质;光存储介质;闪存设备;或任何其他机器可读存储介质。一些实施例还可以是包括机器可读介质的软件产品,其存储指令,当执行这些指令时,使一个或多个处理器执行本公开中描述的功能或操作。
已经出于说明的目的呈现了本公开的各种实施例的描述,但并不旨在穷举或限制于所公开的实施例。在不脱离本公开的范围和精神的情况下,许多修改和变化对于本领域普通技术人员将是显而易见的。
Claims (24)
1.一种计算机实现的方法,包括:
接收对数据库提出的SQL聚合查询;
检查所述SQL聚合查询是否在包访问模式下是有界可评估的;
当所述SQL聚合查询在所述包访问模式下是有界可评估的,生成有界查询计划;和
在由所述有界查询计划标识的有界数据集上执行所述SQL聚合查询。
2.根据权利要求1所述的方法,还包括:
当所述SQL聚合查询不是有界可评估的,生成部分有界查询计划;
优化和执行所述部分有界查询计划,以最大限度地利用所述包访问模式中的访问约束。
3.根据权利要求1所述的方法,其中,在检查所述SQL聚合查询在包访问模式下是否是有界可评估的之前,还包括:
从数据库模式的实例中发现包访问模式;
在所述数据库上构建所述包访问模式的索引;和
维护所述包访问模式以响应对所述数据库的更新。
4.根据权利要求1所述的方法,其中,检查所述SQL聚合查询在包访问模式下是有界可评估的包括:
检查所述SQL聚合查询和所述包访问模式是否属于特殊情况;
如果所述SQL聚合查询和所述包访问模式属于特殊情况,则确定所述SQL聚合查询在所述包访问模式下是有界可评估的。
5.根据权利要求4所述的方法,其中,检查所述SQL聚合查询在包访问模式下是有界可评估的还包括:
检查所述SQL聚合查询是否在用于有界可评估查询的有效语法中;
如果所述SQL聚合查询在用于有界可评估查询的有效语法中,则确定所述SQL聚合查询在所述包访问模式下是有界可评估的。
6.根据权利要求1所述的方法,其中,当所述SQL聚合查询在所述包访问模式下是有界可评估的,生成有界查询计划,包括:
为在所述SQL聚合查询中出现的每个关系获取有限数量的数据;和
对获取的数据执行所述SQL聚合查询的操作。
7.根据权利要求1所述的方法,其中,所述SQL聚合查询包括嵌套聚合子查询。
8.根据权利要求3所述的方法,其中,所述包访问模式包括在数据库模式上的一组包访问约束。
9.一种计算系统,包括:
包含指令的存储器,以及
与所述存储器通信的一个或多个处理器,其中,所述一个或多个处理器执行所述指令以:
接收对数据库提出的SQL聚合查询;
检查所述SQL聚合查询是否在包访问模式下是有界可评估的;
当所述SQL聚合查询在所述包访问模式下是有界可评估的,生成有界查询计划;和
在由所述有界查询计划标识的有界数据集上执行所述SQL聚合查询。
10.根据权利要求9所述的计算系统,其中,所述一个或多个处理器进一步执行所述指令以:
当所述SQL聚合查询不是有界可评估的,生成部分有界查询计划;
优化和执行所述部分有界查询计划,以最大限度地利用所述包访问模式中的访问约束。
11.根据权利要求9所述的计算系统,其中,在检查所述SQL聚合查询在包访问模式下是否是有界可评估的之前,所述一个或多个处理器进一步执行所述指令以:
从数据库模式的实例中发现包访问模式;
在所述数据库上构建所述包访问模式的索引;和
维护所述包访问模式以响应对所述数据库的更新。
12.根据权利要求9所述的计算系统,其中,所述一个或多个处理器执行所述指令以检查所述SQL聚合查询在包访问模式下是否是有界可评估的,包括:
检查所述SQL聚合查询和所述包访问模式是否属于特殊情况;
如果所述SQL聚合查询和所述包访问模式属于特殊情况,则确定所述SQL聚合查询在所述包访问模式下是有界可评估的。
13.根据权利要求12所述的计算系统,其中,所述一个或多个处理器执行所述指令以检查所述SQL聚合查询在包访问模式下是否是有界可评估的,包括:
检查所述SQL聚合查询是否在用于有界可评估查询的有效语法中;
如果所述SQL聚合查询在用于有界可评估查询的有效语法中,则确定所述SQL聚合查询在所述包访问模式下是有界可评估的。
14.根据权利要求9所述的计算系统,其中,所述一个或多个处理器执行所述指令以检查所述SQL聚合查询在包访问模式下是否是有界可评估的,包括:
为在所述SQL聚合查询中出现的每个关系获取有限数量的数据;和
对获取的数据执行所述SQL聚合查询的操作。
15.根据权利要求9所述的计算系统,其中,所述SQL聚合查询包括嵌套聚合子查询。
16.根据权利要求11所述的计算系统,其中,所述包访问模式包括在数据库模式上的一组包访问约束。
17.一种计算机可读存储介质,包括计算机指令,当由一个或多个处理器执行指令时,使所述一个或多个处理器:
接收对数据库提出的SQL聚合查询;
检查所述SQL聚合查询是否在包访问模式下是有界可评估的;
当所述SQL聚合查询在所述包访问模式下是有界可评估的,生成有界查询计划;和
在由所述有界查询计划标识的有界数据集上执行所述SQL聚合查询。
18.根据权利要求17所述的计算机可读存储介质,还包括使所述一个或多个处理器执行以下操作的指令:
当所述SQL聚合查询不是有界可评估的,生成部分有界查询计划;
优化和执行所述部分有界查询计划,以最大限度地利用所述包访问模式中的访问约束。
19.根据权利要求17所述的计算机可读存储介质,还包括使所述一个或多个处理器执行以下操作的指令:
从数据库模式的实例中发现包访问模式;
在所述数据库上构建所述包访问模式的索引;和
维护所述包访问模式以响应对所述数据库的更新。
20.根据权利要求17所述的计算机可读存储介质,还包括使所述一个或多个处理器执行以下操作的指令:
检查所述SQL聚合查询和所述包访问模式是否属于特殊情况;
如果所述SQL聚合查询和所述包访问模式属于特殊情况,则确定所述SQL聚合查询在所述包访问模式下是有界可评估的。
21.根据权利要求20所述的计算机可读存储介质,还包括使所述一个或多个处理器执行以下操作的指令:
检查所述SQL聚合查询是否在用于有界可评估查询的有效语法中;
如果所述SQL聚合查询在用于有界可评估查询的有效语法中,则确定所述SQL聚合查询在所述包访问模式下是有界可评估的。
22.根据权利要求17所述的计算机可读存储介质,还包括使所述一个或多个处理器执行以下操作的指令:
为在所述SQL聚合查询中出现的每个关系获取有限数量的数据;和
对获取的数据执行所述SQL聚合查询的操作。
23.根据权利要求17所述的计算机可读存储介质,其中,所述SQL聚合查询包括嵌套聚合子查询。
24.根据权利要求19所述的计算机可读存储介质,其中,所述包访问模式包括在数据库模式上的一组包访问约束。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2020087271 | 2020-04-27 | ||
CNPCT/CN2020/087271 | 2020-04-27 | ||
PCT/CN2021/089872 WO2021218908A1 (en) | 2020-04-27 | 2021-04-26 | Querying big data with bounded resources |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115516442A true CN115516442A (zh) | 2022-12-23 |
Family
ID=78331760
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180031489.7A Pending CN115516442A (zh) | 2020-04-27 | 2021-04-26 | 在有限资源下查询大数据 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115516442A (zh) |
WO (1) | WO2021218908A1 (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170277750A1 (en) * | 2016-03-28 | 2017-09-28 | Futurewei Technologies, Inc. | Querying big data by accessing small data |
US10649994B2 (en) * | 2017-05-25 | 2020-05-12 | Futurewei Technologies, Inc. | Bounded query rewriting using views |
CN108009296B (zh) * | 2017-12-27 | 2020-10-16 | 北京中关村科金技术有限公司 | 一种基于Hbase的SQL查询方法、系统及相关装置 |
CN110851346A (zh) * | 2019-09-24 | 2020-02-28 | 平安科技(深圳)有限公司 | 查询语句边界问题的检测方法、装置、设备及存储介质 |
-
2021
- 2021-04-26 CN CN202180031489.7A patent/CN115516442A/zh active Pending
- 2021-04-26 WO PCT/CN2021/089872 patent/WO2021218908A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2021218908A1 (en) | 2021-11-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Chu et al. | Holistic data cleaning: Putting violations into context | |
Chu et al. | Axiomatic foundations and algorithms for deciding semantic equivalences of SQL queries | |
Lutz et al. | The combined approach to OBDA: Taming role hierarchies using filters | |
Bonifati et al. | Interactive mapping specification with exemplar tuples | |
Polleres et al. | On the relation between SPARQL1. 1 and answer set programming | |
Giannakopoulou et al. | Cleaning denial constraint violations through relaxation | |
Szlichta et al. | Effective and complete discovery of bidirectional order dependencies via set-based axioms | |
Libkin et al. | TriAL: A navigational algebra for RDF triplestores | |
CN112434024A (zh) | 面向关系型数据库的数据字典生成方法、装置、设备及介质 | |
Cao et al. | An effective syntax for bounded relational queries | |
Cao et al. | Bounded query rewriting using views | |
Wang et al. | Optimizing recursive queries with progam synthesis | |
Zhou et al. | SPES: A symbolic approach to proving query equivalence under bag semantics | |
Dixit et al. | Consistent answers of aggregation queries using SAT solvers | |
Wang et al. | Conjunctive Queries with Comparisons | |
Abiteboul et al. | Deduction with contradictions in Datalog | |
Barceló et al. | Does query evaluation tractability help query containment? | |
CN115516442A (zh) | 在有限资源下查询大数据 | |
Hogan et al. | In-database graph analytics with recursive SPARQL | |
Goncalves et al. | Handling qualitative preferences in SPARQL over virtual ontology-based data access | |
McGill et al. | Scalable analysis of conceptual data models | |
Calì et al. | Datalog extensions for tractable query answering over ontologies | |
Bilidas et al. | Handling redundant processing in OBDA query execution over relational sources | |
Labreche et al. | A general approach for of schema matching problem: case of databases | |
Cao et al. | Bounded Evaluation: Querying Big Data with Bounded Resources |
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 |