用于优化数据库查询的方法和系统的制作方法

文档序号:6438389阅读:232来源:国知局

专利名称::用于优化数据库查询的方法和系统的制作方法
技术领域
:本发明涉及查询优化,更特别地,涉及使用查询优化从数据仓库检索数据的子集。
背景技术
:数据仓库,特别是数据库,是计算化的信息存储和检索系统。数据库查询指的是用于检索存储于数据库中的数据的一组命令或语句。查询可来自用户、应用程序或远程系统。查询可规定从中检索数据的数据库中的诸如表或栏的特定位置、如何结合来自多个表的栏和特定的数据记录包含于查询结果组中必须满足的条件。一般为关系数据库的当前的结构化数据处理以由查询语言规定的精确格式构成的查询。例如,许多关系数据库支持广泛使用的结构化查询语言(StructuredQueryLanguage(SQL))。许多诸如生命科学的依赖于数据库的学科需要越来越复杂的数据库和数据库查询。运行大的或复杂的查询一般使用多个资源并且已成为研究和关注的主题。
发明内容本发明的实施例是针对用于优化数据库事务的方法、系统和计算机程序产品。因此,本发明的实施例接收查询。所述查询规定一组谓词,在该组谓词中,该查询为真(tobetrue)必须满足的最少数量。使用对存储于计算机可读存储介质中的仓库的查询来执行操作。呈现满足所述最少数量的谓词的一组结果。针对包含计算机可读存储介质的计算机程序产品的实施例包含用于优化数据库事务的计算机可用代码。实施例包含用于接收查询的计算机可用代码。该查询规定提供给该查询的一组谓词和查询为真要满足的该组谓词中的谓词的最少数量。实施例还包括用于使用所述查询对存储于计算机可读存储介质中的仓库执行操作的计算机可用代码。实施例还包括用于呈现满足所述最少数量的谓词的一组结果的计算机可用代码。针对用于优化数据库事务的数据处理系统的实施例包括包含存储介质的存储装置,其中,存储装置存储计算机可用程序代码、处理器,其中,处理器执行所述计算机可用程序代码。实施例的计算机可用程序代码包含用于接收查询的计算机可用代码,其中,该查询规定提供给该查询的一组谓词和查询为真要满足的该组谓词中的谓词的最少数量;用于使用该查询对存储于计算机可读存储介质中的仓库执行操作的计算机可用代码;和用于呈现满足所述最少数量的谓词的一组结果的计算机可用代码。以下,参照下面的示意图仅以例子的方式来描述本发明的实施例,其中图1示出从数据仓库检索数据的子集的方法的流程图的示例性实施例;图2示出用于从关系数据库检索数据的子集的流程图的示例性实施例;和图3表示用于从数据仓库检索数据的子集的计算机系统的示意图的示例性实施例。具体实施例方式以下,参照根据本发明的实施例的方法、设备(系统)和计算机程序产品的流程图和/或框图描述本发明的各方面。可以理解,可通过计算机程序指令实现流程图和/或框图的每一个框以及流程图和/或框图的框的组合。这些计算机程序指令可被提供给通用计算机、专用计算机或其它的可编程数据处理设备的处理器,以制造机器,使得通过计算机的处理器或其它的可编程数据处理设备执行的指令产生用于实现在流程图和/或框图(一个或多个框)中规定的功能/动作的装置。本发明的实施例是针对用于优化用于从数据仓库检索数据的子集的数据库查询的方法、系统和计算机程序产品。图1表示用于从数据仓库检索数据的子集的流程图100的示例性实施例。步骤Iio表示接收查询。一旦接收到查询,接着,在步骤120中,分析查询以从查询确定查询中的谓词的总数和执行操作所需要的谓词的最少数量。当这些被确定完时,在步骤130中,识别使该查询运行所针对的数据源。在步骤140中,对数据源执行查询。在步骤150中,基于对数据源运行的查询,检索满足查询的数据子集并将其呈现给用户。接收查询包含接收一组谓词和表示该组谓词中需要为真的谓词的最少数量的预定的阈值。在一个实施例中,有利地,该组谓词中的各谓词优选表示为逐位谓词模式以生成一组逐位谓词模式。如果需要,通过以在这里作为参考并入的相关申请中描述的实施例的方式使用该组逐位谓词模式和多个逻辑运算符生成第二查询。所述多个逻辑运算符包含布尔运算符。根据实施例的生成第二查询的步骤使用谓词的预定的阈值。使用查询从数据仓库检索数据的子集。生成第二查询还包含使用第一查询从该组逐位谓词模式识别一组有效的逐位模式并且使用所述多个逻辑运算符分析该组有效的逐位模式以生成逻辑逐位表达式;并且接着将逻辑逐位表达式因式分解。分析和因式分解优选使用布尔特性。然后,产生因式分解后的逻辑逐位表达式到该组谓词中的相应的谓词的映射,以生成逻辑谓词表达式。通过使用逻辑谓词表达式修改第一查询来生成第二查询。在一个实施例中,诸如在关系数据库或面向对象的数据库中,数据仓库是结构化数据,并且,第一查询和第二查询均是结构化查询语言(SQL)查询。优选地,根据实施例的查询包含“ATLEAST”语句和表示在该组谓词中的那些需要为真的谓词的最少数量的谓词的预定的阈值。在示例性模式中,以下给出从数据仓库检索数据的子集的示例。数据库查询优化器尝试减少谓词的数量以优化查询性能。但是,有时SQL查询具有通过OR条件结合的大量的谓词,这使得减少谓词的数量变得困难。以下描述业务决定基于满足一组最少的先决条件的示例性实施例对于年度奖金分配,设定准则使得满足5个条件(即谓词)中的至少3个的雇员有资格领取奖金。示例性谓词如下1.1或2+的表现等级(felting)2.管理者推荐(Manager_Recom)3.业务单位利润>3%(BU_profit)4.工资低于其级别的平均工资5.在组织中被雇用多于两年(Current_dt_Join_dt)假定雇员数据被存储于数据库中,则需要写入查询以得到满足先决条件的雇员记录。这是存储于数据库中的数据的子集。一般地,使用SQL中的“AND”和“OR”语句的典型的组合书写从匹配于5个条件中的至少3个的表选择行的查询。假定所有的数据在雇员表中是可得到的,那么典型的查询可以如下select*fromemployeewhere((Ratingin(1,2+))and(Manager_Recom二’V)and(BU—profit>3))OR((Ratingin(1,2+))and(Manager_Recom=‘X丨)and(Salary<(selectAvg(Salary)fromemployee)))OR((Ratingin(1,2+))and(Manager_Recom='V)and(Current_dt-Join_Dt>2years))OR((Ratingin(1,2+))and(BU_profit>3)and(Salary<(selectAvg(Salary)fromemployee)))OR((Ratingin(1,2+))and(BU_profit>3)and(Current_dt-Join_Dt>2years))OR((Ratingin(1,2+))and(Salary<(selectAvg(Salary)fromemployee))and(Current—dt-Join—Dt>2years))OR((Manager_Recom='Y')and(BU—profit>3)and(Salary<(selectAvg(Salary)fromemployee)))OR((Manager_Recom='Y')and(BU_profit>3)and(Current_dt-Join_Dt>2years))OR((Manager_Recom=fYf)and(Salary<(selectAvg(Sslary)fromemployee))and(Current_dt-Join_Dt>2years))OR((BU_profit>3)and(Salary<(selectAvg(Salary)fromemployee))and(Current_dt-Join_Dt>2years))从以上的查询可以注意到,查询包含大量的OR语句和许多的谓词,并且,在常规的SQL中,没有简易的方式来书写这种查询和减少这种查询中的谓词的数量。这种查询书写和处理是耗时的,并且使用大量的计算资源来执行。本发明的实施例在优化器的内部使用针对谓词的位表示,并且有助于减少SQL中的谓词的数量。压缩谓词有助于减少执行查询的处理循环,由此提高查询性能。示例性实施例使用很好研究的布尔特性联合特性(a|b)C=aI(b|c)(a&b)&c=a&(b&c)分布特性:aI(b&c)=(a|b)&(a|c)a&(b|c)=(a&b)|(a&c)应当注意,逻辑“AND”被表达为“&”或“*”,并且,逻辑“OR”表达为“|”或“+”。2个表达式之间没有任何运算符被假定为“AND”,例如,01(0+1)等同于0&说(0|1),即,0*1女(0+1)。在实施例中,关于以上的例子并且关于如何形成逐位谓词模式,应理解以下的方面各逻辑谓词由一组位表示。这里,这样的一组位被称为“逐位谓词模式”。各组可具有相同数量的位。各逐位谓词模式仅具有一个位0Ν。各逐位谓词模式唯一地表示逻辑谓词中的单个相应的逻辑谓词。对于各逐位谓词模式,为ON的一个位表明特定的逐位谓词模式表示逻辑谓词中的哪一个。作为使用很好研究的布尔代数的例子,使A、B、C、D和E表示5个逻辑表达式/谓词。一次取3的排列将导致5P3=10种可能的排列。A,B,C;A,B,D;Α,B,E;A,C,D;A,C,E;A,D,E;B,C,D;B,C,E;B,D,E;C,D,E使用逻辑“AND”和“OR”运算符在表达式中表示所有的排列(C&D&E)I(B&D&E)|(B&C&E)|(B&C&D)(A&D&E)I(A&C&E)|(A&C&D)(A&B&C)I(A&B&D)|(A&B&E)这里,“&”表示逻辑“AND”运算符,并且,“I”表示逻辑“OR”运算符。使用布尔代数的分布特性,表达式可被表示为(C&D&E)I(B&(D&E|C&E|C&D))(A&(D&E|C&E|C&D))(A&B&(C|D|E))可进一步应用分布特性将表达式表示为(C&D&E)I(BIA)&(D&E|C&E|C&D))|(A&B&(C|D|E))该表达式是可使用在这里作为参考并入的相关公开中描述的位表示获得的期望的结果。本发明的示例性实施例扩展当前的SQL以对于这种查询支持新的语句"ATLEAST"oATLEAST语句的句式可以如下ATLEAST(N,predicate1,predicate2,predicate3,.....predicateK)这里,K是谓词的总数,并且,N是要满足的谓词的最少数量。与具有大量OR语句的查询相比,以上表示的这种查询还使得书写查询更加简单并且更加可读。在示例性模式中,可以修改数据库优化器,以支持SQL句式中的‘‘ATLEAST”语句。以上的一组谓词的第一查询可被书写如下select*fromemployeewhereATLEAST(3,Ratingin(l,2+),Manager_Recom='Y',BU—profit>3,Salary<(selectAvg(Salary)fromemployee),Current—dt-Join—Dt>2years)重要的是,这里注意到,具有多个‘‘OR”语句的查询与具有“ATLEAST”语句的第一查询具有相同的效果;但是,“0R”语句已在数据库技术中得到支持,而“ATLEAST”是本发明的一个实施例。根据本发明的一个实施例,数据库优化器将改写第一查询并且优化查询以生成第二查询如下select*fromemployeewhere(BU_profit>3andSalary<(selectAvg(Salary)fromemployee)andCurrent—dt-Join—Dt>2years)OR((Ratingin(1,2+)orManager—Recom=’X')AND((Salary<(selectAvg(Salary)fromemployee)andCurrent—dt_Join—Dt>2years)Or(BU_profit>3andCurrent_dt-Join_Dt>2years)Or(BU—profit>3andSalary<(selectAvg(Salary)fromemployee))))OR(Ratingin(1,2+)andManager—Recom='Yfand(BU_profit>3orSalary<(selectAvg(Salary)fromemployee)orCurrent_dt-Join_Dt>2years))以下的例子给出以位格式表示多个谓词的实施例的更详细的解释。查询被接收,并且,示例性第一查询如下select*fromtablewhereATLEAST(3,a=10,b=20,c=30,d=30,e=50)在另一示例性实施例中,如果仅在SQL查询中存在2个谓词A和B,其中的一个对于SQL检索有效的子集需要为真,那么常规的SQL查询将为select*fromTablelwhereAORB。根据示例性“ATLEAST”表示的该常规的SQL查询可被改写为select*fromTablelwhereATLEAST(1,A,B)当谓词的数量大时,本发明的实施例将产生更好的表现。图2表示用于从关系数据库检索数据的子集的总体方法的流程图200的示例性实施例。应当注意,除了图2属于作为关系数据库的数据仓库以外,流程图200与图1的流程图100类似。在步骤210中,查询被明确地示为ATLEAST(N、Pl、P2...HO,这里,K是谓词的总数,并且,N是要满足的谓词的最少数量。在步骤220中,检查是否查询符合已设计的新格式并且如果格式为0K,那么对相关的仓库230运行查询并且在步骤MO中输出结果。图3是可用于实现本发明的各种实施例的示例性计算机系统300的框图。在一些实施例中,计算机系统300可被用于执行在图1或图2或两个图中描述的步骤。计算机系统300包含处理器303。应当理解,虽然图3示出单个处理器,但是本领域技术人员将会理解,可以根据需要包含多于一个的处理器。处理器303与通信基础结构302(例如,通信总线、跨接杆(cross-overbar)或网络)连接,这里通信基础结构303被配置为便于示例性计算机系统300的各种元件之间的通信。关于本示例性计算机系统描述各种软件实施例。在读完本说明书之后,本领域普通技术人员显然会理解如何使用其它的计算机系统和/或计算机结构实现本发明。示例性计算机系统300可包含被配置为从通信基础结构302(或从未示出的帧缓冲器)转发用于在显示单元310上显示的图形、文本和其它数据的显示接口308。计算机系统300还包含可以为随机存取存储器(RAM)的主存储器306,并且还可包含次存储器312。次存储器312可包含例如硬盘驱动器314和/或表示软盘驱动器、磁带驱动器、光盘驱动器等的可移动存储驱动器316。可移动存储驱动器316以本领域普通技术人员公知的方式从可移动存储单元318读取和/或向可移动存储单元318写入。可移动存储单元318表示例如由可移动存储驱动器316读取和写入的软盘、磁带、光盘等。可以理解,可移动存储单元318包含在其中存储计算机软件和/或数据的计算机可用存储介质。在示例性实施例中,次存储器312可包含用于允许将计算机程序或其它的指令加载到计算机系统中的其它类似的装置。这种装置可包含例如可移动存储单元322和接口320。它们的例子可包含程序盒子和盒子接口(诸如在视频游戏装置中所找到的)、可移动的存储芯片(诸如EPROM或PR0M)及其相关的插口,以及其它可移动存储单元322和允许从可移动存储单元322向计算机系统300传送软件和数据的接口320。计算机系统300还可包含通信接口324。通信接口3M允许在计算机系统和外部装置之间传送软件和数据。通信接口3M的例子可包含调制解调器、网络接口(诸如以太网卡)、通信端口、PCMCIA插槽和卡等。并且,本发明的各方面可采取在其上体现(实施)有计算机可读程序代码的一个或更多个计算机可读介质中体现的计算机程序产品的形式。图中的流程图和框图示出根据本发明的各种实施例的系统、方法和计算机程序产品的可能的实现的基础结构、功能和操作。在这一点上,流程图或框图中的各块(框)可表示包含用于实现规定的逻辑功能的一个或更多个可执行指令的模块、段或代码的一部分。还应注意,在一些替代性实现方式中,在块中注明的功能可以以图示中标明的次序以外的次序发生。例如,根据所包含的功能,依次表示的两个块可能实际基本上被同时实现,或者,块有时可以以相反的次序执行。还应注意,可通过执行特定的功能或动作的专用的基于硬件的系统或专用硬件和计算机指令的组合来实现框图和/或流程图的各块以及框图和/或流程图中的块的组合。如本领域技术人员可以理解的,本发明的多个方面可体现为系统、方法或计算机程序产品。因此,本发明的多个方面可采取完全硬件实施例、完全软件实施例(包含固件、常驻软件、微代码等)或组合软件和这里均可统称为“电路”、“模块”或“系统”的硬件的实施例的形式。并且,本发明的多个方面可采取在其上体现有计算机可读程序代码的一个或更多个计算机可读介质中体现的计算机程序产品的形式。这些计算机程序指令还可存储在计算机可读介质中,这些计算机程序指令可引导计算机、其它可编程数据处理设备或其它的装置以特定的方式起作用,使得存储于计算机可读介质中的指令产生包含实现在流程图和/或框图(一个或多个框)中规定的功能/动作的指令的制造物品。计算机程序指令还可被加载到计算机、其它可编程数据处理设备或其它装置上,以导致在计算机、其它可编程设备或其它装置上执行一系列的操作步骤,以产生计算机实现的过程,使得在计算机或其它的可编程设备上执行的指令提供用于实现在流程图和/或框图(一个或多个框)中规定的功能/动作的过程。可以利用一个或更多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以为例如但不限于电子、磁、光、电磁、红外或半导体系统、设备或装置或以上的任意适当的组合。计算机可读存储介质的更特定的例子(非详尽的列表)包含以下的方面具有一个或更多个导线的电气连接部、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPR0M或闪存存储器)、光纤、便携式光盘只读存储器(CD-ROM)、光存储装置、磁存储装置或以上的任意适当的组合。在本文件的上下文中,计算机可读存储介质可以为可包含或存储由指令执行系统、设备或装置使用或与其结合使用的程序的任何可触知介质。计算机可读信号介质可包含具有在其中例如以基带或载波的一部分体现的计算机可读程序代码的传播的数据信号。这种传播的信号可采取各种形式中的任意一种,包括但不限于电磁、光或它们的任意的组合。这些传播的信号通过通信路径(即,信道)3提供给通信接口323。计算机可读信号介质可以是任何计算机可读介质,其不是计算机可读存储介质但可通信、传播或传送由指令执行系统、设备或装置使用或与其结合使用的程序。可使用包含但不限于无线、有线、光纤电缆、RF等或以上的任意适当的组合的任何适当的介质传送在计算机可读介质上体现的程序代码。可以一个或更多个编程语言的任意组合书写用于实施本发明的各方面的操作的计算机程序代码,该语言包括诸如JaviSmalltalk或C++等的面向对象的编程语言和诸如“C”编程语言或类似的编程语言的常规的程序编辑语言。程序代码可如下执行作为独立的软件封装,完全地在用户的计算机上、部分地在用户的计算机上、部分地在用户的计算机上并且部分地在远程计算机上或者完全在远程计算机或服务器上执行。在后一种情形中,远程计算机可通过包含局域网络(LAN)或广域网络(WAN)的任意类型的网络与用户的计算机连接,或者,可与外部计算机进行连接(例如,通过使用因特网服务提供商的因特网)。本发明的各种实施例的优点包含开发检索数据仓库的查询的简化。其它的实施例中的一些的其它的优点包含开发不易出错的查询。本发明的一些实施例的一些其它的优点包含诸如但不限于中央处理单元(CPU)的计算资源的最佳使用。虽然本发明解释了本发明的一些特定实施例的各种优点,但是本领域技术人员根据本发明的教导可以理解,本发明的优点不限于以上提到的优点。这里使用的术语仅出于描述特定实施例的目的并不意于限制本发明。如这里所使用的,除非本文另外明确规定,否则单数形式“一个”、“一种”和“该”意于包含复数形式。还应理解,在本说明书中使用的术语“包含”和/或“包括”规定陈述的特征、整数、步骤、操作、元件和/或部件的存在,但不排除一个或更多个其它的特征、整数、步骤、操作、元件、部件和/或它们的组的存在或添加。虽然已详细地描述了本发明的示例性实施例,但应理解,在不背离由所附的权利要求限定的本发明的精神和范围的情况下,可以对其进行各种变化、替代和改变。可以以各特定应用期望的任何组合实现对于本发明的示例性实施例描述的变化。因此,这里描述的对于特定的应用具有特定的优点的特定的限制和/或实施例改进不需要被用于所有的应用。并且,不需要在包含关于本发明的示例性实施例描述的一个或更多个概念的方法、系统和/或设备中实现所有的限制。这里使用的术语仅出于描述特定实施例的目的,并不意于限制本发明。如这里所使用的,除非本文另外明确规定,单数形式“一个”、“一种”和“该”意于包含复数形式。还应理解,在本说明书中使用的术语“包含”和/或“包括”规定陈述的特征、整数、步骤、操作、元件和/或部件的存在,但不排除一个或更多个其它的特征、整数、步骤、操作、元件、部件和/或它们的组的存在或添加。权利要求1.一种用于优化数据库事务的计算机实现的方法,包括接收查询,该查询规定(i)提供给该查询的一组谓词和(ii)该查询为真要满足的该组谓词中的谓词的最少数量;使用所述查询对存储于计算机可读存储介质中的仓库来执行操作;以及呈现满足最少数量的谓词的一组结果。2.如利要求1所述的计算机实现的方法,其中,该查询被构造为ATLEAST(N、PUP2、P3、...H(),其中,Pl1是被提供给该查询的该组谓词,并且,N是该查询为真要满足的谓词的所述最少数量。3.如利要求2所述的计算机实现的方法,其中,所述一组谓词中的谓词PlHi各自表示为逐位谓词模式,以形成一组逐位谓词模式,并且,通过使用该组逐位谓词模式生成逻辑表达式来优化该查询。4.如利要求1所述的计算机实现的方法,其中,所述谓词的最少数量是使该查询运行的预定的阈值。5.如利要求1所述的计算机实现的方法,其中,该仓库包含结构化数据。6.如利要求1所述的计算机实现的方法,其中,该查询采取结构化查询语言(SQL)的形式。7.一种用于优化数据库事务的数据处理系统,所述数据处理系统包括包含存储介质的存储装置,其中,所述存储装置存储计算机可用程序代码;和处理器,其中所述处理器执行所述计算机可用程序代码,并且,所述计算机可用程序代码包括用于接收查询的计算机可用代码,该查询规定(i)提供给该查询的一组谓词和(ii)该查询为真要满足的该组谓词中的谓词的最少数量;用于使用所述查询对存储于计算机可读存储介质中的仓库执行操作的计算机可用代码;以及用于呈现满足所述最少数量的谓词的一组结果的计算机可用代码。8.如权利要求7所述的数据处理系统,其中,该查询被构造为ATLEAST(N、PI、P2、P3、...1),其中,Pl1是被提供给该查询的一组谓词,并且,N是查询为真要满足的所述谓词的所述最少数量。9.如权利要求7所述的数据处理系统,其中,所述一组谓词中的谓词PlHi各自表示为逐位谓词模式,以形成一组逐位谓词模式,并且,通过使用该组逐位谓词模式生成逻辑表达式来优化该查询。10.如权利要求7所述的数据处理系统,其中,所述谓词的最少数量是使该查询运行的预定的阈值。11.如权利要求7所述的数据处理系统,其中,该仓库包含结构化数据。12.如权利要求7所述的数据处理系统,其中,该查询采取结构化查询语言(SQL)的形式。全文摘要本发明涉及用于优化数据库查询的方法和系统。本发明的实施例涉及用于优化被配置为用于接收查询的数据库事务的方法、计算机程序产品和系统。查询规定提供给查询的一组谓词和查询为真要满足的谓词的最少数量。使用查询对存储于计算机可读存储介质中的仓库执行操作。呈现满足最少数量的谓词的一组结果。文档编号G06F17/30GK102479255SQ201110361039公开日2012年5月30日申请日期2011年11月15日优先权日2010年11月19日发明者S·辛格,V·M·库尔卡尼申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1