用于维护主动查询的方法、系统和计算机可读存储介质技术方案

技术编号:11914233 阅读:75 留言:0更新日期:2015-08-20 17:30
一个方面包括用于维护主动查询的方法。所述方法包括基于数据库中的至少两个关系中的数据项来执行查询。所述执行包括输出与查询相关联的控制信息和查询结果。记录查询结果和控制信息。接收所述数据项中至少之一在所述执行之后被更新的通知。响应于控制信息来修改查询结果以反映在所述执行之后被更新的数据项。

【技术实现步骤摘要】
【国外来华专利技术】【专利说明】主动数据库查询的维护相关申请的交叉引用本申请要求于2012年12月20日提交的美国申请N0.13/722067的权益,其全部内容通过引用合并到本文中。
技术介绍
本专利技术涉及数据库查询,并且更具体地涉及主动数据库查询的维护。数据库管理系统使得用户可以存储并且更新大量的信息,同时还支持对所述信息的查询。理想地,查询返回反映数据库中的最新数据的回答。然而,长期运行的查询或事务可能需要处理其他并行事务正试图更新的数据。几个现有的并行控制技术尝试管控这样的冲突更新。例如,可以利用基于锁的技术通过使相冲突的事务等待来防止多个事务获得对冲突数据项的访问。基于锁的技术由于死锁而导致偶尔需要中止事务,并且如果存在频繁地被访问的数据项,则会导致很长的等待队列。其他现有的控制技术包括以下乐观方法,所述乐观方法仅在事务的结尾处检查冲突,并且如果发现冲突则中止事务,从而会在冲突频繁时导致大量的无用功。基于多版本时间戳的控制技术保持对数据项的访问时间戳的跟踪,并且如果事务需要以与所述数据项的时间戳不一致的方式写入数据项,则中止该事务。再一次导致了大量的无用功。为了使查询更快,通用的技术是将得到的信息存储在数据库中,以使得对数据的检索或计算更高效。这样得到的信息的一个示例是物化视图,在物化视图中,查询(例如,子查询)的回答显式地存储在数据库中。如果后面的查询能够使用该被存储的子查询,则与没有物化视图可用的情况相比该后面的查询可以更快地被回答。
技术实现思路
实施方式包括用于维护主动查询的方法、系统以及计算机程序产品。一个方面包括基于数据库中的至少两个关系中的数据项来执行查询,其中,所述执行包括输出与查询相关联的控制信息和查询结果。另一方面包括记录所述查询结果和所述控制信息。另一方面包括接收所述数据项中至少之一在所述执行之后被更新的通知。再一方面包括响应于控制信息来修改所述查询结果以反映在所述执行之后被更新的数据项。通过本专利技术的技术来实现附加特征和优点。在本文中详细地描述了本专利技术的其他实施方式和方面并且认为本专利技术的其他实施方式和方面是要求保护的专利技术的一部分。为了更好地理解具有优点和特征的本专利技术,参照说明书并参照附图。【附图说明】在权利要求书中具体指出并且清楚地要求保护被视为本专利技术的主题。根据以下结合附图而做出的详细描述,本专利技术的前述及其他特征和优点变得明显,在附图中:图1描绘了零售公司的数据库的示例;图2描绘了根据示例性实施方式的用于维护主动数据库查询的处理;图3描绘了对包括合并联接处理的查询的跟踪的示例;以及图4描绘了根据本专利技术的实施方式的可以实现对主动数据库查询的维护的系统的框图。【具体实施方式】示例性实施方式涉及使用增量维护处理来化解主动数据库事务之间的冲突。为了提高数据库性能而使用物化视图来存储子查询的结果。本文所描述的实施方式通过使用增量视图维护处理来避免不得不在每次数据库更新之后从头开始重新计算物化视图,所述增量视图维护处理利用在视图的初始物化期间生成的跟踪信息来更新物化视图。本文所描述的实施方式通过使用增量维护处理来化解主动事务之间的冲突。当事务(Tl)提交并且更新主动事务(T2)需要的数据项(例如,写入新的值或删除该数据项)时,针对关于该变化的维护来标记T2。在T2完成之前,增量维护处理按照由所提交的并行事务对所需项作出的所有改变来修改T2的执行。可能需要多轮维护。通过增量地修改T2的执行而非中止并重新开始T2,系统能够节省很多由T2完成的工作。为了识别T2需要的项以及快速确定这些项的变化会如何影响早先的执行,本文所描述的实施方式包括构造被称为敏感指数的一种新结构。敏感指数还可以用于在其他事务并行地更新数据的同时创建物化视图,并有效地和增量地使物化视图保持最新。现在参照图1,示出了向客户销售产品的零售公司的数据库的示例以说明本文所描述的实施方式的各个特征。图1所示的数据库包括客户表102、订单表104和行项目表106。客户表102存储关于具有唯一的客户标识符(C_ID)、类别名称(CATEGORY)和客户名称(NAME)以及其他属性的客户的信息。订单表104存储关于客户所下的订单的信息,包括订单标识符(0_ID)、客户标识符(C_ID)和订单日期(DATE)以及其他属性。每个订单可以包括如记录在行项目表106中的多个行项目。记录在行项目表106中的每个行项目包括对应的订单标识符(0_ID)、产品标识符(P_ID)和所订购的产品的数量(QUANTITY)以及其他属性。数据库还可以包括未在图1中示出的其他表(在本文中也被称为“关系”)。零售公司处的用户可以决定自己愿意针对不同的客户类别对产品进行简要描述。所述用户确定自己愿意了解哪些产品被每个类别中的客户购买了五个或更多个的数量。所述用户限定产品类别视图(Pcat),可以用结构化查询语言(SQL)将产品类别视图表达为:Create View Pcat AsSelect Distinct CATEGORY,P—IDFrom Line—Item Lj Orders 0,Customer CWhere L.0—ID = 0.0—ID And 0.C—ID = C.C—ID And L.QUANTITY) = 5可用基于规则的语言如Datalog将同一视图表达为:Pcat(CATEGORY, P_ID):-LineItem(P_ID, 0_ID, QUANTITY,...),Orders (0_ID, C_ID,...),Customer(C_ID, CATEGORY,...),QUANTITY〉= 5.如果用户确定Pcat视图在查询中被共用,则所述用户可以选择物化所述视图,在这种情况下,满足视图条件的记录显式地被存储。在潜在地长期运行的事务(T)中创建物化。当发生显式存储时,即当T提交时,所存储的Pcat视图必须与当前数据库状态一致。一致性是一种挑战,因为在T开始之后可能提交了另外的事务,所述另外的事务修改了早先由T读取的数据。传统的解决方案是当识别到冲突时中止T,或者在T执行时封锁所有潜在地冲突的事务,从而减少并行性。另一现有技术包括扩充视图以存储视图中的每个记录能够被得到的次数(即,“支持计数”),以使得系统能够了解何时移除了记录的最后得到。仅当该记录没有剩余的得到时才从物化视图中移除该记录。针对该示例,假设使用每个(CATEGORY, P_ID)配对的得到的计数来扩充视图。在本专利技术的实施方式中,数据库管理系统选择用于执行查询的执行计划。针对上面的示例,Pcat视图的示例性执行计划(在本文中被称为“Peat视图的第一执行计划”)可以包括:1.按照0_ID顺序来访问行项目表106和订单表104中的记录,将关于QUANTITY的过滤条件应用于行项目表106中的记录。2.对结果的记录序列进行合并联接。3.针对从步骤2得到的每个记录R:将R与来自客户表102的C_ID的记录进行合并联接,只保留CATEGORY和P_ID属性。4.识别步骤3的结果中的唯一配对,并将每个配对连同副本数一起存储。如上所述,为了按照特定顺序来访问关系,数据库管理系统可以利用所存储的关系的物理排序,或者数据库管理系统可以将关系显式地排序成期望的顺序。可替选地,数据库管理系统可以使用合适本文档来自技高网...

【技术保护点】
一种用于维护主动查询的方法,所述方法包括:基于数据库中的至少两个关系中的数据项来执行查询,所述执行包括输出与所述查询相关联的控制信息和查询结果;记录所述查询结果和所述控制信息;接收所述数据项中至少之一在所述执行之后被更新的通知;响应于所述控制信息来修改所述查询结果以反映在所述执行之后被更新的数据项。

【技术特征摘要】
【国外来华专利技术】...

【专利技术属性】
技术研发人员:托德·L·费尔德赫伊曾
申请(专利权)人:洛吉奇布洛克斯公司
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1