首页 / 专利库 / 软件 / 物化视图 / 用于维护主动查询的方法、系统和计算机可读存储介质

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

阅读:794发布:2020-05-15

专利汇可以提供用于维护主动查询的方法、系统和计算机可读存储介质专利检索,专利查询,专利分析的服务。并且一个方面包括用于维护主动查询的方法。所述方法包括基于 数据库 中的至少两个关系中的数据项来执行查询。所述执行包括输出与查询相关联的控制信息和查询结果。记录查询结果和控制信息。接收所述数据项中至少之一在所述执行之后被更新的通知。响应于控制信息来 修改 查询结果以反映在所述执行之后被更新的数据项。,下面是用于维护主动查询的方法、系统和计算机可读存储介质专利的具体信息内容。

1.一种用于维护主动查询的方法,所述方法包括:
基于数据库中的至少两个关系中的数据项来执行查询,所述执行包括输出与所述查询相关联的控制信息和查询结果;
记录所述查询结果和所述控制信息;
接收所述数据项中至少之一在所述执行之后被更新的通知;
响应于所述控制信息来修改所述查询结果以反映在所述执行之后被更新的数据项,其中,所述控制信息包括所述查询的联接关键字的敏感指数,所述敏感指数包括一系列条目,每个条目包括所述联接关键字的敏感范围,以及
其中,所述敏感范围是所述联接关键字的在被修改时能够改变所述查询结果的值的范围。
2.根据权利要求1所述的方法,还包括:
基于所述修改来更新所述控制信息;以及
记录所修改的查询结果和所更新的控制信息。
3.根据权利要求2所述的方法,还包括:
接收所述数据项中至少之一在记录所修改的查询结果和所更新的控制信息之后被更新的第二通知;以及
响应于所更新的控制信息来修改所修改的查询结果以反映所述第二通知中的数据项。
4.根据权利要求1所述的方法,其中,所述执行包括进行合并联接操作,并且所述控制信息基于合并联接跟踪信息来生成。
5.根据权利要求1所述的方法,其中,所选择的数据项是用于访问所述数据库中的其他数据项的关键字。
6.根据权利要求1所述的方法,其中,与所述查询相关联的控制信息基于在所述执行期间收集的跟踪信息。
7.根据权利要求1所述的方法,其中,所述记录包括物化所述查询结果的视图。
8.根据权利要求1所述的方法,其中,所述查询是形成以下事务的多个查询中之一:所述事务需要与在所述事务提交时所述数据库的状态一致。
9.根据权利要求8所述的方法,其中,所述事务与另外的事务并行地执行,并且在所述执行之后被更新的所述数据项中至少之一由所述另外的事务响应于以下来更新:所述另外的事务提交至所述数据库。
10.一种用于维护主动查询的系统,包括:
存储器,具有计算机可读计算机指令;以及
处理器,用于执行所述计算机可读指令以执行以下方法,所述方法包括:
基于数据库中的至少两个关系中的数据项来执行查询,所述执行包括输出与所述查询相关联的控制信息和查询结果;
记录所述查询结果和所述控制信息;
接收所述数据项中至少之一在所述执行之后被更新的通知;
响应于所述控制信息来修改所述查询结果以反映在所述执行之后被更新的数据项,其中,所述控制信息包括所述查询的联接关键字的敏感指数,所述敏感指数包括一系列条目,每个条目包括所述联接关键字的敏感范围,以及
其中,所述敏感范围是所述联接关键字的在被修改时能够改变所述查询结果的值的范围。
11.根据权利要求10所述的系统,其中,所述方法还包括:
基于所述修改来更新所述控制信息;以及
记录所修改的查询结果和所更新的控制信息。
12.根据权利要求11所述的系统,其中,所述方法还包括:
接收所述数据项中至少之一在记录所修改的查询结果以及所更新的控制信息之后被更新的第二通知;以及
响应于所更新的控制信息来修改所修改的查询结果以反映所述第二通知中的数据项。
13.根据权利要求11所述的系统,其中,所述执行包括进行合并联接操作,并且所述控制信息基于合并联接跟踪信息来生成。
14.根据权利要求10所述的系统,其中,所选择的数据项是用于访问所述数据库中的其他数据项的关键字。
15.根据权利要求10所述的系统,其中,与所述查询相关联的控制信息基于在所述执行期间收集的跟踪信息。
16.根据权利要求10所述的系统,其中,所述记录包括物化所述查询结果的视图。
17.根据权利要求10所述的系统,其中,所述查询是形成以下事务的多个查询中之一:
所述事务需要与在所述事务提交时所述数据库的状态一致。
18.根据权利要求17所述的系统,其中,所述事务与另外的事务并行地执行,并且在所述执行之后被更新的所述数据项中至少之一由所述另外的事务响应于以下来更新:所述另外的事务提交至所述数据库。
19.一种用于维护主动查询的计算机可读存储介质,所述计算机可读存储介质包含有计算机可读程序代码,所述计算机可读程序代码当由计算机处理器执行时使所述计算机处理器实现以下方法,所述方法包括:
基于数据库中的至少两个关系中的数据项来执行查询,所述执行包括输出与所述查询相关联的控制信息和查询结果;
记录所述查询结果和所述控制信息;
接收所述数据项中至少之一在所述执行之后被更新的通知;
响应于所述控制信息来修改所述查询结果以反映在所述执行之后被更新的数据项,其中,所述控制信息包括所述查询的联接关键字的敏感指数,所述敏感指数包括一系列条目,每个条目包括所述联接关键字的敏感范围,以及
其中,所述敏感范围是所述联接关键字的在被修改时能够改变所述查询结果的值的范围。

