用于处理数据库查询的方法和设备的制作方法

文档序号:6649882阅读:102来源:国知局
专利名称:用于处理数据库查询的方法和设备的制作方法
技术领域
本发明一般涉及计算机系统,并更具体地涉及用于处理数据库查询的方法和设备。
背景技术
数据库频繁地接收到对数据库中某数据范围的诸如总和、平均值等信息的查询。传统上,响应于这类查询,数据库访问该数据范围内的每条记录以处理该查询,其中每一记录包括一个或多个数据项。然而,这种处理数据库查询的方法导致大处理开销。
因此,期望用于数据库查询的改善处理的方法和设备。

发明内容
根据本发明的第一方面,提供了第一方法。该第一方法包括以下步骤(1)预先计算对数据库中包括的多个完整段数据的每一个的查询结果;(2)接收指定了数据库中定义的数据范围的查询;(3)确定在所定义的范围之内是否有任何完整段;(4)对所定义的范围之内的任何部分段数据执行查询;以及(5)基于已确定在所定义的范围之内的任何完整段的预先计算的查询结果以及对所定义的范围之内的任何部分段的查询结果,而确定该查询的结果。
根据本发明的第二方面,提供了一种用于处理对信息的数据库查询的方法。该方法包括以下步骤(1)接收对数据库中的第一部分数据执行查询的请求;(2)确定对数据库的第一部分的查询结果基于至少一个预先计算结果,其中该预先计算结果是对数据库中包括在第一部分中的第二部分数据的查询结果;(3)对数据库中的第三部分数据执行查询,其中该第三部分是第一部分中除了第二部分之外的部分;以及(4)基于该预先计算结果和对第三部分的查询结果而计算对第一部分的查询结果。还提供了许多其他方面,如根据本发明这些其他方面的方法、系统、设备和计算机程序产品。这里描述的每一计算机程序产品可由计算机可读介质(例如载波信号、软盘、压缩盘、DVD、硬盘驱动器、随机存取存储器等)承载。
根据以下详细描述、所附权利要求以及附图,本发明的其他特征和方面将变得更加清楚。


