一种基于范围语义的数据库聚集查询方法
【专利摘要】本发明涉及一种基于范围语义的数据库聚集查询方法,属于数据库查询【技术领域】。主要步骤为:采用有连接的算法得到聚集查询约简的一致性结果,并根据得到的结果计算;在计算得到根结点的连接属性值是否存在于树叶的查询子集中后,再对其键值进行分组过滤,得到无重复外键属性和分组属性表达式G的cand_G结果集;然后用cand_G结果集代替原有的根结点,在原有的连接关系上进行连接;对cand_G结果集的初始分组属性和根节点的外键属性进行分组得到聚集值的最大和最小值;最后对结果集cand的初始分组属性进行分组求和得到最终聚集值的最小值和最大值。采用本发明方法,可以有效地针对数据库进行查询,获得更好的查询效果。
【专利说明】一种基于范围语义的数据库聚集查询方法
【技术领域】
[0001]本发明涉及一种基于范围语义的数据库聚集查询方法,属于数据库查询【技术领域】。
【背景技术】
[0002]随着计算机应用技术的不断普及和发展,数据库系统正越来越多的走进人们的日常生活。在要求查询结果正确无误的同时,人们越来越关心查询的效率问题。影响查询效率的因素很多,诸如处理器的速度、I/o速度、存储器的容量、操作系统、采取何种的数据库服务系统等。但是对于特定服务器来说查询的效率主要取决于DBA (数据库管理员)所给定的查询语句。
[0003]数据库服务器对数据进行访问一般采用下面的两种方式:①索引扫描,通过索引访问数据表扫描,读表中的所有页。当对一个表进行查询时,如果返回的行数占全表总行数的10%到15%时,使用索引可以极大的优化查询的性能。但是如果查询涉及到全表40%以上的行时,表扫描的效率比使用索引扫描的效率高。索引有助于提高检索性能,但过多或不当的索引也会导致系统低效。因为用户在表中每添加一个索引,数据库就要做更多的工作。过多的索引甚至会导致索引碎片。
【发明内容】
[0004]本发明的目的在于提供一种基于范围语义的数据库聚集查询方法,以便更好地针对数据库进行查询。
[0005]为了实现上述目的,本发明的技术方案如下。
`[0006]一种基于范围语义的数据库聚集查询方法,具体包括以下步骤:
(I)采用有连接的算法得到聚集查询约简的一致性结果,并根据得到的结果计算R0CA,与无聚集的连接查询重写算法不同的是,根结点得到的结果集兄添加了外键属性;在计算得到根结点的连接属性值是否存在于树叶的查询子集中后,再对其键值进行分组过滤,得到关于根结点的无重复外键属性和分组属性表达式G的cmd—G结果集。
[0007](2)然后结果集作为根结点代替原有的根结点,其他子结点不变,在原有的连接关系上,进行连接;对^/7(6结果集的初始分组属性和根节点的外键属性进行分组,得到聚集值的最大和最小值;最后对结果集cand的初始分组属性进行分组求和,得到最终聚集值的最小值和最大值。
[0008]上述有连接的聚集查询基于无连接的聚集查询,首先采用聚集查询约简判断连接图中每个顶点(关系)的一致性,并考虑相邻顶点的连接属性。聚集查询约简对应的连接图是基于初始查询的树根,而聚集查询重写对应的连接图则根据聚集查询约简计算得到的一致性结果集作为树根。因此,这类算法的聚集查询约简是求出没有聚集的情况下的一致性结果,然后在已经求得的一致性结果基础上,再计算聚集属性的最大值和最小值。
[0009]进一步地,上述无聚集的查询重写算法,其基本思想如下:(I)最小值由于存在可能值(即冲突元组的最小值为0),必须要把可能值排除掉,得到必然值(一致性元组),然后再求最大值。首先对初始查询加入键属性,对初始分组属性和键属性进行聚集求最大值和最小值,得到Cmd结果集。
[0010](2)由于冲突元组的最小值为O, min_candl用于剔除中的初始分组属性值相冲突的元组。在ASC的条件选择谓词中,可能有不满足选择条件的情况,如选择条件相反(采用NSC表示)和选择条件属性值为空(采用ISNULL (SCA)表示),这种情况表明对于键属性值来说,由于存在多个选择分组属性值,则可能是不满足初始查询的元组出现,因此其最小值也为O,需要在min_candl的过滤基础上,再过滤掉不满足初始查询的元组,得到cand2结果集。
[0011](3)然后再对过滤产生的最小值必结果集与候选结果集进行连接产生过滤的初始分组属性的最小值O。由于最大值是可能的最大的候选值,因此对结果集的初始分组属性聚集求和产生的?结果集中的最大值是确定的,没有被
过滤的最小值是确定的。
[0012](4)最后max_cand结果集左连接结果集,如栗min_canc/3的初始分组属性为空,则返回为0,否则返回确定的最小值和最大值。
[0013]该发明的有益效果在于:通过采用上述方法,可以有效地针对数据库进行查询,获得更好的查询效果。
【专利附图】
【附图说明】
[0014]图1是本发明实施例中无连接的聚集查询重写算法截图。
[0015]图2是本发明实施例中聚集算法的标记图。
[0016]图3是本发明实施例中有连接的聚集查询重写算法截图。
【具体实施方式】
[0017]下面结合附图和实施例对本发明的【具体实施方式】进行描述,以便更好的理解本发明。
实施例
[0018]聚集是非常普通的,在普通的聚集查询中,一般都能获得确定的数值。聚集操作符的结果是对整个表中的所有声明的属性(列)的值进行计算的结果。如果在一个查询里面声明了组,那么这种(聚集)计算将只发生在一个组的值上。SQL允许把一个表里面的记录分成组。然后上面描述的聚集操作符可以应用于这些组上,也就是说,聚集操作符的值不再是对所有声明的列值进行操作,而是对一个组的所有值进行操作。这样,聚集函数为每个组独立地进行计算。对记录的分组是通过GROUP BY实现的,GROUP BY后面跟着一个定义组的构成的属性列表。
[0019]然而,由于在非一致性数据库中元组数值的不确定性,聚集查询对于每个候选数据库返回不同的结果,不能返回一致性结果,因此需要对CQA语义进行调整,在范围语义下,关系的数字属性的最大值和最小值的计算可以被一阶查询表示。在有限的情况下,聚集查询基于函数依赖,由一个标准的聚集操作符应用(MIN(A),MAX(A), COUNTS),COUNT⑷,SUM⑷和AVG⑷)组成。
[0020]一种基于范围语义的数据库聚集查询方法,具体包括:
定义区间(interval):给定一组完整性约束i:和数据库实例/,如果聚集查询^在每个候选数据库上返回到值rc [a, b],
则<7在/上的一致性结果是区间[a, 6] ( —m〈a < K m ),表不为/ l=<7i:e [a,6]。如果IaM是一致性结果,则a为下界泌为上界。如果没有子区间是一致性结果,则Ca,幻是最优的一致性结果,a为最大下界j为最小上界。
[0021]因为SQL查询可以有一些属性在GROUP BY语句中但没有出现在SELECT语句中(虽然反过来不是)。本发明中,给出如下的假设。假定查询中GROUP BY语句中属性也出现在SELECT语句中。
[0022]进一步地,定义聚集查询<7表示为如下形式,其中^是一组分组属性,…,aggjej是聚集表达式。
[0023]SELECT G,aggj (el) el,…,aggn、e) en
FROM R [WHERE ΠGROUP BY G0 [0024]进一步地,定义聚集查询约简办是去掉聚集查询中的聚集与分组,办的形式为: SELECT G FROM R [WHERE W]。
[0025]聚集查询约简的目的是先得到一致性查询结果,再进行聚集计算。由于聚集查询约简是无聚集的,因此可以有效地利用无聚集查询重写算法。
[0026]对聚集表达返回范围(边界值),而不是准确的数值。基于范围语义,需要调整CQA的语义,叫做一致性查询范围。定义4-11给出了范围保证G的每个值是一致性结果。
[0027]进一步地,定义一致性查询范围(rangeof consistent answer, R0CA)。设D是一个数据库,Q是一个聚集查询,&是7的聚集查询约简,Σ是一组查询约束。对于每个候选数据库I,如果t是%在0上的一致性结果,且每个聚集值P满足(最大下界)^ K ^ lub-answer (最小上界),则(i, glb~answer, lub-answer)良 q 在D 上的一致性查询范围。
[0028]基于查询约简,先得到无聚集查询的一致性查询结果,再进行聚集计算,得到一致性查询范围。由于聚集查询约简是无聚集的,因此可以有效地利用无聚集查询重写算法,如图1所示。
[0029]本实施例中,对关系化?添加属性K。实例为{(ci,/?7,A,1000), {cl,n2,h, 100),{c2,n2,h, 2000),{c2,n2,1, 200),{c3,n2,1, 3000),{c3,nl, I, NULL)}。给定查询所有U 属性值和。候选数据库为 Il={tl, t3, t5], 12={tl, t3, t6), 13={tl, t4, t5], 14={tl, t4, t6),15= {t2, t3, t,5),16= {t2, t3, t6),17= {t2, t4, t,5),18 = {t2, t4, t6)。属性值和分别为{6000, 3000, 4200, 1200,5100,2100,3300,300},因而不是一致性结果。可以描述范围为[300,6000]。
[0030]假定对U分组检索为h的A?属性值和。tl,泛和M是满足初始查询的元组,ROCA由/?7和值的范围组成,要得到每个U属性值的边界值再求和。候选数据库的区间值分别为{(nI, 1000),(η2, 2000)},ifll, 1000),ifl2, 2000)},{(ηI, 1000),(η2, 0)},{ifll, 1000){η I, 0),{η2, 2100)},{{η I, 0),{η2, 2100)},{ifll, 0), ifl2, 100)}和{(/?7,0),ip2, 100)} ο 因此,ROCA 是{(/?7,0,1000),(城 0,2100)}。在每个候选数据库中,K2为nl的U属性值和介于O和1000之间,1000在11、12、13和14中,O在其它的候选数据库中'K2为n2的A?属性值和介于O和2100之间,2100在界和16中,O在其它的候选
数据库中。
[0031]图2给出了无聚集的查询重写算法,基本思想如下:
(I)最小值由于存在可能值(即冲突元组的最小值为0),必须要把可能值排除掉,得到必然值(一致性元组),然后再求最大值。首先对初始查询加入键属性,对初始分组属性和键属性进行聚集求最大值和最小值,得到cmd结果集。 [0032](2)由于冲突元组的最小值为O, min_candl用于剔除中的初始分组属性值相冲突的元组。在sc的条件选择谓词中,可能有不满足选择条件的情况,如选择条件相反(采用asc表示)和选择条件属性值为空(采用ISNULL (SCA)表示),这种情况表明对于键属性值来说,由于存在多个选择分组属性值,则可能是不满足初始查询的元组出现,因此其最小值也为O,需要在min_candl的过滤基础上,再过滤掉不满足初始查询的元组,得到論_cand2结果集。
[0033](3)然后再对过滤产生的最小值必结果集与候选结果集进行连接产生过滤的初始分组属性的最小值O。由于最大值是可能的最大的候选值,因此对结果集的初始分组属性聚集求和产生的?结果集中的最大值是确定的,没有被
过滤的最小值是确定的。
[0034](4)最后max_cand结果集左连接结果集,如栗min_canc/3的初始分组属性为空,则返回为0,否则返回确定的最小值和最大值。
[0035]有连接的聚集查询基于无连接的聚集查询,首先采用聚集查询约简判断连接图中每个顶点(关系)的一致性,并考虑相邻顶点的连接属性。聚集查询约简对应的连接图是基于初始查询的树根,而聚集查询重写对应的连接图则根据聚集查询约简计算得到的一致性结果集作为树根。因此,这类算法的聚集查询约简是求出没有聚集的情况下的一致性结果,然后在已经求得的一致性结果基础上,再计算聚集属性的最大值和最小值。
[0036]由于在一个SPJ聚集查询中,多个聚集属性可能存在于不同的关系中,并且不同的聚集可能是不同的聚集函数。因此,再给出算法之前,本发明实施例给出一个关于聚集属性和聚集函数的定义。
[0037]定义对于给定的关系7?上的SPJ分组聚集查询则聚集属性万={e7,e2,…,en}的所在关系表示为ER二 [ER1, ER2,…,ERn'。
[0038]在不同的关系中,合取选择谓词不一定存在,且对于同一个关系,可能存在多个合取选择谓词,因此合取选择谓词是可选的。对于初始查询给定的属性表达式集合&集合的元素可能存在于多个关系中,因此在每一步从树叶到树根的计算过程中,关系的属性表达式是可选的;对于同一个关系,可能存在多个属性表达式。本发明实施例假定4,…,兄依次为连接图中树叶到树根相应的关系。图2能反映算法的聚集查询范围的获得方法。算法相似的部分是用于求出没有聚集的情况下的一致性结果,然后在已经求得的一致性结果基础上,再计算聚集属性的最大值和最小值。
[0039]图3给出了聚集查询重写算法,基本思想如下:
(I)类似于有连接的算法,得到聚集查询约简的一致性结果,并根据得到的结果计算R0CA。与无聚集的连接查询重写算法不同的是,根结点得到的结果集兄添加了外键属性。在计算得到根结点的连接属性值是否存在于树叶的查询子集中后,再对其键值进行分组过滤,得到关于根结点的无重复外键属性和分组属性表达式G的cand_G结果集。
[0040](2)然后cand_G结果集作为根结点代替原有的根结点,其他子结点不变,在原有的连接关系上,进行连接。对cand_G结果集的初始分组属性和根节点的外键属性进行分组,得到聚集值的最大和最小值。最后对结果集cmd的初始分组属性进行分组求和,得到最终聚集值的最小值和最大值。
[0041]以上所述是本发明的优选实施方式,应当指出,对于本【技术领域】的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护 范围。
【权利要求】
1.一种基于范围语义的数据库聚集查询方法,其特征在于:具体包括以下步骤: (1)采用有连接的算法得到聚集查询约简的一致性结果,并根据得到的结果计算ROCA,根结点得到的结果集兄添加了外键属性;在计算得到根结点的连接属性值是否存在于树叶的查询子集中后,再对其键值进行分组过滤,得到关于根结点的无重复外键属性和分组属性表达式G的cand_G结果集; (2)然后结果集作为根结点代替原有的根结点,其他子结点不变,在原有的连接关系上,进行连接;对^/7(6结果集的初始分组属性和根节点的外键属性进行分组,得到聚集值的最大和最小值;最后对结果集的初始分组属性进行分组求和,得到最终聚集值的最小值和最大值。
2.根据权利要求1所述的基于范围语义的数据库聚集查询方法,其特征在于:所述有连接的聚集查询基于无连接的聚集查询,首先采用聚集查询约简判断连接图中每个顶点(关系)的一致性,并考虑相邻顶点的连接属性;聚集查询约简对应的连接图是基于初始查询的树根,而聚集查询重写对应的连接图则根据聚集查询约简计算得到的一致性结果集作为树根;这类算法的聚集查询约简是求出没有聚集的情况下的一致性结果,然后在已经求得的一致性结果基础上,再计算聚集属性的最大值和最小值。
3.根据权利要求1所述的基于范围语义的数据库聚集查询方法,其特征在于:所述无聚集的查询重写算法,其基本思想如下: (1)最小值由于存在可能值(即冲突元组的最小值为0),要把可能值排除掉,得到必然值(一致性元组),然后再求最大值;首先对初始查询加入键属性,对初始分组属性和键属性进行聚集求最大值和最小值,得到Cmd结果集; (2)由于冲突元组的最小值为O,min_candl用于剔除中的初始分组属性值相冲突的元组.j£min_candl的`过滤基础上,再过滤掉不满足初始查询的元组,得到min_cand2结果集; (3)然后再对过滤产生的最小值必结果集与候选结果集进行连接产生过滤的初始分组属性的最小值O; (A)最后niax_cand结果集左连接结果集,的初始分组属性为空,则返回为0,否则返回确定的最小值和最大值。
【文档编号】G06F17/30GK103559293SQ201310558466
【公开日】2014年2月5日 申请日期:2013年11月12日 优先权日:2013年11月12日
【发明者】不公告发明人 申请人:湖南人文科技学院