说明书全文

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

[0001] 相关申请的交叉引用
[0002] 本申请要求于2012年12月20日提交的美国申请No.13/722067的权益,其全部内容通过引用合并到本文中。

技术领域

[0003] 本发明涉及数据库查询,并且更具体地涉及主动数据库查询的维护。

背景技术

[0004] 数据库管理系统使得用户可以存储并且更新大量的信息,同时还支持对所述信息的查询。理想地,查询返回反映数据库中的最新数据的回答。然而,长期运行的查询或事务可能需要处理其他并行事务正试图更新的数据。
[0005] 几个现有的并行控制技术尝试管控这样的冲突更新。例如,可以利用基于的技术通过使相冲突的事务等待来防止多个事务获得对冲突数据项的访问。基于锁的技术由于死锁而导致偶尔需要中止事务,并且如果存在频繁地被访问的数据项,则会导致很长的等待队列。其他现有的控制技术包括以下乐观方法,所述乐观方法仅在事务的结尾处检查冲突,并且如果发现冲突则中止事务,从而会在冲突频繁时导致大量的无用功。基于多版本时间戳的控制技术保持对数据项的访问时间戳的跟踪,并且如果事务需要以与所述数据项的时间戳不一致的方式写入数据项,则中止该事务。再一次导致了大量的无用功。
[0006] 为了使查询更快,通用的技术是将得到的信息存储在数据库中,以使得对数据的检索或计算更高效。这样得到的信息的一个示例是物化视图,在物化视图中,查询(例如,子查询)的回答显式地存储在数据库中。如果后面的查询能够使用该被存储的子查询,则与没有物化视图可用的情况相比该后面的查询可以更快地被回答。

发明内容

[0007] 实施方式包括用于维护主动查询的方法、系统以及计算机程序产品。一个方面包括基于数据库中的至少两个关系中的数据项来执行查询,其中,所述执行包括输出与查询相关联的控制信息和查询结果。另一方面包括记录所述查询结果和所述控制信息。另一方面包括接收所述数据项中至少之一在所述执行之后被更新的通知。再一方面包括响应于控制信息来修改所述查询结果以反映在所述执行之后被更新的数据项。
[0008] 通过本发明的技术来实现附加特征和优点。在本文中详细地描述了本发明的其他实施方式和方面并且认为本发明的其他实施方式和方面是要求保护的发明的一部分。为了更好地理解具有优点和特征的本发明,参照说明书并参照附图

附图说明

[0009] 在权利要求书中具体指出并且清楚地要求保护被视为本发明的主题。根据以下结合附图而做出的详细描述,本发明的前述及其他特征和优点变得明显,在附图中:
[0010] 图1描绘了零售公司的数据库的示例;
[0011] 图2描绘了根据示例性实施方式的用于维护主动数据库查询的处理;
[0012] 图3描绘了对包括合并联接处理的查询的跟踪的示例;以及
[0013] 图4描绘了根据本发明的实施方式的可以实现对主动数据库查询的维护的系统的框图

具体实施方式