图1是根据本发明的实施例的用于处理数据库查询的设备的方框图。
图2是可在根据本发明的实施例的用于处理数据库查询的设备中使用的数据库的例子的方框图。
图3是根据本发明的实施例的用于处理数据库查询的第一示例方法。
图4是根据本发明的实施例的用于处理数据库查询的第二示例方法。
具体实施例方式
本发明提供了用于有效处理数据库查询的方法和设备。更具体地,本方法和设备避免了不得不访问由数据库查询指定的范围的大部分(例如整个范围)。结果,与传统数据库查询处理相比,本方法和设备提供了用于处理数据库查询的性能增益。
图1是根据本发明的实施例的用于处理数据库查询的设备的方框图。参考图1,该用于处理数据库查询的设备100包括与处理器104耦接并用于存储数据的存储器102。该处理器104与包括有数据库108的例如盘驱动器等的存储装置106耦接。下面参考图2描述数据库108的细节。处理器104适配为运行适配为有效查询数据库108的代码。更具体地,处理器104适配为运行适配为执行根据本发明的实施例的第一和/或第二示例方法的代码。下面将分别参考图3和4来描述第一和第二示例方法的细节。另外,设备100可包括用于与其他设备进行通信的通信(例如com)端口110。
图2是可在根据本发明的实施例的用于处理数据库查询的设备中使用的数据库的例子的方框图。参考图2,数据库108可存储与例如特定消费者或应用相关的数据。这样的数据可以以用户(如数据库管理员)指定的方式进行组织。例如,数据库108可包括代表日期的第一列202数据。更具体地,第一列202包括从2000年第一季度到2004年第三季度中每一季度的数据项(例如在与列对应的行上)。数据库108包括代表收入的第二列204数据。例如,第二列204的数据包括与第一列202中的每一季度对应的代表收入的数据项。
而且,数据库108包括基于数据库108中的其他数据的(例如通过从中计算出的)数据。更具体地,数据库108可包括第三列206数据,其每一项代表一年的总收入(例如这一年每一季度的收入数据之和)。类似地,数据库108可包括第四列208数据,其每一项代表一年的平均季度收入(例如这一年各季度的收入数据的平均值)。例如,第三列206和/或第四列208的每一数据项基于第二列204中与第一列202的特定一年的各季度对应的数据项。如下面所述,数据库108中的数据可被分组在一起以形成完整段210-216中的一个或更多(例如多个)。尽管图2的数据库108中的数据包括四个完整段210-216,但是数据库108中的数据可包括更大或更小数目的完整段。而且,完整段可包括比图2所示的完整段210-216更大或更小数量的数据。
上述数据库108的结构(例如行和列中的数据安排)是示例性的。该数据库108可以以不同的方式构成。例如,数据库108可为关系数据库、平面文件(flat-file)数据库、对象数据库、分布式数据库等。而且,对填充数据库108的数据的描述也是示例性的。该数据库108可包括不同的数据。
现在参考图2和图3来描述用于处理数据库查询的设备100的操作,图3中图示了根据本发明的实施例的用于处理数据库查询的第一示例方法300。参考图3,在步骤302,方法300开始。在步骤304,预先计算数据库中包括的多个完整段数据的每一个的查询结果。如上所述,数据库108可被分组为一个或更多(例如多个)完整段。例如,数据库108的第二列204中与第一列202的特定一年(例如2000、2001、2002或2003)的各季度对应的数据项可被分组为各完整段210-216(虚框所示)。所以,示例数据库108包括四个完整段。频繁接收到对数据库(例如对数据库中某数据范围)的诸如总和、平均值等的信息的查询。传统上,响应于这类查询,数据库访问该数据范围内的每条记录以处理该查询,其中每一记录包括一个或更多项。然而,在步骤304,(例如在计算对该数据范围的信息查询的结果之前)对数据库108中的每一完整段210-216执行了对例如总和、平均值等信息的查询。以这种方式,在接收和/或计算从数据库中某数据范围查询信息的结果之前,计算对多个完整段210-216中的每一个的查询结果(例如预先计算)。这样的结果可作为一项存储在数据库108中(例如在数据库108的第三列206或第四列208)。尽管该例子示出了明确添加到数据库表格中用于存储预先计算的值的其他列,但是可替代使用混合索引(hybrid index)。该混合索引可存储该预先计算的值作为元数据,并且利用该索引的查询可从该索引而不是直接从该表格中检索完整段的元数据。
例如,计算分别代表2000、2001、2002和2003年的总收入的每一完整段210-216的数据总和。附加地或可替换地,计算分别代表2000、2001、2002和2003年的平均季度收入的每一完整段210-216的数据平均值。尽管数据库108的第三列206存储年数据,第四列208存储平均季度数据,但是混合索引可配置为存储代表其他时间段的数据(例如每日、每月等)。
在步骤306,接收指定数据库中所定义数据范围的查询。更具体地,如上所述,可由数据库接收对数据库中某数据范围的诸如总和、平均值等信息的查询。例如,可向该数据库查询从2000年第三季度到2003年第二季度的总收入。
在步骤308,确定在所定义的范围中是否有任何完整段。例如,设备100确定在预定义范围中有两个完整段212-214。因为通过确定在定义的范围中是否有任何完整段210-216来预先计算对数据库108中的每一完整段210-216的这类查询结果,所以设备100可避免不得不访问所定义的范围中的每条记录以处理该查询。更具体地,该设备100可不需要(例如响应于该查询)访问与这样的完整段212-214对应的每条记录而处理该查询。
在步骤310,对所定义范围内的任何部分段的数据执行查询。更具体地,设备100可确定该定义的范围包括一个或多个部分段(例如完整段的部分)的数据。在以上例子中,设备100确定该定义的范围包括代表2000年的收入的完整段210的部分(例如2000年最后两季度的收入),并包括代表2003年的收入的完整段216的部分(例如2003年前两季度的收入)。设备100对每个这样的部分段定义的范围执行查询。例如,该设备100可通过访问该范围中的各项来确定2000年第三和第四季度的总收入。类似地,该设备100可通过访问该范围中的各项来确定2003年第一和第二季度的总收入。以这种方式,确定对所定义范围内的任何部分段数据的查询结果。
在步骤312,基于已确定在所定义范围内的任何完整段的预先计算的查询结果和对所定义范围内的任何部分段的查询结果,确定指定该定义范围的查询的结果。更具体地,访问已确定在所定义范围内的每一完整段212-214的预先计算的查询结果。例如,访问第三列206中与2001年的总收入(例如“8000”)和2002年的总收入(例如“12000”)对应的项。将这样的项加到对部分段的查询结果,以产生指定所定义范围的查询的结果。在采用混合索引的实施例中,访问该混合索引中的预先计算的查询结果。其后,执行步骤314。在步骤314,方法300结束。
现在参考图2和图4来描述用于处理数据库查询的设备100的操作,图4中图示了根据本发明的实施例的用于处理数据库查询的第二示例方法400。参考图4,在步骤402,方法400开始。在步骤404,接收对数据库中的第一部分数据进行查询的请求。更具体地,设备100可对数据库108的定义的范围查询信息。该定义的范围充当该第一部分。例如,该设备100可向该数据库查询从2000年第三季度到2003年第二季度的总收入,在此情况下,第一部分中包括从2000年第三季度到2003年第二季度的收入项。
在步骤406,确定是否已为该数据库中的至少一个第二部分的数据预先计算了查询结果,其中该第二部分包括在第一部分中。第二部分可为例如全部包括在第一部分数据中的2001年季度收入数据和/或2002年季度收入数据。第二部分可能具有与其关联的预先计算结果。所以,在步骤406,设备100可确定是否已预先计算了2001年的总收入(例如2001年的季度收入之和)和/或2002年的季度收入数据。如果在步骤406确定还没有为数据库中的至少一个第二部分的数据预先计算查询结果,则执行步骤408。或者,如果确定已为数据库中的至少一个第二部分的数据预先计算了查询结果,则执行步骤410。
在步骤408,对该第二部分执行查询,并将这样的查询结果作为预先计算结果而存储。例如,与方法300的步骤304类似,该设备可在获得该第一部分数据的查询结果之前,针对完全包括在第一部分数据中的第二部分数据查询信息。例如,设备100可通过向数据库查询从2001年第一季度到2001年第四季度的总收入而预先计算2001年的总收入(在此情况下,第二部分中包括从2001年第一季度到2001年第四季度的收入项),并将该查询结果作为预先计算结果而存储在数据库108的第三列206中。类似地,该设备100可通过向数据库查询从2002年第一季度到2002年第四季度的总收入而预先计算2002年的总收入(在此情况下,第二部分中包括从2002年第一季度到2002年第四季度的收入项),并将该查询结果作为预先计算结果而存储在数据库108的第三列206中。以这种方式,对第二部分数据执行查询,并按照需要(例如仅响应于对第一部分数据执行查询的请求)存储这种查询的结果,从而避免不必要的处理。其后,执行步骤410。
在步骤410,确定对数据库的第一部分的查询结果基于至少一个预先计算结果。一旦接收到对数据库中的第一部分数据执行查询的请求,设备100便可确定可以采用该预先计算结果来确定该查询结果。
在步骤412,检索该预先计算结果。例如,该设备可访问数据库108的第三列206并检索2001年和/或2002年的总收入值。
在步骤414,对数据库中的第三部分数据执行查询,其中该第三部分是第一数据中除了第二部分之外的部分。例如,设备100可向数据库查询2000年第三和第四季度以及2003年第一和第二季度的总收入,在此情况下,在第三部分中包括来自2000年第三和第四季度以及2003年第一和第二季度的收入项。
在步骤416,基于至少一个预先计算结果和对第三部分数据的查询结果而计算对第一部分的查询结果。例如,将至少一个预先计算结果加到对第三部分数据的查询结果,以得到对数据库中的第一部分数据的查询结果。其后,执行步骤418。在步骤418,方法400结束。
通过使用方法300或方法400,可确定指定了数据库中所定义的数据范围的查询的结果,而无需响应于该查询而访问与所定义的范围对应的每一记录。以这种方式,方法300和方法400可有效地查询数据库,从而提供超出传统数据库查询的性能增益。
前面的描述仅公开了本发明的示范实施例。落入本发明的范围之内的以上公开的设备和方法的变形对于本领域普通技术人员来说是显而易见的。例如,尽管在以上一个或多个实施例中,数据库中的数据按照日期而分组为多个段或多个部分,但是也可基于与该数据关联的其它参数而将数据库中的数据分组为多个段或多个部分。而且,在一个或多个实施例中,可监控完整段或第二部分中的数据,并因此监控存储在混合索引中的基于这样的数据的结果,以确定访问该数据的频率。可丢弃很少使用的数据。在一些实施例中,可使用算法来确定该数据被确定的频率。基于监控,该设备可确定是否继续存储基于该数据的结果。以这种方式,不使用的数据不会不必要地占用数据库空间。而且,可采用阈值年限,使得仅存储对最近日期范围的数据(例如通过阈值年限定义,如上一年、月、星期等中存储的数据)执行的预先计算结果。例如,如果数据库包括长时间的数据,但仅访问最近日期范围内的数据,则根据本方法和设备,仅存储对这样的日期范围执行的预先计算结果,从而节约数据库空间。可去除对过时的日期范围执行的预先计算结果。
因此,尽管已结合其示范实施例而公开了本发明,但应理解,其他实施例可落入所附权利要求限定的本发明的精神和范围中。
权利要求
1.一种方法,包括预先计算对数据库中包括的多个完整段数据的每一个的查询结果;接收指定了数据库中定义的数据范围的查询;确定在所定义的范围之内是否有任何完整段;对所定义的范围之内的任何部分段数据执行查询;以及基于已确定在所定义的范围之内的任何完整段的预先计算的查询结果以及对所定义的范围之内的任何部分段的查询结果,而确定该查询的结果。
2.根据权利要求1的方法,其中基于已确定在所定义的范围之内的任何完整段的预先计算的查询结果以及对所定义的范围之内的任何部分段的查询结果而确定该查询的结果的步骤包括通过检索该预先计算的查询结果,并确定对所定义的范围内的任何部分段数据的查询结果,而确定该查询的结果。
3.根据权利要求1的方法,还包括在数据库中存储预先计算的查询结果;以及从数据库中去除对大于指定年限的日期范围的数据执行的预先计算的查询结果。
4.根据权利要求1的方法,其中数据库中的数据基于与该数据关联的日期而被分组为一个或多个完整段和部分段。
5.根据权利要求1的方法,其中预先计算对数据库中包括的多个完整段数据的每一个的查询结果的步骤包括响应于接收到指定了数据库中定义的数据范围的查询,而预先计算对数据库中包括的多个完整段数据的每一个的查询结果。
6.一种用于处理对信息的数据库查询的方法,包括接收对数据库中的第一部分数据执行查询的请求;确定对数据库的第一部分的查询结果基于至少一个预先计算结果,其中该预先计算结果是对数据库中包括在第一部分中的第二部分数据的查询结果;对数据库中的第三部分数据执行查询,其中该第三部分是第一部分中除了第二部分之外的部分;以及基于该预先计算结果和对第三部分的查询结果而计算对第一部分的查询结果。
7.根据权利要求6的方法,其中基于该预先计算结果和对第三部分的查询结果而计算对第一部分的查询结果的步骤包括合并该预先计算结果和对第三部分数据的查询结果。
8.根据权利要求6的方法,其中该第二部分数据多于该第三部分数据。
9.根据权利要求6的方法,其中基于该预先计算结果和对第三部分的查询结果而计算对第一部分的查询结果的步骤包括通过检索该预先计算结果,并计算对第三部分的查询结果,而计算对第一部分的查询结果。
10.根据权利要求6的方法,还包括在数据库中存储预先计算的查询结果;以及从数据库中去除对大于指定年限的日期范围的数据执行的预先计算的查询结果。
11.根据权利要求6的方法,其中数据库中的数据基于与该数据关联的日期而被分组为第一、第二和第三部分数据。
12.根据权利要求11的方法,其中日、月和年中的至少一个与该第二部分数据关联。
13.根据权利要求6的方法,其中响应于接收到对数据库中的第一部分数据执行查询的请求,而计算该预先计算结果。
14.根据权利要求6的方法,还包括监控该预先计算结果;以及基于监控而确定是否继续存储该预先计算结果。
15.一种设备,包括用于存储数据的数据库;与该数据库耦接并适配为运行代码的处理器,该代码适配为预先计算对数据库中包括的多个完整段数据的每一个的查询结果;接收指定了数据库中定义的数据范围的查询;确定在该定义的范围之内是否有任何完整段;对所定义的范围之内的任何部分段数据执行查询;以及基于已确定在所定义的范围之内的任何完整段的预先计算的查询结果以及对所定义的范围之内的任何部分段的查询结果,而确定该查询的结果。
16.根据权利要求15的设备,其中该代码还适配为通过检索该预先计算的查询结果,并确定对所定义的范围之内的任何部分段数据的查询结果,而确定该查询的结果。
17.根据权利要求15的设备,其中该代码还适配为在数据库中存储该预先计算的查询结果;以及从数据库中去除对大于指定年限的日期范围的数据执行的预先计算的查询结果。
18.根据权利要求15的设备,其中数据库中的数据基于与该数据关联的日期而被分组为一个或多个完整段和部分段。
19.根据权利要求15的设备,其中该代码还适配为响应于接收到指定了数据库中定义的数据范围的查询,而预先计算对数据库中包括的多个完整段数据的每一个的查询结果。
20.一种用于处理数据库查询的设备,包括用于存储数据的数据库;与该数据库耦接并适配为运行代码的处理器,该代码适配为接收对数据库中的第一部分数据执行查询的请求;确定对数据库的第一部分的查询结果基于预先计算结果,其中该预先计算结果是对数据库中包括在第一部分中的第二部分数据的查询结果;对数据库中的第三部分数据执行查询,其中该第三部分是第一部分中除了第二部分之外的部分;以及基于该预先计算结果和对第三部分的查询结果而计算对第一部分的查询结果。
21.根据权利要求20的设备,其中该代码还适配为合并该预先计算结果和对第三部分数据的查询结果。
22.根据权利要求20的设备,其中该第二部分数据多于该第三部分数据。
23.根据权利要求20的设备,其中该代码还适配为通过检索该预先计算结果,并计算对第三部分的查询结果,而计算对第一部分的查询结果。
24.根据权利要求20的设备,其中该代码还适配为在数据库中存储该预先计算的查询结果;以及从数据库中去除对大于指定年限的日期范围的数据执行的预先计算的查询结果。
25.根据权利要求20的设备,其中数据库中的数据基于与该数据关联的日期而被分组为第一、第二和第三部分数据。
26.根据权利要求25的设备,其中日、月和年中的至少一个与该第二部分数据关联。
27.根据权利要求20的设备,其中该代码还适配为响应于对数据库中的第一部分数据执行查询的请求,而计算该预先计算结果。
28.根据权利要求20的设备,其中该代码还适配为监控该预先计算结果;以及基于监控而确定是否继续存储该预先计算结果。
29.一种计算机程序产品,包括计算机可读介质,该计算机可读介质具有计算机程序代码,该计算机程序代码适配为预先计算对数据库中包括的多个完整段数据的每一个的查询结果;接收指定了数据库中定义的数据范围的查询;确定在该定义的范围之内是否有任何完整段;对所定义的范围之内的任何部分段数据执行查询;以及基于已确定在所定义的范围之内的任何完整段的预先计算的查询结果以及对所定义的范围之内的任何部分段的查询结果,而确定该查询的结果。
30.根据权利要求29的计算机程序产品,其中该计算机程序代码还适配为通过检索该预先计算的查询结果,并确定对所定义的范围之内的任何部分段数据的查询结果,而确定该查询的结果。
31.根据权利要求29的计算机程序产品,其中该计算机程序代码还适配为在数据库中存储该预先计算的查询结果;以及从数据库中去除对大于指定年限的日期范围的数据执行的预先计算的查询结果。
32.根据权利要求29的计算机程序产品,其中数据库中的数据基于与该数据关联的日期而被分组为一个或多个完整段和部分段。
33.根据权利要求29的计算机程序产品,其中该计算机程序代码还适配为响应于接收到指定了数据库中定义的数据范围的查询,而计算该预先计算的查询结果。
34.一种计算机程序产品,包括计算机可读介质,该计算机可读介质具有计算机程序代码,该计算机程序代码适配为接收对数据库中的第一部分数据执行查询的请求;确定对数据库的第一部分的查询结果基于预先计算结果,其中该预先计算结果是对数据库中包括在第一部分中的第二部分数据的查询结果;对数据库中的第三部分数据执行查询,其中该第三部分是第一部分中除了第二部分之外的部分;以及基于该预先计算结果和对第三部分的查询结果而计算对第一部分的查询结果。
35.根据权利要求34的计算机程序产品,其中该计算机程序代码还适配为合并该预先计算结果和对第三部分数据的查询结果。
36.根据权利要求34的计算机程序产品,其中该第二部分数据多于该第三部分数据。
37.根据权利要求34的计算机程序产品,其中该计算机程序代码还适配为通过检索该预先计算结果,并计算对第三部分的查询结果,而计算对第一部分的查询结果。
38.根据权利要求34的计算机程序产品,其中该计算机程序代码还适配为在数据库中存储该预先计算的查询结果;以及从数据库中去除对大于指定年限的日期范围的数据执行的预先计算的查询结果。
39.根据权利要求34的计算机程序产品,其中数据库中的数据基于与该数据关联的日期而被分组为第一、第二和第三部分数据。
40.根据权利要求39的计算机程序产品,其中日、月和年中的至少一个与该第二部分数据关联。
41.根据权利要求39的计算机程序产品,其中该计算机程序代码还适配为响应于接收到对数据库中的第一部分数据执行查询的请求,而计算该预先计算结果。
42.根据权利要求39的计算机程序产品,其中该计算机程序代码还适配为监控该预先计算结果;以及基于监控而确定是否继续存储该预先计算结果。
全文摘要
在第一方面,提供了一种方法,包括以下步骤(1)预先计算对数据库中包括的多个完整段数据的每一个的查询结果;(2)接收指定了数据库中定义的数据范围的查询;(3)确定在所定义的范围之内是否有任何完整段;(4)对所定义的范围之内的任何部分段数据执行查询;以及(5)基于已确定在所定义的范围之内的任何完整段的预先计算的查询结果以及对所定义的范围之内的任何部分段的查询结果,而确定该查询的结果。还提供了许多其他方面。
文档编号G06F17/30GK1783077SQ20051011401
公开日2006年6月7日 申请日期2005年10月13日 优先权日2004年10月14日
发明者埃里克·L·巴斯尼斯, 约翰·M·桑托斯沃索 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1