[0014] 示例性实施方式涉及使用增量维护处理来化解主动数据库事务之间的冲突。为了提高数据库性能而使用物化视图来存储子查询的结果。本文所描述的实施方式通过使用增量视图维护处理来避免不得不在每次数据库更新之后从头开始重新计算物化视图,所述增量视图维护处理利用在视图的初始物化期间生成的跟踪信息来更新物化视图。
[0015] 本文所描述的实施方式通过使用增量维护处理来化解主动事务之间的冲突。当事务(T1)提交并且更新主动事务(T2)需要的数据项(例如,写入新的值或删除该数据项)时,针对关于该变化的维护来标记T2。在T2完成之前,增量维护处理按照由所提交的并行事务对所需项作出的所有改变来修改T2的执行。可能需要多轮维护。通过增量地修改T2的执行而非中止并重新开始T2,系统能够节省很多由T2完成的工作。为了识别T2需要的项以及快速确定这些项的变化会如何影响早先的执行,本文所描述的实施方式包括构造被称为敏感指数的一种新结构。敏感指数还可以用于在其他事务并行地更新数据的同时创建物化视图,并有效地和增量地使物化视图保持最新。
[0016] 现在参照图1,示出了向客户销售产品的零售公司的数据库的示例以说明本文所描述的实施方式的各个特征。图1所示的数据库包括客户表102、订单表104和行项目表106。客户表102存储关于具有唯一的客户标识符(C_ID)、类别名称(CATEGORY)和客户名称(NAME)以及其他属性的客户的信息。订单表104存储关于客户所下的订单的信息,包括订单标识符(O_ID)、客户标识符(C_ID)和订单日期(DATE)以及其他属性。每个订单可以包括如记录在行项目表106中的多个行项目。记录在行项目表106中的每个行项目包括对应的订单标识符(O_ID)、产品标识符(P_ID)和所订购的产品的数量(QUANTITY)以及其他属性。数据库还可以包括未在图1中示出的其他表(在本文中也被称为“关系”)。
[0017] 零售公司处的用户可以决定自己愿意针对不同的客户类别对产品进行简要描述。所述用户确定自己愿意了解哪些产品被每个类别中的客户购买了五个或更多个的数量。所述用户限定产品类别视图(Pcat),可以用结构化查询语言(SQL)将产品类别视图表达为:
[0018] Create View Pcat As
[0019] Select Distinct CATEGORY,P_ID
[0020] From Line_Item L,Orders O,Customer C
[0021] Where L.O_ID=O.O_ID And O.C_ID=C.C_ID And L.QUANTITY>=5
[0022] 可用基于规则的语言如Datalog将同一视图表达为:
[0023] Pcat(CATEGORY,P_ID):-
[0024] LineItem(P_ID,O_ID,QUANTITY,...),
[0025] Orders(O_ID,C_ID,...),
[0026] Customer(C_ID,CATEGORY,...),
[0027] QUANTITY>=5.
[0028] 如果用户确定Pcat视图在查询中被共用,则所述用户可以选择物化所述视图,在这种情况下,满足视图条件的记录显式地被存储。在潜在地长期运行的事务(T)中创建物化。当发生显式存储时,即当T提交时,所存储的Pcat视图必须与当前数据库状态一致。一致性是一种挑战,因为在T开始之后可能提交了另外的事务,所述另外的事务修改了早先由T读取的数据。传统的解决方案是当识别到冲突时中止T,或者在T执行时封锁所有潜在地冲突的事务,从而减少并行性。另一现有技术包括扩充视图以存储视图中的每个记录能够被得到的次数(即,“支持计数”),以使得系统能够了解何时移除了记录的最后得到。仅当该记录没有剩余的得到时才从物化视图中移除该记录。针对该示例,假设使用每个(CATEGORY,P_ID)配对的得到的计数来扩充视图。
[0029] 在本发明的实施方式中,数据库管理系统选择用于执行查询的执行计划。针对上面的示例,Pcat视图的示例性执行计划(在本文中被称为“Pcat视图的第一执行计划”)可以包括:
[0030] 1.按照O_ID顺序来访问行项目表106和订单表104中的记录,将关于QUANTITY的过滤条件应用于行项目表106中的记录。
[0031] 2.对结果的记录序列进行合并联接。
[0032] 3.针对从步骤2得到的每个记录R:将R与来自客户表102的C_ID的记录进行合并联接,只保留CATEGORY和P_ID属性。
[0033] 4.识别步骤3的结果中的唯一配对,并将每个配对连同副本数一起存储。
[0034] 如上所述,为了按照特定顺序来访问关系,数据库管理系统可以利用所存储的关系的物理排序,或者数据库管理系统可以将关系显式地排序成期望的顺序。可替选地,数据库管理系统可以使用合适的索引结构按照关键字顺序来遍历关系。请注意,如果针对联接的操作数之一未按照联接关键字来排序,则本文所描述的数据库管理系统的实施方式仍然能够一次对无序输入的一个记录使用一系列的合并联接,如上面所示的在Pcat视图的第一执行计划的步骤3中。
[0035] 上面示出的Pcat视图的第一执行计划具有两个合并联接步骤。合并联接构造关于该合并联接的输入的迭代器,并且如果首位迭代器和拖尾迭代器的关键字不同,则基于首位迭代器的联接关键字来推进拖尾迭代器。该操作在本文中被称为“seek”。例如,如果拖尾关键字为5并且首位关键字为8,则拖尾迭代器调用seek(8)以推进到具有至少8的关键字的对应联接输入关系中的第一记录。如果所有迭代器的关键字都相同,则针对具有相同联接关键字的输入记录的所有组合生成输出记录,并使用在本文中被称为“next”的操作将输入之一的迭代器推进到下一个关键字。对成对输入的seek操作和next操作的序列在本文中被称为“跟踪”。跟踪是控制信息即关于对该数据的特定算法的执行序列的信息的示例。
[0036] 虽然能够对任何有序的输入进行seek和next操作,但是当按照有序树结构来组织输入时,seek尤为有效。与关键字范围中的大步长对应的seek于是能够跳过许多关键字值,并且因此节省工作。
[0037] 在示例性实施方式中,敏感范围是使用如下关系(或表)A和B的合并联接的三个基本规则从合并联接的跟踪得到的:
[0038] a)如果A和B的初始关键字分别是KA和KB,并且KAKB,则称A对范围[-∞,KA]中的关键字敏感。若初始关键字相等,则任意选择上述输入之一(比如说A),并且称该输入对范围[-∞,KA]中的关键字敏感。
[0039] b)如果输入(比如说A)位于关键字K处,并且对A进行next操作而产生新的关键字K',则称A对范围[K,K']中的关键字敏感。若K是A中的最后一个关键字,则K'=∞。
[0040] c)如果输入(比如说A)位于关键字K处,并且对A进行seek(L)操作而产生新的关键字K',则称A对范围[L,K']中的关键字敏感。如果A中没有关键字至少为L,则K'=∞。
[0041] 可以按照这种方式处理任何有序的域。
[0042] 上面示出的Pcat视图的第一执行计划的步骤3表示当关系A与关系B具有外关键字关系并且关系A只具有一个记录时出现的敏感范围的特殊情况。假设关系A中的一个记录具有关键字K。在这种情况下,假设在关系B而非关系A中发生初始seek,并且在关系A而非关系B中发生随后的next操作。则关系B的敏感范围将简单地为[K,K]。
[0043] 敏感范围与其他属性值关联成为敏感指数。特别是包括了来自先前合并联接步骤的所有联接列。在上面示出的Pcat视图的第一执行计划中,与步骤2的合并联接的两个输入对应的敏感指数不具有另外的属性,并且与步骤3的合并联接对应的敏感指数包括来自记录R的O_ID。
[0044] 还可以在合并联接具有嵌套顺序的情况下限定敏感指数。例如,考虑以下Pcat视图的执行计划的可替选实施方式(在本文中被称为“Pcat视图的第二执行计划”)。
[0045] 1.按照(C_ID,O_ID)字典序访问订单表104中的记录,并且按照C_ID顺序访问客户表102中的记录。
[0046] 2.对C_ID的两个输入进行合并联接。其结果将具有针对每个C_ID的O_ID值的有序运行。
[0047] 3.针对得到的中间结果中的每个C_ID,按照顺序:按照O_ID顺序遍历行项目表106,对QUANTITY应用过滤条件,并对O_ID的两个输入进行合并联接,只保留CATEGORY和P_ID属性。
[0048] 4.识别先前步骤的结果中的唯一配对,并将每个配对连同副本数一起存储。
[0049] 在该Pcat视图的第二执行计划中,针对每个C_ID值发生一次步骤3中的合并联接。因此,本文所描述的数据库管理系统的实施方式将维护敏感指数,该敏感指数标识对每个C_ID值的O_ID范围的敏感性(基于合并联接的跟踪)。
[0050] 在示例性实施方式中,所述数据库管理系统基于在所用的计算时间和资源方面对每个计划的成本的估计,从各种可替选计划当中选择计划。所述数据库管理系统可以根据对会受益于这样的指数的某些表的更新频率以及维护这样的指数的时间开销和空间开销来选择物化所有的敏感指数或其中一些敏感指数。
[0051] 假设对每个输入的关系中的记录(例如,新的记录或删除的记录)中的数据项进行更新,则可以使用敏感指数来确定这些变化是否会使跟踪不同。如果该变化不会使跟踪不同,则数据库管理系统能够肯定联接结果对这些新的记录的出现不敏感。另一方面,如果跟踪响应于某些记录的更新而发生了变化,则敏感指数向数据库管理系统提供重要信息。该信息使得数据库管理系统的实施方式能够使用汇总(summarize)可能有必要维护的关键字范围的change-oracle来增量地并且有效地维护输出结果。在一种实施方式中,change-oracle显式地被物化。在替选实施方式中,change-oracle没有被物化,而是必要时从匹配的敏感间隔的集合中有效地得到。
[0052] 如在本文中使用的那样,术语“change-oracle”指代汇总属性值组合的空间内的区域的查询表达。这些属性值组合的空间内的区域是以下区域,其中,需要响应于对基础数据的更新来重新评估查询。
[0053] 如在本文中使用的那样,术语“敏感间隔”和“敏感范围”可以互换地使用,以指代根据以上提供的三个规则从合并联接跟踪得到的关键字值的范围。敏感范围内的修改的关键字具有改变合并联接结果的可能性。
[0054] 如在本文中使用的那样,术语“敏感指数”指代表示一系列条目的数据结构。例如,合并联接的联接关键字A的敏感指数是表示一系列条目的数据结构,每个条目包括A的敏感范围以及来自合并联接输入的其他属性的零个或更多个值。
[0055] 现在参照图2,一般地示出了根据实施方式的用于进行主动数据库查询的维护的处理。在本文中,用使用图1所示的表和先前描述的Pcat视图的示例来描述各实施方式的特征,并且应当理解,各实施方式不限于这些表和视图。在框202处,使用例如Pcat视图的第一执行计划来执行如上述Pcat查询的查询。在框204处,对Pcat视图连同对应的敏感指数进行物化。在框206处,接收对查询所使用的表中的数据的更新的通知。例如,考虑C_ID是“12345”的客户将类别从类别“ABC”变成类别“DEF”的情况。这种改变通过从客户表102中删除行(12345,ABC,…)并将新的行(12345,DEF,…)插入客户表102中来实现。
[0056] 在框208处,察看一个或更多个敏感指数以确定这种变化对Pcat视图的影响。在本文所描述的示例的实施方式中,系统检查对于客户表102的敏感指数I(O_ID,[C_ID1,C_ID2])。存在两种情况。在第一种情况下,12345不在指数(I)中的任何条目的[C_ID1,C_ID2]范围内,因此,该客户没有下具有超过5的行项目数量的任何订单,因此更新对最终结果没有影响。删除和插入都不会改变合并联接结果。另外,无需改变敏感指数,因为在对于其他输入的敏感指数中一定跳过了12345。在第二种情况下,12345处于I中的至少一个条目的[C_ID1,C_ID2]范围中,因此,最终结果可能变化,因为客户12345先前下了具有超过5的数量的行项目的订单。响应于对客户12345的初始删除,系统标识[C_ID1,C_ID2]范围包括12345的I中所有的O_ID值。在实施方式中,通过使用特定的数据结构例如区间树的类似B树的实现来使得更容易地确定12345是否在I中的某些条目的[C_id1,C_id2]范围中,以使得能够对包括12345的间隔进行快速查询。
[0057] 现在参照图2的框210,基于在框210处进行的分析来更新change-oracle,以反映需要被重新评估的任何敏感范围。例如,针对每个匹配的O_ID,(O_ID,12345)配对被添加至change-oracle以确定需要被重新评估的查询的部分。在随后插入(12345,DEF)期间,主动数据库查询维护处理会标识I中的匹配的O_ID范围配对,该O_ID范围配对也会被添加至change-oracle。在该示例中,插入和删除具有相同的C_ID,范围与在删除期间标识的范围一致,但是在插入和删除的通常的集合中,范围可以不同。
[0058] 在框212处,当计算了change-oracle时,该change-oracle被用于增量地修改查询结果。该change-oracle限定由于更新而可能潜在地改变了的联接属性组合的子集。使用原始计划来重新执行查询的主体,但是限于来自change-oracle的(O_ID,C_ID)配对。维护处理标识先前不存在的新的中间记录,以及不再存在的旧的中间记录。在以上示例中,重复行项目表106与订单表104之间的初始联接,但是只针对change-oracle(O_ID,C_ID)配对。行项目表106只根据O_ID被过滤;并且订单表104根据O_ID id和C_ID被过滤。于是该初始联接的结果关于C_ID与客户表102联接,但是只针对其C_ID在change-oracle中的客户。在预更新状态和后更新状态两者下计算限于change-oracle的联接的部分。这两个状态之间的差对应于需要应用于查询结果的净变化。
[0059] 在当前示例中,假设客户12345恰好购买了3个行项目,即不同的产品P1、P2和P3,每个产品的数量大于5。change-oracle将标识包括这3个大数量行项目的与C_ID 12345配对的订单的O_ID。投影在该类别和产品上的该联接的之前值会是{(ABC,P1),(ABC,P2),(ABC,P3)},而该联接的之后值会是{(DEF,P1),(DEF,P2),(DEF,P3)}。然后,主动数据库查询处理将能够递减这3个产品的类别ABC的得到计数,并且递增这些产品的类别DEF的得到计数。如果该计数被递减至零,则删除该行,并且如果其得到计数被递增的行先前不存在,则用1的得到计数来插入该行。
[0060] 在实施方式中,用于表的存储结构被设计成允许对新插入和新删除的记录进行有效标识。例如,使用B树数据结构的写时拷贝(copy-on-write)页面级版本控制将使得系统能够跳过两个版本共用的子树。层叠树(cascading tree)也将良好地进行,因为层叠树将最近的变化汇集到少量的页面中。
[0061] 现在转向框214,一个或更多个敏感指数被更新。由框212和框214进行的处理在本文中被称为“维护处理”。在维护处理期间,敏感指数随着增量变化的应用而更新。在以上示例中,不存在敏感指数的净变化,因为在同一事务内删除的具有关键字12345的记录被插入的具有相同关键字的记录所替换。然而,其他改变,比如插入新的订单或删除现存的行项目将影响跟踪,因此敏感指数必然变化。由于敏感指数被更新,因此各实施方式支持对查询进行多轮维护。
[0062] 即使敏感指数包括超过由跟踪严格限定的间隔的另外的间隔,敏感指数对于维护仍然有用。另外的间隔的存在不影响该方法的正确性。在查询结果维护期间,另外的间隔可能造成少量额外的工作。虽然实施方式可以维护敏感指数,以使得敏感指数能够确切地反映对新数据的查询评估的跟踪,但是本实施方式可以以下述方式来更高效地维护敏感指数:有时包括比绝对必要更多的间隔。在通常的应用环境中,更简单的敏感指数维护的益处在权重上可能超过查询结果维护中的另外的工作成本。
[0063] 在实施方式中,敏感指数维护按照以下来进行。当在查询结果维护期间发现敏感指数中的匹配的间隔时,这些间隔被移除。在维护处理期间,设置新的敏感间隔来反映被进行的迭代的seek/next操作。得到的敏感指数不一定表示单个查询评估的跟踪的精确记录,并且可能包括相对于必要的敏感间隔而言更多的敏感间隔。尽管如此,得到的敏感指数确实覆盖了其中数据变化需要维护的所有间隔。
[0064] 现在参照图3,概括地示出了根据实施方式的对查询的跟踪。为了说明对敏感指数的维护,假设数据库管理系统正合并联接两个表X和Y。如图3所示,假设表X包括关键字0、2、4、5和6,表Y包括关键字1、2、6和7。图3示出了得到的跟踪。使用以上描述的实施方式从合并联接的跟踪得到敏感范围导致针对表X的敏感范围为{[1,2],[2,4],[6,6],[6,∞]},针对表Y的敏感间隔为{[-∞,1],[2,2],[4,6]}。
[0065] 现在假设表X和表Y发生如下更新:从表X中移除关键字5;将关键字8插入表X中;从表Y移除关键字2;并且将关键字3插入表Y中。数据库管理系统将对联接结果进行维护,同时更新跟踪和敏感指数。这些更新的change-oracle会是{[2,2],[6,∞]},反映了以下确定结果:从表Y移除关键字2并将关键字8插入表Y中可能影响先前查询结果。在实施方式中,在维护期间,change-oracle被数据库管理系统视为对其进行seek和next操作的联接的第三输入。由于维护为增量性,因此change-oracle相对于整个关键字范围很可能很小,因此对change-oracle的seek和next操作将优选地为对整个输入的关系进行这样的操作。基于change-oracle是{[2,2],[6,∞]},维护处理直接跳至关键字2并发现关键字2不再在合并联接结果中,因为从表Y中删除了关键字2。在该维护期间,数据库管理系统确定表Y中的seek(2)操作不再通向关键字2,而是通向关键字3。因此,表Y的敏感指数用[2,3]替换了[2,2]。
[0066] 从表X中关移除键字5不影响结果或跟踪,因为在初始跟踪中seek(6)操作跳过了关键字5,并且对于将关键字3插入表Y中也类似。将关键字8插入表X中不改变结果,但是改变了跟踪,因为在关键字6之后的next操作将遇到关键字8而不是结束标记。因此,针对表X的敏感指数,数据库管理系统将用[6,8]来代替[6,∞],并且将[8,∞]添加到表Y的敏感指数中。如由change-oracle所指定的那样,在处理用于维护的范围[6,∞]期间发生这些变化。维护的净结果是:(a)从联接结果中移除了关键字2;(b)表X的敏感间隔现在是{[1,2],[2,4],[6,6],[6,8]};以及(c)表Y的敏感间隔现在是{[-∞,1],[2,3],[4,6],[8,∞]}。X的敏感指数包括[2,4]而不是[3,4],该间隔将在更新后的数据的跟踪中。系统保持较大间隔[2,4]以简化用于敏感指数的维护处理。
[0067] 取决于应用,维护能够在每次事务性更新之后立即进行,或者响应于一批更新而以延迟的方式进行。
[0068] 在另一实施方式中,除了联接属性以外,敏感指数具有另外的属性。包括由敏感指数中的查询输出的属性经常是有益的,如由以下示例示出的那样。考虑上面的Pcat视图,数据库管理系统使用根据CATEGORY和P_ID分组的最小的C_ID来扩充视图,而非使用每个(CATEGORY,P_ID)配对的得到计数来扩充视图。记录最小的C_ID而不是计数的益处是我们能够避免在维护该计数时的一些工作。当用于更新的C_ID大于当前最小的C_ID时,计数需要针对每次组更新而变化,而最小C_ID在当更新的C_ID大于当前最小C_ID时无需更新。
[0069] 考虑上述Pcat视图的第一执行计划的步骤3的敏感指数。假设系统在敏感指数I中不是仅记录(O_ID,[C_ID1,C_ID2]),而是记录(P_ID,O_ID,[C_ID1,C_ID2])。当发生对客户表102的更新时,数据库管理系统检查I以发现其C_ID范围包括经更新的行的C_ID的条目。因为数据库管理系统现在能够访问P_ID,因此数据库管理系统能够确定会受更新影响的(CATEGORY,P_ID)配对,并读取现存的视图以获得该组的最小当前C_ID(称其为M)。如果当前C_ID针对插入大于M或等于M,则可以忽略该更新,因为该更新不改变视图。如果当前C_ID小于M,并且更新为插入,则M被当前C_ID代替。如果当前C_ID小于或等于M并且更新为删除,则将触发更昂贵的维护操作以标识针对该组的新的最小的C_ID,或缺少针对该组的任何剩下的C-id。如果触发更昂贵的维护操作的更新的频率足够小,则这种维护策略的选择可能是有利的。
[0070] 参照图4,概括地示出了用于自动地进行主动数据库查询的维护的示例性系统的框图。该系统包括由位于主机系统404上的一个或更多个计算机程序来执行的主动数据库查询维护应用程序410。在实施方式中,主动数据库查询维护应用程序410的全部或一部分是在主机系统404上执行的数据库管理系统的一部分。在另一实施方式中,主动数据库查询维护应用程序410的全部或一部分是支持事务处理和查询两者的系统的部件。
[0071] 图4所描绘的系统包括一个或更多个用户系统402,在一个或更多个地理位置处的用户(例如,终端用户、数据库管理员)可以通过用户系统402联络主机系统404,以启动执行数据库查询和/或事务处理的程序。用户系统402经由网络406耦接至主机系统404。每个用户系统402可以使用执行计算机程序的通用计算机来实现,所述计算机程序用于执行本文中所描述的处理。用户系统402可以是个人计算机(例如,膝上型计算机、平板计算机、蜂窝电话)或主机附接的终端。如果用户系统402是个人计算机,则本文中描述的处理可以由用户系统402和主机系统404共享。用户系统402还可以包括游戏控制台、网络管理装置以及现场可编程阵列。此外,多个用户系统402和/或主机系统404可以并行操作以执行主动数据库查询维护。
[0072] 网络406可以是任何类型的已知网络,包括但不限于:广域网(WAN)、局域网(LAN)、全球网(例如,因特网)、虚拟专用网(VPN)、网络以及内联网。网络406可以使用无线网络或本领域已知的任何种类的物理网络实现方式来实现。用户系统402可以通过多种网络(例如,蜂窝和因特网)耦接至主机系统,使得并非所有用户系统402都通过相同的网络来耦接至主机系统404。用户系统402和主机系统404中的一个或更多个系统可以以无线方式连接至网络406。在一种实施方式中,网络为因特网并且一个或更多个用户系统402执行用户接口应用(例如,web浏览器)以通过网络406连接主机系统404。在另一示例性实施方式中,用户系统402直接地(即,不通过网络406)连接至主机系统404。在又一实施方式中,主机系统404直接地连接至或包含存储装置408。
[0073] 存储装置408包括与主动数据库查询维护有关的数据,并且存储装置408可以使用用于存储电子信息的多种装置来实现。在实施方式中,存储在存储装置408中的数据包括但不限于:一个或更多个数据库表、物化视图、敏感范围、敏感指数、敏感范围、change-oracle、视图以及计划。应理解,存储装置408可以使用包含在主机系统404中的存储器或者作为单独的物理装置的存储器来实现。存储装置408作为遍及包括网络406的分布式环境的统一数据源,可以逻辑上可寻址。存储在存储装置408中的信息可以经由主机系统404和/或经由用户系统402被检索和操纵。
[0074] 图4中描绘的主机系统404可以使用响应于存储在可由服务器访问的存储介质中的计算机程序而操作的一个或更多个服务器来实现。主机系统404可以作为网络服务器(例如,web服务器)来操作以与用户系统402通信。主机系统404操作来向用户系统402发送信息和从用户系统402接收信息并且可以进行关联任务。主机系统404还可以包括防火墙,该防火墙用于阻止对主机系统404的未经授权的访问以及对经授权的访问施加任何限制。例如,管理员能够访问整个系统并且具有修改系统的部分的权限。防火墙可以使用本领域已知的常规硬件和/或软件来实现。
[0075] 主机系统404还可以操作为应用服务器。主机系统404执行一个或更多个计算机程序(包括主动数据库查询维护应用程序410)来提供如本文中所述的实施方式的方面。可以通过给用户系统402提供应用来由用户系统402和主机系统404共享处理。可替代地,用户系统402可以包括用于进行本文中所述的处理的一部分或全部的独立软件应用。如先前所述,应理解,可以采用单独的服务器来实现网络服务器功能和应用服务器功能。可替代地,网络服务器、防火墙以及应用服务器可以由运行计算机程序以执行必要功能的单个服务器来实现。
[0076] 如本文中所描述的敏感指数的实施方式提供若干个优点。一个优点在于在许多记录共享关键字时的情形下的紧凑性,因为敏感指数的实施方式每个关键字具有一个条目而非每个记录有一个条目。另一优点在于敏感指数的大小通常与最小输入的大小成比例。敏感指数的实施方式的另外的优点在于能够根据包括复杂子查询的结果的任意有序输入来建立,而无论该输入本身是否具有指数结构。敏感指数的实施方式的另外的优点是:容易在计算联接时以最小开销来构建敏感指数,并且在面对输入的关系的更新时能够以低开销维护敏感指数。敏感指数的实施方式的另外的优点是对共用的属性直接应用多路合并联接,并且不需要扩展成一系列成对的连接。
[0077] 敏感指数的实施方式能够结合其他技术来使用。例如,敏感指数的实施方式可以通过另外地维护与给定表达的子表达对应的查询来支持对复杂表达的维护。
[0078] 此处描述的维护技术的实施方式具有许多应用,包括但不限于如下示例。这些实施方式能够用于使物化视图在初始具体化期间或在初始具体化之后保持最新。这些实施方式能够在存在长期运行事务时用于增强数据库管理系统的并行性。另外,这些实施方式能够用于递归查询处理以基于在先前迭代中观察到的谓词的变化来得到该谓词中的新的数据。
[0079] 如本领域技术人员理解的,本发明各方面可以实施为系统、方法或计算机程序产品。因此,本发明各方面可以采用整体硬件实施方式的形式、整体软件实施方式(包括固件、常驻软件、微代码等)的形式或将软件和硬件方面进行结合的实施方式的形式,这些形式在本文中可以统称为“电路”、“模”或“系统”。此外,本发明各方面可以采用实施在一个或更多个计算机可读介质中的计算机程序产品的形式,所述一个或更多个计算机可读介质包含有计算机可读程序代码。
[0080] 可以使用一个或更多个计算机可读介质的任何组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。例如,计算机可读存储介质可以是但不限于电子的、磁的、光学的、电磁的、红外线的或半导体的系统、设备、或装置,或前述的任何适当组合。计算机可读存储介质的更具体示例(非穷举列出)可以包括如下:具有一个或更多个线的电连接件、便携式计算机磁盘、硬盘随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、光纤、便携式致密盘只读存储器(CD-ROM)、光存储装置、磁存储装置,或前述的任何适当组合。在本文档的上下文中,计算机可读存储介质可以是任何有形介质,该有形介质可以包含或存储由指令执行系统、设备或装置使用的或与指令执行系统、设备或装置有关的程序。
[0081] 例如,计算机可读信号介质可以包括在基带中或者作为载波的一部分的、包含有计算机可读程序代码的传播数据信号。这样的传播信号可以采用多种形式中的任何形式,包括但不限于:电磁的、光学的,或其任何适当组合。计算机可读信号介质可以是不为计算机可读存储介质的并且可以对由指令执行系统、设备或装置使用的或者与指令执行系统、设备或装置有关的程序进行通信、传播或传送的任何计算机可读介质。
[0082] 可以使用任何适当的下述介质来传送包含在计算机可读介质上的程序代码:所述介质包括但不限于无线、有线、光纤电缆、RF等,或前述的任何适当组合。
[0083] 用于执行本发明各方面的操作的计算机程序代码可以以一种或更多种编程语言的任何组合来编写,所述编程语言包括面向对象编程语言例如Java、Smalltalk、C++等,以及常规过程式编程语言例如“C”编程语言或类似的编程语言。程序代码可以完全地在用户的计算机上执行、部分地在用户的计算机上执行,作为独立软件包部分地在用户的计算机上且部分地在远程计算机上执行,或者完全地在远程计算机或服务器上执行。在后一种情形中,远程计算机可以通过任何类型的网络包括局域网(LAN)或广域网(WAN)连接至用户的计算机,或者可以与外部计算机(例如,通过使用因特网服务供应商的因特网)进行连接。
[0084] 以上参照根据发明的实施方式的方法、设备(系统)和计算机程序产品的流程图和/或框图描述了本发明的各方面。要理解的是,流程图和/或框图中的每个块以及流程图和/或框图中的块的组合可以通过计算机程序指令来实现。这些计算机程序指令可以被提供给通用计算机、专用计算机、或其他可编程数据处理设备的处理器以产生机构,使得经由计算机或其他可编程数据处理设备的处理器执行的指令创建用于实现流程图和/或框图中的一个或更多个块中指定的功能/动作的装置。
[0085] 这些计算机程序指令还可以存储在计算机可读介质中,该计算机可读介质可以引导计算机、其他可编程数据处理设备、或其他装置以特定方式起作用,以使得存储在计算机可读介质中的指令产生制品,该制品包括实现流程图和/或框图的一个或更多个块中指定的功能/动作的指令。
[0086] 计算机程序指令还可以被加载到计算机、其他可编程数据处理设备、或其他装置上以使得待在计算机、其他可编程设备、或其他装置上执行一系列操作步骤产生计算机实现的处理,以使得在计算机或其他可编程设备上执行的指令提供用于实现流程图和/或框图的一个或更多个块中指定的功能/动作的处理。
[0087] 附图中的流程图和框图示出了根据本发明各实施方式的系统、方法和计算机程序产品的可能实现方式的体系结构、功能和操作。在这方面,流程图或框图中的每个块可以表示代码的模块、段或部分,所述代码的模块、段或部分包括用于实现特定的一个或更多个逻辑功能的一个或更多个可执行指令。还应注意,在一些替选实现方式中,在块中标注的功能可以不按照图中标注的顺序发生。例如,事实上,连续地示出的两个块可以基本上并行地执行,或者这些块有时可以以相反的顺序来执行,这取决于所涉及的功能。还应注意,可以通过执行特定功能或动作的基于专用硬件的系统或专用硬件与计算机指令的组合来实现框图或流程图示中的每个块以及框图和/或流程图示中的块的组合。
[0088] 本文使用的术语仅出于描述特定实施方式的目的并且并非旨在限制发明。如本文所使用的,单数形式“一个(a)”、“一个(an)”以及“该(the)”旨在也包括复数形式,除非上下文清楚地另外指出。还将理解,本说明书中使用的术语“包括(comprises)”和/或“包括(comprising)”指明存在所陈述的特征、整数、步骤、操作、元件和/或部件,但并不排除存在或添加一个或更多个其他特征、整数、步骤、操作、元件、部件,和/或其组合。
[0089] 权利要求中的对应结构、材料、动作以及所有功能性限定的装置或步骤的等同替换旨在包括与其他要求保护的元件(如特别声明的)一起执行功能的任何结构、材料或动作。本发明的描述出于说明和描述的目的而示出,而并非旨在穷举或以所公开的形式限制本发明。对本领域的普通技术人员来说,在不偏离本公开的范围和精神的情况下,许多修改和变型是明显的。选择和描述实施方式是为了最佳地说明本发明的原理和实际应用,并且使本领域的其他普通技术人员能够理解具有适于预期的特定用途的各种修改的各个实施方式的发明内容。
[0090] 本文中描绘的流程图为仅一个示例。在不偏离本发明的精神的情况下可以存在有该图或本文中描述的步骤(或操作)的许多变型。例如,可以按不同顺序执行步骤或者可以添加、删除或修改步骤。这些变型中的所有变型被视为是要求保护的发明的一部分。
[0091] 尽管描述了本发明的优选实施方式,但是应理解,本领域技术人员现在和将来可以作出落在所附权利要求的范围内的各种改进和增强。这些权利要求应该被视为维持对最初描述的本发明的适当保护。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