CN101385029A - 物化外联接视图的维护 - Google Patents

物化外联接视图的维护 Download PDF

Info

Publication number
CN101385029A
CN101385029A CNA2007800055873A CN200780005587A CN101385029A CN 101385029 A CN101385029 A CN 101385029A CN A2007800055873 A CNA2007800055873 A CN A2007800055873A CN 200780005587 A CN200780005587 A CN 200780005587A CN 101385029 A CN101385029 A CN 101385029A
Authority
CN
China
Prior art keywords
view
tuple
expression formula
item
materialized view
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2007800055873A
Other languages
English (en)
Other versions
CN101385029B (zh
Inventor
P-A·拉森
J·周
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN101385029A publication Critical patent/CN101385029A/zh
Application granted granted Critical
Publication of CN101385029B publication Critical patent/CN101385029B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99932Access augmentation or optimizing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

维护数据库中用于查询优化的物化视图。该体系结构提供用于增量式地维护具有多个外联接和聚合外联接视图的视图的第一个实际算法。具有内联接、一侧外联接和全外联接加上顶部的可任选聚合的物化视图可由基于将视图定义转换成联接析取范式并利用数据库约束来降低维护开销的步骤来构造增量式维护表达式的算法来处理。***包括用于创建包括外联接的物化视图定义的视图创建组件、用于将外联接视图表达式转换成范式的转换组件、以及用于更新与物化视图定义相关联的所存储的物化视图结果的维护组件。

Description

物化外联接视图的维护
背景
随着因特网的出现,大量数据正变得更易于为大量用户访问,不论是在内部公司环境中还是在诸如基于web的数据库等公众场所中。从而,随着用户的数目,并因此查询的数目和复杂性持续增加,对这样的***施加了更高效且性能驱动的要求。
作为一个示例,在关系型数据库管理***中,通过比较数据,诸如帐号和名字来创建数据(或文件)之间的关系。正进行比较的数据和结果可按照表的形式来构造。联接(join)过程包括基于某种条件将一个表(或文件)中的记录与另一个表(或文件)中的记录进行匹配,并创建包括来自正联接的表的数据的第三表。在一个示例中,Order(定单)表可与Customer(顾客)表联接以便为购买了特定产品的所有顾客创建第三表。
联接默认类型的联接是内联接,内联接只要各自来自每一输入表的两个记录满足匹配条件时就产生结果记录。考虑将载货与收据匹配的另一示例。联接会产生已接收的载货的表但省略还未接收的载货。反之,外联接可创建每一载货的表,而无论它是否被接收到。所接收的项目的数据被附连到载货。空(或空值)域将附连到没有收据的载货。
物化视图,也被称为索引视图,是用于加速数据库查询的处理的机制。物化视图是可用于计算查询的一部分或全部的预先计算出的结果,而非从基表中直接计算查询。物化视图可在查询处理时间方面提供巨大的改进。为了有用,物化视图必须在其底层基表中的任何一个被更新时被更新。这一般被称为视图维护。当前已知高效、增量式的视图维护算法仅是对SPJG视图的,即由选择、投影和内联接运算符组成的、顶部带有可任选聚合运算符的视图,其中聚合运算符对查询的结果进行汇总。
之前对物化视图的增量式维护的工作主要集中于SPJG视图,但一个常规的***提供用于维护外联接视图的机制。然而,它不覆盖聚合视图,且该机制对具有一个以上的外联接的视图可能变得非常低效。
概述
以下呈现了本发明的简化概述,以提供对所公开的本发明的某些方面的基本理解。该概述不是详尽的概观,它不旨在标识关键/重要的元素也不旨在描绘其范围。其唯一的目的是以简化的形式来介绍一些概念,作为稍后提出的更为详细的描述的序言。
本发明涉及数据库***中的查询处理,并提供用于维护外联接视图,包括聚合外联接视图的第一个通用且实际的算法。具有选择、投影、内联接、一侧外联接和全外联接的任何组合加上顶部的可任选聚合的物化视图被称为SPOJG视图,它可由所公开的算法来处理。
此处所述的是用于将增量视图维护扩展至SPOJG视图的体系结构。扩展通过创建为SPOJG视图构造增量式维护表达式的一个或多个算法来进行。常规上,SPOJ表达式可被转换成范式,例如联接析取(join-disjunctive)范式。所公开的算法将这种范式用于外联接表达式,并且还利用了数据库约束,例如外键约束来降低维护开销。实验表明,维护外联接视图不一定比维护内联接视图昂贵;且对于聚合视图,它甚至可以更便宜。
从而,此处公开并要求保护的本发明在其一个方面中包括便于维护物化外联接视图的计算机实现的***。该***可包括用于创建包括外联接的物化视图定义的视图创建组件、用于将视图表达式定义转换成范式的转换组件、以及用于在底层基表被修改时更新与物化视图定义相关联的所存储的物化视图结果的维护组件。
在另一方面中,公开了用于标识范式中的表达式的直接受影响和间接受影响的项以作为降低视图维护的开销的手段从而使表达式执行更高效的计算和方法。
在又一发明性方面中,提供了用于维护包括外联接的聚合视图的方法。
为了实现前述及相关目的,在这里结合下列描述及附图来描述所公开的本发明的某些说明性方面。然而,这些方面仅指示了其中可利用此处公开的原理的各种方法中的少数几种,且旨在包括所有这些方面及其等效方面。结合附图阅读下面的详细描述,则其他优点和新颖特征将变得清楚。
附图简述
图1示出了便于维护物化视图的计算机实现的***。
图2示出了根据一新颖方面的维护物化视图的方法。
图3示出了示例SPOJ视图V1和V2的包含(subsumption)图。
图4示出了生成包含图和对视图的净贡献的方法。
图5示出了从图3的V1的包含图得到的视图V1的三个维护图。
图6示出了根据所公开的发明的、构造维护图以便标识受到更新影响的项的方法。
图7示出了根据发明性方面的执行视图维护的方法。
图8示出了用于对表C的更新和对表O的更新的V2维护图。
图9示出了通过利用L和O之间以及O和C之间的外键约束的图8的简化的V2维护图。
图10示出了通过消去额外节点来创建简化维护图从而简化维护并提高性能的方法的流程图。
图11示出用于对表T和R的更新的维护图。
图12示出构造用于计算对直接受影响的项的改变的外部并(outer union)的表达式的***。
图13示出为外联接视图构造高效维护表达式的方法。
图14示出维护聚合外联接视图的方法的流程图。
图15示出了可用于执行所公开的物化视图维护体系结构的计算机的框图。
图16示出根据另一方面的可用于维护物化视图的示例性计算环境的示意框图。
详细描述
现在参照附图描述本发明,其中相同的附图标记用于指代全文中相同的元素。在以下描述中,为解释起见,描绘了众多具体细节以提供对本发明的全面理解。然而,显然,本发明可以在没有这些具体细节的情况下实现。在其它情况下,以框图形式示出了公知的结构和设备以便于描述它们。
如在本申请中所使用的,术语“组件”和“***”旨在表示计算机相关的实体,它可以是硬件、硬件和软件的结合、软件、或者执行中的软件。例如,组件可以是但不限于:在处理器上运行的进程、处理器、硬盘驱动器、多个存储驱动器(光和/或磁存储介质)、对象、可执行代码、执行的线程、程序、和/或计算机。作为说明,运行在服务器上的应用程序和服务器本身都可以是组件。一个或多个组件可以驻留在进程和/或执行的线程内,而组件可以位于一台计算机内上/或分布在两台或更多的计算机之间。
一开始参考附图,图1示出了便于维护物化视图的计算机实现的***100。***100可包括用于创建包括外联接视图在内的物化视图的视图创建组件102、用于将视图表达式转换成范式的转换组件104、以及用于更新由视图组件102创建的物化视图的维护组件106。
该***便于增量式地维护物化SPOJG(即,选择、投影、外联接以及可任选地分组)视图,即其中部分或全部联接为外联接的视图。这是通过为SPOJG视图构造增量式维护表达式的新颖的算法来完成的。常规上,SPOJ表达式可被转换成范式,例如联接析取范式。转换组件104包括用于将外联接表达式转换成该范式的一个或多个算法并利用例如外键约束等约束来降低维护开销。
***100提供用于处理具有多个外联接的视图以及聚合外联接视图的第一个通用且实际的算法。具有选择、内联接、一侧外联接和全外联接的任何组合加上顶部的可任选聚合的物化视图可由***100处理。
图2示出了根据一新颖的方面维护物化视图的方法。尽管出于解释简明的目的,此处例如以流程图形式示出的一个或多个方法被示出并描述为一系列动作,但是可以理解和明白,本发明不受动作的次序的限制,因为根据本发明,某些动作可以按不同次序和/或与此处所示并描述的其它动作同时发生。例如,本领域技术人员将会明白并理解,可以替换地把方法表示为一系列相互关联的状态或事件,诸如以状态图的形式。而且,并非所有示出的动作都是实施根据本发明的方法所必需的。
在200,接收对表T的更新以便处理。更新由***到表T的一组新元组或从表T删除的一组元组组成。在202,检索第一视图定义V以便考虑进行维护。在204,执行检查来确定是否已处理了所有视图。如果是,则处理终止。否则,处理在206继续,在那里确定视图是否引用更新后的表T。如果否,则在208检索下一视图,且处理在206继续。如果视图引用表T,则在210,将视图定义的SPOJ部分,即视图定义的非聚合部分转换成范式。在212,生成视图的增量式维护表达式。在214,对视图维护表达式求值并将结果应用于视图,从而使视图与基表一致。在步骤208,之后的处理继续至下一视图,流程回到204。
在操作中,考虑以下示例。以下呈现的视图oj_view由TPC-H(交易处理性能委员会,类型H基准)数据库的表Part(部分)、Lineitem(行项目)和Orders(定单)的外联接组成。(TPC是对交易处理***制定基准的组织。TPC-H基准测量反映***处理查询的能力的多个方面的判定支持性能。)给定p_partkey为Part的主键,o_orderkey为Orders的主键,且在Lineitem和Part之间存在外键约束,且在Lineitem和Orders之间也存在外键约束。
create view oj_view as
select p_partkey,p_name,p_retailprice,o_orderkey,o_custkey,
       l_linenumber,l_quantity,l_extendedprice
from part left outer join
     (orders left outer join lineitem on l_orderkey=
 o_orderkey)on p_partkey=l_partkey
首先,分析视图可能包括什么类型的元组。Orders和Lineitem之间的联接将保留所有Lineitem元组,因为联接匹配l_orderkey和o_orderkey之间的外键约束。如果Orders表包括不匹配Lineitem元组的某些孤立的Orders元组,则孤立的元组将出现在在所有Lineitem列上进行空值扩展的结果中。与Part的外联接不会消去任何真实的{Lineitem,Orders}元组,因为该联接也是外键联接,但它会消去在Lineitem列上进行空值扩展的所有元组。不与任何元组联接的Part元组将被保留在结果中,因为联接是外联接。因此,最终结果将对每一Lineitem元组包括一个完整的{Lineitem,Orders,Part}元组以及在来自Lineitem和Orders的列上进行空值扩展的某些孤立的Part元组,但不包括{Lineitem,Orders}且没有Orders元组。
接着,考虑如何响应于***基表之一来维护视图。假定将一组新的part元组***Part表中。该视图然后可通过简单地将新的part元组(适当地用空值来扩展)***视图中来更新。不要求其他,因为Lineitem和Part之间的外键约束保证新的part元组不会与任何Lineitem元组联接。如果新的part元组与Lineitem元组联接,则联接Lineitem元组将违背外键约束。
***Orders表对视图将不产生影响,因此不需要做任何事。新的Orders元组由于Lineitem和Orders之间的外键约束而不会与任何现有的Lineitem元组联接。适当地用空值扩展的新的Orders元组也将不被包括在视图中,因为如上所述,孤立的Orders元组从视图中被消去。
最后,考虑对Lineitem表的***。假定在表new_lineitems(新行项目)中包括有新的lineitem。该视图然后可使用以下SQL语句序列来更新。
select p_partkey,p_name,p_retailprice,o_orderkey,o_custkey,
       l_linenumber,l_quantity,l_extendedprice
into #deltal
from new_lineitems,orders,part
where l_orderkey=o_orderkey and l_partkey=p_partkey
insert into oj_view
select′from #deltal
delete from oj_view
where o_orderkey is null
and p_partkey in(select p_partkey from #deltal)
第一个语句计算要被***视图的元组的集合,并将其保存到临时表#deltal中(以避免计算同一表达式两次)。第二个语句将新的元组添加到视图内。新的Lineitem元组可使某些孤立的Part元组从视图中消去。第三个语句删除其p_partkey值出现在新***的元组之中的所有孤立的Part元组(如果有)。换言之,它删除由于***而不再孤立的所有孤立元组。
以下描述包括预备材料并介绍以后使用的概念。
选择运算符将用规范方式表示为σp,其中p是谓词。如果引用某一列集合S的谓词p在一旦S中的列之一为空时即对元组求值为假或未知,则该谓词被称为强或拒绝空值的。投影(没有重复消去)由πc表示,其中c是列的列表。采用SQL(结构化查询语言),简写T*用于表示表T的所有列。也需要移除重复的运算符(类似于SQL的select distinct(选择唯一)),这由δ表示。
将使用特殊的谓词Null(T)及其否定~Null(T)。如果一元组在表T上进行了空值扩展,则Null(T)求值为真。Null(T)可在SQL中实现为“T.Cisnull”,其中C是T中不可包括空值的任何列。当将这些谓词应用于一组表T时,则可使用谓词NN(T)和N(T),它们被定义为NN(T)=∧t∈T~Null(t)以及N(T)=∧t∈TNull(t)。
模式S是一组属性(列名)。令T1和T2为分别具有模式S1和S2的表。由T1
Figure A200780005587D00111
T2表示的外部并首先对每一操作数的元组进行空值扩展(用空值填补)成模式S1∪S2,然后取结果的并(不进行重复消去)。由
Figure A200780005587D00112
表示的外部(集合)差以类似方式定义。
如果元组t1和t2在同一模式上定义,且对它们均为非空的所有列,t1与t2一致,且t1包括的空值少于t2,则元组t1被称为包含元组t2。由T↓表示的运算符移除T中被包含的元组返回T中不被T中任何其他元组包含的元组。
表T1和T2的最小并被定义为最小并的优先级低于联接。可示出最小并既是可交换又是结合的。
令T1和T2是分别具有不相交模式S1和S2的表,且p为引用(S1∪S2)中的列的某个子集的谓词。表的(内)联接被定义为
Figure A200780005587D00114
t2∈T2,p(t1,t2)}。左半联接被定义为
Figure A200780005587D00115
即T1中的元组限定它是否与T2中的某个元组联接。左反(半)联接被定义为
Figure A200780005587D00116
即T1中的元组限定它是否不与T2中的任何元组联接。左外联接可被表示为右外联接可被表示为
Figure A200780005587D00118
全外联接可被表示为
Figure A200780005587D00119
如此处所述,假定每一基表具有唯一键,在实践中往往也是这样。所有物化视图被假定为具有唯一键,且谓词被假定为对所引用的所有列是拒绝空值的。
基于SPOJ表达式的联接析取范式得到视图增量式维护表达式。在本说明书全文中,以下包括三个表的示例数据库将用作对TPC-H数据库的表Customer、Orders、Lineitem的建模。
C(ck,cn,cnk),O(ok,ock,od,otp),L(lok,ln,lpk,lq,lp)
在任何列中不允许空值。下划线的列形成每一表的键。定义了两个外键约束:O.ock引用C.ck以及L.lok引用O.ok。
考虑具有以下定义的示例视图,
Figure A200780005587D00121
该视图包括所有的顾客以及其定单(如果有),以及价格高于500的行项目(如果有)。结果将包括三种不同类型的元组。
1.COL-元组,即通过串接来自C的元组、来自O的元组和来自L的元组形成的元组。将对满足谓词lp>500的每个L元组存在一个COL-元组。
2.CO-元组,即通过串接来自C的元组、来自O的元组和L的所有列的空值组成的元组。对不与满足lp>500的任何L-元组联接的每个O-元组将存在一个这样的元组。
3.C-元组,即由来自C的元组以及对O和L的所有列的空值组成的元组。对不与O中的任何元组联接的每个C元组将存在一个这样的元组。
结果包括联接
Figure A200780005587D00122
中的所有元组,联接
Figure A200780005587D00123
中的所有元组,并包含C中的所有元组。这三个子结果中的每一个在结果中用最小方式表示。例如,如果元组(c1,null,null)出现在结果中,则C中存在元组c1,但在O中没有元组o1,使得(c1,o1)出现在中。
表达式可被重写成完全由内联接组成的三个项的最小并,这是原始SPOJ表达式的联接析取形式。
如该示例所示,对一组表
Figure A200780005587D00126
的SPOJ表达式E可被转换成包括由选择和内联接(但没有外联接)构成的项的最小并的范式。更正式地,E的联接析取形式可如下表示,
E = π C ( E 1 ⊕ E 2 ⊕ · · · ⊕ E n )
其中πC将结构投影到所需的列C上,且每一项Ei是如下形式的
E i = σ p i ( T i 1 × T i 2 × · · · × T i m ) .
Figure A200780005587D00133
Figure A200780005587D00134
中表的子集。谓词pi是从原始形式的查询中找到的选择和联接谓词的子集的合取。
对将SPOJ表达式转换成联接析取形式使用以下变换规则。
Figure A200780005587D00135
              规则(1)
如果T1=T1↓且T2=T2
Figure A200780005587D00136
          规则(2)
如果T1=T1↓且T2=T2
Figure A200780005587D00137
      规则(3)
如果T3=T3
        规则(4)
如果p(1)强且仅引用T1
   规则(5)
如果p(1)强且仅引用T1
规则(4)是根据源自
Figure A200780005587D001310
中的项T2的所有元组将在T1的所有列上进行空值扩展的观察结果得出的。如果p(1)对T1是强的,则所有这些元组将被丢弃。规则(5)是通过扩展两个外联接从规则
Figure A200780005587D001311
中得出的。
以下示例示出使用以上规则转换SPOJ表达式。p(i,j)表示引用表Ti和Tj中的列的谓词。
Figure A200780005587D00141
Figure A200780005587D00142
         按规则(1)
           按规则(4)
Figure A200780005587D00144
通过在联接中包括选择谓词
Figure A200780005587D00145
Figure A200780005587D00146
                  按规则(2)
SPOJ表达式的联接析取形式中的每一项产生具有唯一空扩展模式的元组。假定表达式的操作数表的全集为
Figure A200780005587D00147
Figure A200780005587D00148
的子集
Figure A200780005587D00149
上定义联接析取形式的项,且因此产生在
Figure A200780005587D001410
上进行空值扩展的元组。子集
Figure A200780005587D001411
中的表被称为项的源表。
由具有源表集
Figure A200780005587D001412
的项产生的元组仅可被由其源表集是
Figure A200780005587D001413
的超集的项所产生的元组包含。项之间的包含关系可由DAG(有向无环图)建模,它被称为SPOJ表达式的包含图。
定义。令 E = π C ( E 1 ⊕ · · · ⊕ E n ) 为SPOJ表达式的联接析取形式。E的包含图对范式中的每一项Ei包括节点ni,且节点用Ei的源表集标记。如果
Figure A200780005587D001416
Figure A200780005587D001417
的最小超集,则从节点ni到节点nj存在边。如果在图中不存在使得 S j ⋐ S k ⋐ S i 的节点nk,则
Figure A200780005587D001419
Figure A200780005587D001420
的最小超集。
考虑以下示出两个SPOJ视图,V1和V2,其范式的示例。图3示出了示例SPOJ视图V1和V2的包含图。
Figure A200780005587D001422
σ p ( o , l ) ( O × L ) ⊕ C ⊕ O ⊕ L
联接析取范式中的最小并运算符具有两个概念:消去被包含的元组以及取其余元组的并。通过首先从每一项消去被包含的元组,可由外部并来代替最小并。得到的形式是有用的,因为它清楚地示出什么项受到更新的影响以及如何受到影响。
项之间的包含不是任意的;当检查项的元组是否被包含时,针对父项中的元组进行检查是足够的。以下引理示出如何从项中消去被包含的元组。
引理。令Ei为SPOJ表达式的联接析取范式中的项。则,Ei所生成的未被E中的另一元组包含的元组的集合可被计算为,
Figure A200780005587D00151
其中
Figure A200780005587D00152
是Ei的父项,且联接谓词q是对形成Ei的键的列的同等联接。
被称为项Ei的净贡献,因为Di的元组不被任何其他元组包含,且因此在视图结果中明确显示。以下提供净贡献形式的示例。
定理。令E为具有范式 π C ( E 1 ⊕ E 2 ⊕ · · · ⊕ E n ) 的SPOJ表达式。则
Figure A200780005587D00154
其中,如引理中所定义,每一Di是从Ei中计算出的。
形式
Figure A200780005587D00155
被称为表达式的净贡献(规范)形式。该形式是重要的,因为在来自不同项的净贡献之间不存在交互,这意味着每一项可独立于其他项而维护。
现在参考图4,示出了生成包含图和对视图的净贡献的方法。在400,检索视图定义。在402,将视图表达式的SPOJ部分转换成由内联接构成的项的最小并组成的联接析取范式。在404,从该范式创建包含图,这揭示了项之间的包含(父子)关系。在406,使用范式中的项表达式和包含图来创建定义每一项对视图的净贡献的表达式。根据以上引理构造项的净贡献表达式。在408,通过用外部并运算符连接所有净贡献表达式来构造定义总净贡献的表达式。
以下是在修改单个基表时如何增量式维护SPOJ视图的描述。此处仅进行***或删除;更新可作为删除继而是***来对待。此处关注的是得到正确的维护表达式而不必是最高效的一个。在下文中将得到更高效的表达式。
第一个任务是标识哪些项会受到***或删除的影响。考虑视图V,并假定修改其基表T之一。这仅当T出现在定义Di的表达式中才会改变项的净贡献。通过检查Di表达式的形式,显然,改变会按三种方式之一影响结果:
1.直接地,这在T处于i中的表之中时发生;
2.间接地,这在T不处于
Figure A200780005587D0016112724QIETU
中表之中但处于其父节点(项)中一个或多个的源表中时发生;以及
3.其它情况,无影响。
基于这种对于项如何受到影响的分类,可如下创建视图维护图。
1.从包含图中消去不受T的更新的影响的所有节点(项)。
2.根据节点(项)是直接还是间接受影响用D或I标记简化图的节点。
3.丢弃从标为I的节点引出的所有边。
图5示出了从图3中V1的包含图得到的视图V1的三个维护图。C是所有三个节点的源集的成员,使得对C的更新的维护图(a)保留所有三个节点,且它们用上标D标记。对O的更新的维护图(b)也保留所有三个节点。O是节点{C,O,L}和{C,O}的源集的成员;它们直接受影响,并用上标D标记。O不是节点{C}的源集的成员,但它是其父节点的源集的成员;该节点间接受影响,并用I标记。对L的更新的维护图(c)仅保留节点{C,O,L}和{C,O}。注意,丢弃{C},因为它或它的父节点均不引用表L。
现在参考图6,示出了根据所公开的发明的、构造用于标识受到更新影响的项的维护图的方法。在600,检索定义视图的表达式。在602,将视图表达式的SPOJ部分转换成联接析取范式。在604,按照前述方式构造包含图。在606,从包含图中消去不受更新影响的项。在608,根据它表示直接受影响的项还是间接受影响的项对每一其余节点进行分类和标记。在610,丢弃从标记为间接受影响的项引出的边。
以下是视图维护的描述。使用Δ1V来表示对直接受影响的项的所有改变的(外部)并,而使用Δ2V来表示对间接受影响的项的所有改变的(外部)并。类似地,Δ1Di和Δ2Di分别表示直接或间接受影响的项的净贡献Di的改变。视图维护可按以下三个步骤执行。
1.首先更新受影响的基表。
2.如果没有直接受影响的项,则完成;否则,计算Δ1并将其应用于视图。
3.如果没有间接受影响的项,则完成;否则,计算Δ2并将其应用于视图。
相应地,图7示出了根据发明性方面的执行视图维护的方法。在700,启动视图维护。在702,首先更新受影响的基表。作为该操作的副作用,获取所***的元组的集合或所删除的元组的集合。在704,检查维护图中直接受影响的项。如果没有找到这样的项,则在706,过程终止。如果在706找到这样的项,则流程前往708,在那里计算对直接受影响的项的净贡献的改变的外部并,且将其应用于视图。在710,检查维护图中间接受影响的项。再一次,在712,如果没有找到这样的项,则过程终止。如果在712找到这样的项,则流程前往714,在那里计算对间接受影响的项的净贡献的改变的外部并,且将其应用于视图。
以下是用于***和删除的维护表达式的导出。首先,在***的情况中为视图V构造视图维护表达式。***到表T的新的行的集合被表示为ΔT。如果Ei(Di)是表达式,则通过用ΔT替换每个出现的T而从Ei(Di)获得的表达式由
Figure A200780005587D00171
表示。
考虑以下示例:一组元组ΔO被***到表O中,且期望维护视图V1。图5(b)示出该情况的维护图。两个节点直接受影响,即{C,O,L}和{C,O}。要***到视图中的新元组可通过在每一项的净贡献的表达式中用ΔO代入O来计算。给出以下Δ1-表达式,
Figure A200780005587D00172
Figure A200780005587D00173
Figure A200780005587D00174
反半联接的谓词q等于(l.ok=r.ok),其中l.ok(r.ok)指定来自联接的左(右)操作数的列ok。
接着,考虑间接受影响的项{C}。新的O元组将与之前未与任何元组联接的某个C元组联接。该项当前可能包括这样孤立的C元组,它们现在必须被删除。要删除的视图元组可被计算为,
Figure A200780005587D00182
其中,联接谓词q等于(l.ck=r.ck)。
组合各部分,可获得以下完整的维护表达式。
Figure A200780005587D00183
引理。考虑SPOJ视图的范式中其净贡献由定义的项。假定通过***ΔT元组更新了表T。如果项直接受到***的影响,则添加到项的净贡献的元组可被计算为,
Figure A200780005587D00185
如果项间接受影响,则从项的净贡献删除的元组可被计算为,
Figure A200780005587D00186
其中q是对Ei的唯一键的同等联接谓词。
前述示例考虑视图V1以及***到O中;现在考虑从O删除。如之前的情况一样,两个项直接受影响,即{C,O,L}和{C,O},见图5(b)。直接受影响的项的Δ1-表达式与***的相同,但现在得到的元组从视图中删除。存在一个间接受影响的项{C}。删除的O元组可能是与C元组联接的最后一个元组。如果是,则它应在更新后出现在{C}项的结果中。要***的元组可被计算为,
Figure A200780005587D00187
其中,联接谓词q等于(l.ck=r.ck)。
将此与之前得到的Δ1-表达式组合,可获取以下完整的维护表达式。
V 1 ( C , O - ΔO , L ) =
Figure A200780005587D00192
引理。考虑SPOJ视图的范式中其净贡献由
Figure A200780005587D00193
定义的项。假定通过删除ΔT元组更新了表T。如果项直接受到删除的影响,则从项的净贡献删除的元组可被计算为,
Figure A200780005587D00194
如果项间接受影响,则向项的净贡献添加的元组可被计算为,
Figure A200780005587D00195
其中q是对Ei的唯一键的同等联接谓词。
图8示出了用于对表C的更新和对表O的更新的V2维护图。为简明起见,仅导出对O的更新的维护表达式。
以下是范式中的内联接项及其对视图V2的相应的净贡献项。
ECOL=σp(c,o)∧p(o,l)(C×O×L), ECO=σp(c,o)(C×O),
EOL=σp(o,l)(O×L),            EC=C,
EO=O,                         EL=L
DCOL=ECOL,                     
Figure A200780005587D00196
             
Figure A200780005587D00198
Figure A200780005587D00199
          
Figure A200780005587D001910
该表达式中的同等联接谓词如下列出。l.ck记号表示左操作数中的ck域,而r.ck表示右操作数中的ck域。联接列全部表示所涉及的表的键。
q(c,o)≡(l.ck=r.ck∧l.ok=r.ok)
q(o,l)≡(l.ok=r.ok∧l.lok=r.lok∧l.ln=r.ln)
  q(c)≡(l.ck=r.ck)
  q(o)≡(l.ok=r.ok)
  q(l)≡(l.lok=r.lok∧l.ln=r.ln)
首先考虑对O的***。维护图(图8(b))示出四个直接受影响的项:{C,O,L}、{C,O}、{O,L}和{O}。Δ1V2可被计算为,
Figure A200780005587D00201
Figure A200780005587D00202
Figure A200780005587D00203
两个项{C}和{L}是间接受影响的。要删除的元组的集合可被计算为,
Figure A200780005587D00204
Figure A200780005587D00205
Figure A200780005587D00206
对于从O中删除,Δ1V2的表达式与***的相同,但Δ2V2表达式是不同的。
Figure A200780005587D00207
Figure A200780005587D00208
Figure A200780005587D00209
Figure A200780005587D002010
可通过简化维护图来得到更高效的维护表达式。以下是如何利用外键约束来从维护图中消去额外节点从而进一步简化维护的描述。
考虑视图V1,并假定要***一个或多个C元组。图5(a)中的维护图示出三个直接受影响的项{C,O,L}、{C,O}和{C}。如果联接谓词是p(o,c)≡(O.ock=C.ck),,则这由于从O.ock对C.ck的外键约束而是过度保守的。
***到表C的新C元组不能与任何现有的O元组联接,因为联接O元组将违背外键约束。因此,***不会影响项{C,O,L}和{C,O}。这令{C}为唯一受影响的项,且可简单地通过将新的C元组***到视图来更新视图。
同样的推理可应用于删除。已经从表C删除的C元组不能与O中的任何元组联接,因为在删除之后,这些元组将留在O中,并违背外键约束。视图可简单地通过从视图中移除删除的C元组来更新。
定理。考虑具有SPOJ视图的范式中的基表
Figure A200780005587D00211
的直接受影响的项,并假定表
Figure A200780005587D00212
由***或删除更新。如果
Figure A200780005587D00213
包括具有引用T的非空、唯一键的外键的另一表R且R和T在该外键上联接,则项的净贡献不受更新的影响。
利用该定理来从维护图中消去一个或多个直接受影响的节点及其边。消去某些直接受影响的节点可能会留下没有引入的边,即没有受影响的父节点的间接受影响的节点。任何这样的节点也可被消去。得到的图被称为简化的维护图。
这种优化可非常显著地降低维护开销。假定V2的联接谓词均是外键上的同等联接,即p(c,o)≡(ck=ock)且p(o,l)≡(ok=lok)。如果这样,则可利用L和O之间以及O和C之间的外键约束来将图8的V2维护图简化为图9所示的图。由于从O到C的外键约束,对C的***将不会影响节点{C,O}和{C,O,L}。从维护图消去这两个节点留下没有父节点的节点{O}和{O,L},因此它们也被消去。如图9(a)中所示,这留下{C}作为唯一受影响的节点,且维护被简化为=ΔC和
Figure A200780005587D00214
由于从L到O的外键约束,对O的***将不会影响节点{O,L}和{C,O,L}。消去这两个节点,留下没有父节点的节点{L},因此它也被消去(间接受影响的节点必须具有父节点)。这留下图9(b)中所示的简化图。对***O的维护表达式被简化为,
Figure A200780005587D00215
Figure A200780005587D00216
Figure A200780005587D00217
这种优化不总是能应用。当更新语句出于得到维护表达式的目的而被逻辑上分解成删除和***时不能应用,因为在这种情况中,T中的元组可能仅被修改,而不存在实际的删除和***。如果用级联删除声明了外键约束,则这也不能被应用于删除。
SQL-99允许约束被声明为“可延迟的”,这意味着对约束的检查被延迟至事务的结束。在事务期间,约束可被暂时违背,且在这种情况中,简化的维护可能产生不正确的结果。因此,如果外键约束被声明为可延迟,且***/删除语句是多语句事务的一部分,则不能应用优化。然而,如果***/删除不是多语句事务的一部分,则可安全应用。
图10示出了通过消去额外节点来创建简化维护图从而简化维护并提高性能的方法的流程图。在1000,创建对表T的更新的视图初始维护图。在1002,获取该图的第一个直接受影响节点。在1004,对于是否找到节点进行检查。如果找到了节点,则流程前进至1006,在那里如果当前节点的源集包括表R,其中该表R通过匹配从表R到T的外键的同等联接而联接至表T,则当前节点被删除。在1008,获取下一直接受影响节点,且处理继续至1004。当考虑了所有直接受影响的节点时,处理继续至1010。在1010,删除不具有父节点的所有间接受影响的节点。结果是对表T的更新的视图的简化的维护图。
Δ1V的基本表达式并不如它们本应表现的那样高效,所以现在描述计算Δ1V的高效得多的方式。这可通过由可从维护图容易地构造的左外联接和内联接构成的表达式来完成。
假定受影响的基表已经被更新。然而,这种假设不是关键的,因为计算Δ1的最终表达式不取决于更新的表的状态。在以下示例中,考虑如下从表R、S、T和U得到的视图,
该视图的范式为
Figure A200780005587D00222
Figure A200780005587D00223
图11示出用于对表T和R的更新的维护图。首先考虑对T***的情况。图5(a)的维护图指示要***三种类型的元组,即形式{T,U}、{R,T,U}和{R,S,T,U}的元组。每一项的元组可分别被计算为
Figure A200780005587D00231
R以及
Figure A200780005587D00233
因为T具有唯一键,新的元组不会被已经在V3中的元组包含,所以检查新的元组之间的包含是足够的。Δ1V3可被计算为
Figure A200780005587D00234
Figure A200780005587D00235
第一项中被包含的每一元组被第二项中的元组包含,因此可以通过左外联接
Figure A200780005587D00236
来计算前两项的最小并。结果仍包括第二项的所有元组,因此可以通过另一左外联接消去其被包含的元组,产生以下表达式
这两个表达式可通过将外联接版本转换成联接析取范式来验证为等价的。这样做产生与以上完全相同的三个项,这证实它们是等价的。
用于对T的更新的维护图仅包括含单条路径,且通过自底向上遍历路径、为所遍历的每一条边添加左外联接来构造Δ1-表达式。不难看到,同样的方法适用于包括单条路径的任何维护图。此外,如果图包括多条路径,则可使用任何路径按照同样的方式构造Δ1-表达式。
图11(b)中示出的用于对R的更新的维护图包括两条路径。在这种情况中,可使用任一路径来构造Δ1V3,产生以下两个表达式
Figure A200780005587D00238
Figure A200780005587D00239
该表达式的第一个版本从路径{R}、{R,S}、{R,S,T,U}获得。节点{R}包括单个表R且不包含谓词,因此初始表达式仅为ΔR。与节点{R}比较,节点{R,S}包括一附加表S和谓词p(r,s)。遍历边并添加左外联接产生
Figure A200780005587D00241
节点{R,S,T,U}具有两个附加表T和U以及谓词p(r,t)和p(t,u)。这两个表在它们用作与谓词p(r,t)的左外联接的右操作数之前应首先使用局部谓词p(t,u)联接。这产生第一个表达式。
该表达式的第二个版本从路径{R}、{R,T,U}、{R,S,T,U}获得。使用该路径,第一条边追加
Figure A200780005587D00242
且第二条边追加
Figure A200780005587D00243
(从维护图构造的)Δ1V3的范式为
Δ 1 V 3 = ΔR ⊕ σ p ( r , s ) ( ΔR × S ) ⊕
Figure A200780005587D00245
将这两个外联接表达式中的任一个转换成范式产生完全相同的项。
以下的算法1是用于构造用于计算由左外联接和内联接组成的Δ1的表达式的算法。它取维护图和目标表作为输入,并输出用于计算Δ1的表达式。图12示出构造用于计算对直接受影响的项的净贡献的改变的表达式的***1200。***1200包括可执行算法1的表达式构造组件1202。组件1202取视图维护图1204和目标表1206作为输入。通过该算法处理这些输入得到输出表达式1208,它可用于计算对直接受影响的项的净贡献的改变。
Figure A200780005587D00251
该算法使用取一组表T={T1,T2,…,Tn}为输入并输出表达式(T1×T2×…×Tn)的函数CartProd。通过有时将谓词的记号作为一组连接词来对待而对谓词的记号给予一定的自由度。例如,记号p.Pred-n.Pred意味着除在n.Pred中找到的以外的所有p.Pred的连接词。
如果不存在其基是节点n的基的子集的任何其他节点,则节点n为最小。该算法假定,在消去了间接受影响的节点之后,维护图包括单个最小节点。
该算法是安全的,因为总是可能确认通过将其转换成范式、然后验证它正好包括在维护图中包括的直接受影响的项而产生的表达式。
目标在于使用Δ1和视图(在应用Δ1之后)或基表中的任一个来高效地计算Δ2。此处考虑这两个选择。当可能时,使用视图而非基表通常是更高效的,但查询优化器应按照基于成本的方式选择更便宜的备选方案。
假定受影响的基表已被更新,且Δ1已被应用于视图。Δ1是否已被应用被证明对Δ2没有影响。根据以上,用于***和删除的基本Δ2表达式为
***
Figure A200780005587D00261
删除
Figure A200780005587D00262
这两个表达式均包括半联接,且被称为父增量的右操作数在这两个情况中是相同的。以下示出如何从Δ1V提取父增量。
对于***和删除,左操作数稍有不同。在众多情况中,左操作数可从视图本身提取,但并非总是这样,此处示出何时这样做以及如何做。然而,它总是可从基表和经更新的表的增量来计算。
视图中的每一项具有唯一的一组源表,且在视图中的所有其他表上进行空值扩展。在下文中,Ei和Di的源表由Ti表示,且在其上对Di进行空值扩展的表由
Figure A200780005587D00263
表示。
可通过使用谓词NN(T)=∧t∈T~Null(t)的选择从视图或视图增量恢复来自具有源集T的项的元组。
以下描述对父增量的计算。Δ2Di的表达式包括对其父的增量,即对
Figure A200780005587D00264
的半联接。父项是直接受影响的项,因此父增量被包括在Δ1V中。以下表达式从Δ1V中提取完整的父增量。
Figure A200780005587D00265
其中 NN ( par E i ) = V k = 1 m NN ( τ i k )
Figure A200780005587D00267
表示父项
Figure A200780005587D00268
的源集。
在以下示例中考虑视图V3,并假定正修改表T。图11(a)中的维护图示出两个间接受影响的项{R}和{R,S},其父项分别为{R,T,U}和{R,S,T,U}。以下表达式从Δ1V3中提取所需的两个父增量。
E RTU ΔT = δ σ NN ( RTU ) Δ 1 V 3
E RSTU ΔT = δ σ NN ( RSTU ) Δ 1 V 3
如果表R被修改,则图11(b)中的维护图示出{T,U}是唯一的间接受影响的项,且其父项为{R,T,U}。其父增量可被计算为
E RTU ΔR = δ σ NN ( RTU ) Δ 1 V 3
接着,得到用于从Δ1V和视图(在应用Δ1V之后)计算Δ2Di的表达式。在对表T***之后,Δ2Di的基本表达式为
Figure A200780005587D00272
Di是视图的老状态(在应用当前更新之前)中项i的净贡献。Di的元组可通过以下表达式从视图中提取:
D i = σ Ex ( D i ) V , (其中,)
Figure A200780005587D00276
表示项
Figure A200780005587D00277
的源表集,而
Figure A200780005587D00278
表示在其上对项
Figure A200780005587D00279
进行空值扩展的表。因为正提取项的净贡献,所以有必要也包括空值扩展的表上的条件。
这类似于从Δ1V提取父增量,但有一个显著的差异:视图可以不对每个源表输出非空列。即使这样,仍有可能从视图提取Di。提取何时仍有可能的精确条件在别处得到。关键的观察结果是视图应展示足够的非空列以便将Di元组与所有其它项唯一地区分开来。
Ei是间接受影响的项,因此应用Δ1V不会影响Ei,而仅影响其父项。因此,视图中满足谓词Ex(Di)的元组与在将Δ1V应用于视图之后完全相同。这意味着,可从V或V+Δ1V任一个中计算Di,即
D i = σ Ex ( D i ) V = σ Ex ( D i ) ( V + Δ 1 V )
将各部分组合在一起,用于计算Δ2Di的最终表达式为,
Figure A200780005587D00281
直观上,该表达式有意义。它实际上等于:在***Δ1之后,找到视图中之前未联接的元组,并删除现在被包括在***到父项的新元组中的那些元组。
继续之前的示例,对于对T的***,计算ΔDR和ΔDRS。根据以上推导,它们可被计算为
DR=σNN(R)∧N(STU)(V31V3)
DRS=σNN(RS)∧N(TU)(V31V3)
将其与来自示例的相应的父增量组合,获得以下表达式
Figure A200780005587D00283
Figure A200780005587D00284
Figure A200780005587D00285
Figure A200780005587D00286
其中q(key R)表示左操作数和右操作数中的R的键列之间的同等联接条件,并且对q(key RS)是类似的。
对于对R的***,可将ΔDTU计算为
Figure A200780005587D00287
Figure A200780005587D00288
在从表T删除的情况中,Δ2Di的基本表达式为
Figure A200780005587D00289
Figure A200780005587D002810
展开
Figure A200780005587D00291
以更仔细观察表达式。
Figure A200780005587D00292
Figure A200780005587D00293
表示在应用了更新之后的父项,而Ei表示在应用当前更新之前的项。然而,Ei是间接受影响的项,因此它不会受到将Δ1V应用于视图的影响。因此,可在应用Δ1V之前或者之后从视图中提取Ei。间接受影响的项的父项总是直接受影响的项,因此
Figure A200780005587D00294
的状态取决于Δ1V(而非Δ2V)。
Figure A200780005587D00295
的第一个分量可按下式从视图中计算
E i = δ σ NN ( τ i ) V = δ σ NN ( τ i ) ( V - Δ 1 V )
第二个分量可按下式从视图中计算
Figure A200780005587D00297
其中,NN(par Ei)选择项Ei的所有父项的元组。
现在重新装配Δ2Di的表达式,且同时改变半联接和反半联接的次序,这产生表达式
Figure A200780005587D00299
可以回想起
Figure A200780005587D002911
因此,
Figure A200780005587D002912
包括存在于项Ei的父项中且要被删除的元组,且谓词q是对Ei的键的同等联接谓词。假定t是
Figure A200780005587D0029132334QIETU
中的元组。因为t是来自Ei的父项的元组,因此t对Ei的列的投影必定存在于Ei中。
而且,这是Ei中t将与之联接的唯一的元组,因为联接谓词是对于Ei的键的。总之,保证
Figure A200780005587D0029132309QIETU
中的每个元组与
Figure A200780005587D0029132322QIETU
中的正好一个元组联接。在这种情况下,有可能消去半联接,并如下从直接计算结果,
Figure A200780005587D00302
用文字表达,首先从Δ1V提取来自
Figure A200780005587D00303
的父项的所有元组,然后将其投影到
Figure A200780005587D00304
的源表的所有(可用)列上,最后消去重复(δ)。
应用这种简化,获得用于计算Δ2Di的以下最终表达式
Figure A200780005587D00305
Figure A200780005587D00306
该表达式直观上也有意义。在删除之后,首先将要删除的所有(父)元组投影到间接受影响的项的表上,并消去重复。这给出了潜在的孤立元组。然后***在删除之后未包括在任何父元组中的那些元组,即实际的孤立元组。如果视图未对所有表展示非空列,则对于***的相同的考虑也适用。
继续该示例视图V3,且假定从表T中删除,发现ΔDR和ΔDRS可如下计算。
Figure A200780005587D00307
Figure A200780005587D00308
Figure A200780005587D00309
Figure A200780005587D003010
对于从表R删除,仅对间接受影响的项的更新可被计算为
Figure A200780005587D003011
Figure A200780005587D003012
如果视图被聚合,且未展示充分的非空列,则不能从视图中提取项的贡献。在这种情况中,项的Δ2必须从基表和更新的表的增量中计算。现在描述如何高效地这样做。首先针对删除,因为删除被证实处理起来比***稍微简单一点。
假定已经对表T应用了更新,因此仅表的新状态可用。表的新状态在***之后为T+ΔT,在删除之后为T-ΔT。
父增量
Figure A200780005587D00311
当然可从Δ1V提取,因此如下重写Δ2Di
Figure A200780005587D00312
Figure A200780005587D00313
Figure A200780005587D00314
的表达式仅引用基表,但它非常低效。以下示出更高效的表达式,但为简明起见,不在本文中包括完整的推导。本文仅包括解释最终表达式所需的内容。
首先,展开
Figure A200780005587D00315
的表达式,并应用变换规则
Figure A200780005587D00316
S2以消去并。该规则对所有表R、S1、S2以及谓词p有效。
Figure A200780005587D00317
Figure A200780005587D00318
父项
Figure A200780005587D00319
包括子项Ei的所有表以及谓词,加上它在某些其他表中联接。通过将父项分成两个部分Ei和余项来使此清楚。用
Figure A200780005587D003110
表示余项,且用qk表示连接两个部分的联接谓词。如果的谓词中的合取式引用来自Ei中的表的列以及来自
Figure A200780005587D003112
中的表的列,则它被包括在qk中。
在应用相当长的变换序列(未示出)之后,获得最终表达式
每一
Figure A200780005587D003115
可从基表和T-ΔT中计算。这在将表达式重写为下式时是清楚的
Figure A200780005587D00321
其中
Figure A200780005587D00322
中所有表的联接,除了T,T-ΔT是T的新状态,而rk是将T与其他表联接的谓词之外。
在另一示例中,考虑视图V3以及如何在从表T进行删除之后计算Δ2。应用以上得到的公式,发现Δ2DR和Δ2DRS可被计算为
Figure A200780005587D00324
Figure A200780005587D00325
Figure A200780005587D00326
Figure A200780005587D00327
现在考虑***。如下重写用于***的Δ2Di
Figure A200780005587D00328
应用与删除相同的变换序列,获得表达式
Figure A200780005587D00329
每一表达式包括与T的老状态的联接,但仅新状态T+ΔT可用。为了处理这个问题,使用等式T=(T+ΔT)-ΔT,并如下重写
Figure A200780005587D003211
Figure A200780005587D003212
Figure A200780005587D003213
其中谓词q(key T)表示T的键上的同等联接谓词。
继续示例视图V3。在对表T的***之后,要从视图删除的元组可被计算为
Figure A200780005587D00331
Figure A200780005587D00332
Figure A200780005587D00333
Figure A200780005587D00334
图13示出为外联接视图构造高效维护表达式的方法。在1300,构造视图维护图。在1302,遍历该图,并为直接受影响项构造由左外联接和内联接组成的维护表达式Δ1。在1304,为每一间接受影响的项构造从Δ1和视图计算改变的维护表达式。对某些项,有可能不能构造这种类型的维护表达式,因为视图未输出所有需要的列。在1306,为每一间接受影响的项构造备选维护表达式。备选表达式从Δ1和基表计算改变。在1308,优化器基于其估算的成本为每一间接受影响的项选择这两个备选之一。
以下是聚合视图的描述。聚合外联接视图仅是在顶部有单个分组的外联接视图。维护聚合外联接视图可能比维护相应的非聚合视图昂贵,因为***必须从基表计算Δ2。然而,在众多情况中,可推断出***或删除不会影响分组的数目。如果这样,则极大地降低了维护开销。此处公开了对用于判定何时更新不会影响分组的数目的充分条件的推导。
聚合视图一般包括count(*)列(行计数),因为这是增量式维护所需的。为便于视图维护,建议视图也可对在某些项中进行了空值扩展的每个表包括非空计数。表T的非空计数由nncount(T)表示。在SQL中,nncount(T)可被实现为count(T.c),其中c是T中不可为空的任何列。
为简单起见,还假定聚合函数中所涉及的所有列不能包括空值。对可为空的列的聚合的增量式维护对于外联接视图是可行的,但不属于本说明书的范围。该问题并不是外联接视图所特有的——它应用于所有类型的视图,包括内联接视图。
SQL要求查询的所有非聚合列被包括在分组列表中。在众多查询中,分组列中的某些列在消去它们不会影响分组的数目的意义上是冗余的。在查询优化时通过消去冗余列来最小化分组列表是标准做法。在以下内容中,假定所有分组列表已经被最小化。
维护聚合外联接视图并不比维护非聚合视图复杂很多。按照上述的同样方式计算视图的非聚合部分的Δ1。然后按视图定义中所指定地来聚合结果,并按照聚合内联接视图的相同方式将结果应用于视图。按需创建新行。删除其行计数变为0的任何行。如果非空计数,如nn_count(T)变为0,则将引用T中任何列的所有聚合置为空。这更新了直接受影响的项。
接着,为基本视图中的每一间接受影响的项计算Δ2,聚合结果并将其应用于视图。然而,Δ2可能如上所述必须从基表中计算,因为可能不能从聚合视图提取所需项,理由在于来自已经被组合成同一组的不同项的元组可能不再能分开。
在众多情况中,可作出对表T的***或删除不会增加或减少聚合视图中的行的数目的推断。如果这样,则将视图维护简化为更新现有的行。这极大地降低了维护开销。这被认为是重要的特例。
作为示例,假定如下创建视图goj_view。该视图由表Customer和Orders的外联接继之以按c_custkey的分组组成。对每一顾客,该视图计算顾客定单的总价格的总和。如果顾客没有任何定单,则总和返回空。该视图还包括用于维护目的的两个计数。孤立顾客均count(o_orderkey)=0。
create view goj_view as
select c_custkey,sum(o_totalprice)as tot_price
    count(o_orderkey)as nn_count,count(*)as row_count
from customer left outer join orders
    on(c_custkey=o_custkey)
group by c_custkey
该视图对每一顾客包括一个组。将除了最终聚合以外的视图部分表示为基本视图。基本视图的范式为
当***新的定单行时,顾客的数目保持不变,且因此聚合视图中分组的数目保持不变。聚合值tot_price可按照与常规聚合视图相同的方式使用Δ1来维护。某些孤立的顾客可能与新定单联接。这样的孤立顾客可通过在更新之前nn_count=0的事实来容易地检测。仅通过用来自Δ1的相应的值来替换总和和两个计数的值来更新它们。
类似地,当从Orders删除记录时,首先使用Δ1来维护视图(包括nn_count)。如果对一顾客nn_count减少为0,则该顾客不再具有定单,且仅将tot_price置为空。
对这种类型的更新,不需要恢复各个项。通过检查非空计数并更新现有行,可非常高效地完成维护。以下定理说明在什么条件下保证聚合视图中分组的数目不会因***或删除而改变。将其列处于分组列表中的表表示为分组表,且将其列被聚合的表表示为聚合表。注意,表可同时用作分组表和聚合表。
定理。如果基本视图满足以下三个条件,则聚合视图V中分组的数目不会因对表R的***或删除而改变。
1.包含图包括含有所有分组表的单个最小项T。
2.项T不是直接受影响的(但可能是间接受影响的)。
3.所有其他受影响的项是T的祖先。
按照更精确的术语重新叙述第一个条件,将分组表的集合表示为
Figure A200780005587D00351
Figure A200780005587D00352
表示包含图中其源集包括的节点的子集。如果在
Figure A200780005587D00354
中存在节点T,使得T的源集被包括在
Figure A200780005587D00355
中每个其他节点的源集中,且
Figure A200780005587D00356
中没有其他节点具有该性质,则第一个条件得到满足。
对满足该定理中的各条件的更新,视图中分组的数目不会改变,并且应仅更新相应的聚合值。当表T的非空计数在一个组中变为0时,已知该组中所有行在表T上进行了空值扩展。在这种情况中,依赖于表T的所有聚合值被置为空。在***时,如果分组在更新之前具有0非空计数,则用来自增量表达式的新值替换聚合值。
图14示出维护聚合视图的方法的流程图。在1400,启动对聚合外联接视图的维护。在1402,使用由左外联接和内联接组成的表达式为视图的非聚合部分计算对直接受影响的项的净贡献的改变的外部并。在1404,为视图的该部分的非聚合部分计算对间接受影响的项的净贡献的改变。在1406,按视图定义中所指定地来聚合结果,并按照聚合内联接视图的相同方式将结果应用于视图。在1408,按需创建新行。在1410,删除其行计数为0的任何行。在1412,如果表T的非空计数变为0,则将引用表T中的列的所有聚合置为空。
作为简明但非结论性的概括,本发明将增量式维护算法扩展到物化外联接视图。基于外联接表达式的范式构造维护表达式。生成维护图来标识范式中的哪些项可能受到影响并必须得到维护。将受到影响的项分为两类,且示出了如何为每一类构造维护表达式。
构想了计算Δ2的更高效方式可通过例如采用外联接或保存并重用部分结果组合不同项的计算的各部分来执行。
现在参考图15,示出了可用于执行所公开的物化视图维护体系结构的计算机的框图。为了提供用于其各方面的附加上下文,图15及以下讨论旨在提供对其中可实现本发明的各方面的合适的计算环境1500的简要概括描述。尽管以上描述是在可在一个或多个计算机上运行的计算机可执行指令的一般上下文中进行的,但是本领域的技术人员将认识到,本发明也可结合其它程序模块和/或作为硬件和软件的组合来实现。
一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件、数据结构等等。此外,本领域的技术人员可以理解,本发明的方法可用其它计算机***配置来实施,包括单处理器或多处理器计算机***、小型机、大型计算机、以及个人计算机、手持式计算设备、基于微处理器的或可编程消费电子产品等,其每一个都可操作上耦合到一个或多个相关联的设备。
所示的本发明的各方面也可在其中某些任务由通过通信网络链接的远程处理设备来执行的分布式计算环境中实施。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备中。
计算机通常包括各种计算机可读介质。计算机可读介质可以是可由计算机访问的任何可用介质,且包括易失性和非易失性介质、可移动和不可移动介质。作为示例,而非限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据之类的信息的任意方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字视频盘(DVD)或其它光盘存储、磁盒、磁带、磁盘存储或其它磁存储设备、或可以用来储存所期望的信息并可由计算机访问的任一其它介质。
再次参考图15,用于实现各方面的示例性环境1500包括计算机1502,计算机1502包括处理单元1504、***存储器1506和***总线1508。***总线1508把包括但不限于***存储器1506的***组件耦合到处理单元1504。处理单元1504可以是各种市场上可购买到的处理器中的任意一种。双微处理器和其它多处理器体系结构也可用作处理单元1504。
***总线1508可以是若干种总线结构中的任一种,这些总线结构还可互连到存储器总线(带有或没有存储器控制器)、***总线、以及使用各类市场上可购买到的总线体系结构中的任一种的局部总线。***存储器1506包括只读存储器(ROM)1510和随机存取存储器(RAM)1512。基本输入/输出***(BIOS)储存在诸如ROM、EPROM、EEPROM等非易失性存储器1510中,其中BIOS包含帮助诸如在启动期间在计算机1502内的元件之间传输信息的基本例程。RAM 1512还可包括诸如静态RAM等高速RAM用于高速缓存数据。
计算机1502还包括内部硬盘驱动器(HDD)1514(例如,EIDE、SATA),该内部硬盘驱动器1514还可被配置成在合适的机壳(未示出)中外部使用;磁软盘驱动器(FDD)1516(例如,从可移动磁盘1518中读取或向其写入);以及光盘驱动器1520(例如,从CD-ROM盘1522中读取,或从诸如DVD等高容量光学介质中读取或向其写入)。硬盘驱动器1514、磁盘驱动器1516和光盘驱动器1520可分别通过硬盘驱动器接口1524、磁盘驱动器接口1526和光盘驱动器接口1528连接到***总线1508。用于外部驱动器实现的接口1524包括通用串行总线(USB)和IEEE 1394接口技术中的至少一种或两者。其它外部驱动器连接技术在本发明所考虑的范围之内。
驱动器及其相关联的计算机可读介质提供了对数据、数据结构、计算机可执行指令等的非易失性存储。对于计算机1502,驱动器和介质容纳适当的数字格式的任何数据的存储。尽管以上对计算机可读介质的描述涉及HDD、可移动磁盘以及诸如CD或DVD等可移动光学介质,但是本领域的技术人员应当理解,示例性操作环境中也可使用可由计算机读取的任何其它类型的介质,诸如zip驱动器、磁带盒、闪存卡、盒式磁带等等,并且任何这样的介质可包含用于执行所公开的发明的方法的计算机可执行指令。
多个程序模块可储存在驱动器和RAM 1512中,包括操作***1530、一个或多个应用程序1532、其它程序模块1534和程序数据1536。所有或部分操作***、应用程序、模块和/或数据也可被高速缓存在RAM 1512中。应该明白,本发明可以用各种市场上可购得的操作***或操作***的组合来实施。
用户可以通过一个或多个有线/无线输入设备,例如键盘1538和诸如鼠标1540等定点设备将命令和信息输入到计算机1502中。其它输入设备(未示出)可包括话筒、IR遥控器、操纵杆、游戏手柄、指示笔、触摸屏等等。这些和其它输入设备通常通过耦合到***总线1508的输入设备接口1542连接到处理单元1504,但也可通过其它接口连接,如并行端口、IEEE 1394串行端口、游戏端口、USB端口、IR接口等等。
监视器1544或其它类型的显示设备也经由接口,诸如视频接口1546连接至***总线1508。除了监视器1544之外,个人计算机通常包括诸如扬声器和打印机的其它***输出设备(未示出)。
计算机1502可使用经由有线和/或无线通信至一个或多个远程计算机,诸如远程计算机1548的逻辑连接在网络化环境中操作。远程计算机1548可以是工作站、服务器计算机、路由器、个人计算机、便携式计算机、基于微处理器的娱乐设备、对等设备或其它常见的网络节点,并且通常包括以上相对于计算机1502描述的许多或所有元件,尽管为简明起见仅示出了存储器/存储设备1550。所描绘的逻辑连接包括到局域网(LAN)1552和/或例如广域网(WAN)1554等更大的网络的有线/无线连接。这一LAN和WAN联网环境常见于办公室和公司,并且方便了诸如内联网等企业范围计算机网络,所有这些都可连接到例如因特网等全球通信网络。
当在LAN网络环境中使用时,计算机1502通过有线和/或无线通信网络接口或适配器1552连接到局域网1556。适配器1556可以方便到LAN 1552的有线或无线通信,并且还可包括其上设置的用于与无线适配器1556通信的无线接入点。
当在WAN网络环境中使用时,计算机1502可包括调制解调器1558,或连接到WAN 1554上的通信服务器,或具有用于通过WAN 1554,诸如通过因特网建立通信的其它装置。或为内置或为外置的调制解调器1558以及有线或无线设备经由串行端口接口1542连接到***总线1508。在网络化环境中,相对于计算机1502所描述的程序模块或其部分可以存储在远程存储器/存储设备1550中。应该理解,所示网络连接是示例性的,并且可以使用在计算机之间建立通信链路的其它手段。
计算机1502可用于与操作上设置在无线通信中的任何无线设备或实体通信,这些设备或实体例如有打印机、扫描仪、台式和/或便携式计算机、便携式数据助理、通信卫星、与无线可检测标签相关联的任何一个设备或位置(例如,公用电话亭、报亭、休息室)以及电话。这至少包括Wi-Fi和蓝牙TM无线技术。由此,通信可以如对于常规网络那样是预定义结构,或者仅仅是至少两个设备之间的自组织(ad hoc)通信。
Wi-Fi,或无线保真,允许从家里沙发、酒店房间的床上或工作的会议室连接到因特网而不需要线缆。Wi-Fi是一种类似蜂窝电话中使用的无线技术,它使得诸如计算机等设备能够在室内和室外,在基站范围内的任何地方发送和接收数据。Wi-Fi网络使用称为IEEE 802.11x(a、b、g等等)的无线电技术来提供安全、可靠、快速的无线连接。Wi-Fi网络可用于将计算机彼此连接、连接到因特网以及连接到有线网络(使用IEEE 802.3或以太网)。
Wi-Fi网络可在非特许的2.4和5GHz无线电波段中操作。IEEE 802.11通用于无线WAN,并使用跳频扩谱(FHSS)或直接序列扩谱(DSSS)中的任一种在2.4GHz的波段中提供1或2Mbps的传输。IEEE 802.11a是应用于无线LAN,并在5GHz波段中提供高达54Mbps的IEEE 802.11的扩展。IEEE 802.11a使用正交频分多路复用(OFDM)编码方案而非FHSS或DSSS。IEEE 802.11b(也被称为802.11高速DSSS或Wi-Fi)是应用于无线LAN并在2.4GHz波段中提供11Mbps传输(带有到5.5、2和1Mbps的回退)的802.11的扩展。IEEE802.11g应用于无线LAN,并在2.4GHz波段中提供20+的Mbps。产品可包括一个以上的波段(例如,双波段),因此网络可提供类似于在许多办公室中使用的基本10BaseT有线以太网网络的真实性能。
现在参考图16,示出了根据另一方面可用于维护物化视图的示例性计算环境1600的示意框图。***1600包括一个或多个客户机1602。客户机1602可以是硬件和/或软件(例如,线程、进程、计算设备)。客户机1602可例如通过本发明而容纳cookie和/或相关联的上下文信息。
***1600也包括一个或多个服务器1604。服务器1604可以是硬件和/或软件(例如,线程、进程、计算设备)。服务器1604可以例如通过使用本发明来容纳线程以执行变换。客户机1602和服务器1604之间的一种可能的通信能够以适合在两个或多个计算机进程之间传输的数据分组的形式进行。数据分组可包括例如cookie和/或相关联的上下文信息。***1600包括可以用来使客户机1602和服务器1604之间通信更容易的通信框架1606(例如,诸如因特网等全球通信网络)。
通信可经由有线(包括光纤)和/或无线技术来促进。客户机1602操作上被连接到一个或多个可以用来存储对客户机1602本地的信息(例如,cookie和/或相关联的上下文信息)的客户机数据存储1608。类似地,服务器1604可被连接到一个或多个可以用来存储对服务器1604本地的信息的服务器存储1610。
上面描述的包括所公开的本发明的示例。当然,描述每一个可以想到的组件或方法的组合是不可能的,但本领域内的普通技术人员应该认识到,许多其他组合和排列都是可能的。因此,本发明旨在涵盖所有这些落入所附权利要求书的精神和范围内的更改、修改和变化。此外,就在说明书或权利要求书中使用的术语“包括”而言,这一术语旨在以与术语“含有”在用作权利要求书中的过渡词时所解释的相似的方式为包含性的。

Claims (20)

1.一种便于维护物化外联接视图的计算机实现的***,包括:
视图创建组件,用于创建包括外联接的物化视图定义;以及
维护组件,用于更新与所述物化视图定义相关联的所存储的物化视图结果。
2.如权利要求1所述的***,其特征在于,所述物化视图定义还包括一侧外联接和全外联接中的至少一个。
3.如权利要求1所述的***,其特征在于,还包括转换组件,用于将外联接视图表达式转换成范式。
4.如权利要求3所述的***,其特征在于,所述范式是联接析取范式。
5.如权利要求4所述的***,其特征在于,所述转换组件利用外键约束来减少所述外联接视图表达式的范式中的项的数目。
6.如权利要求3所述的***,其特征在于,所述转换组件计算对所述范式的项之间的包含关系进行建模的包含图。
7.如权利要求1所述的***,其特征在于,所述维护组件计算规范化视图表达式的项的净贡献。
8.如权利要求1所述的***,其特征在于,所述维护组件标识受更新影响的项。
9.如权利要求1所述的***,其特征在于,所述维护组件区分表达式项是直接受影响的、间接受影响的还是不受影响的。
10.如权利要求1所述的***,其特征在于,所述维护组件创建包括对项的为直接受影响的、间接受影响的、或不受影响的分类的视图维护图。
11.如权利要求1所述的***,其特征在于,所述维护组件更新基表,且如果存在直接受影响的项,则计算并应用对所述直接受影响的项的净贡献的所有改变的外部并。
12.如权利要求1所述的***,其特征在于,所述维护组件更新基表,且如果存在间接受影响的项,则计算并应用对所述间接受影响的项的净贡献的所有改变的外部并。
13.一种维护物化视图的计算机实现的方法,包括:
创建包括外联接的物化视图定义,所述物化视图定义与所存储的物化视图结果相关联;
由于数据库的底层基表中的改变而启动更新处理;
将所述物化视图定义的SPOJ部分转换成范式;
输出更新所述物化视图结果的一个或多个语句;以及
处理所述一个或多个语句以增量式地更新所述物化视图结果。
14.如权利要求13所述的方法,其特征在于,还包括计算***到所述物化视图的一组新元组以及在临时表中存储所述组的动作。
15.如权利要求13所述的方法,其特征在于,还包括标识受到所述更新的影响的项以及将所述项分类为直接受影响、间接受影响和不受影响之一的动作。
16.如权利要求13所述的方法,其特征在于,还包括计算对每一项的净贡献的改变的动作。
17.如权利要求13所述的方法,其特征在于,还包括考虑外键约束的影响而导出用于***和删除的维护表达式的动作,所述外键约束便于从维护图中消去节点。
18.如权利要求13所述的方法,其特征在于,还包括导出用于计算对直接受影响的项的净贡献的改变的表达式的动作,所述表达式包括一侧外联接和内联接。
19.如权利要求13所述的方法,其特征在于,还包括计算对所述视图定义的间接受影响的项的净贡献的改变的动作。
20.一种维护物化视图的计算机实现的***,包括:
用于创建包括多个外联接的物化视图定义的计算机实现的装置;
用于检测底层基表中的改变的计算机实现的装置;
用于将所述物化视图定义的SPOJ部分转换成联接析取范式的计算机实现的装置;
用于处理外键约束的计算机实现的装置;
用于生成处理对所述物化视图定义的结果的更新的一个或多个语句的计算机实现的装置;以及
用于处理所述一个或多个语句以便增量式地更新所述物化视图定义的结果的计算机实现的装置。
CN2007800055873A 2006-02-15 2007-02-13 物化外联接视图的维护 Expired - Fee Related CN101385029B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/354,375 US7467128B2 (en) 2006-02-15 2006-02-15 Maintenance of materialized outer-join views
US11/354,375 2006-02-15
PCT/US2007/004135 WO2007095365A1 (en) 2006-02-15 2007-02-13 Maintenance of materialized outer-join views

Publications (2)

Publication Number Publication Date
CN101385029A true CN101385029A (zh) 2009-03-11
CN101385029B CN101385029B (zh) 2012-06-20

Family

ID=38369938

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007800055873A Expired - Fee Related CN101385029B (zh) 2006-02-15 2007-02-13 物化外联接视图的维护

Country Status (4)

Country Link
US (1) US7467128B2 (zh)
KR (1) KR101169121B1 (zh)
CN (1) CN101385029B (zh)
WO (1) WO2007095365A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103814408A (zh) * 2011-08-22 2014-05-21 桑迪士克技术有限公司 用于非易失性存储器的部分编程块的读取补偿
CN103729392B (zh) * 2012-10-10 2017-03-01 株式会社特迈数据 查询优化方法及查询编译器
CN107798025A (zh) * 2016-09-05 2018-03-13 华为技术有限公司 存储过程的运行、编译方法、装置和数据库***
CN110325978A (zh) * 2017-09-29 2019-10-11 甲骨文国际公司 回旋镖联接:网络高效、后期物化、分布式联接技术
CN112069164A (zh) * 2019-06-10 2020-12-11 北京百度网讯科技有限公司 数据查询方法、装置、电子设备及计算机可读存储介质

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7617189B2 (en) * 2005-09-27 2009-11-10 Oracle International Corporation Parallel query processing techniques for minus and intersect operators
US7945562B2 (en) * 2006-03-15 2011-05-17 Oracle International Corporation Join predicate push-down optimizations
US7680767B2 (en) * 2006-03-23 2010-03-16 Microsoft Corporation Mapping architecture with incremental view maintenance
US9430552B2 (en) 2007-03-16 2016-08-30 Microsoft Technology Licensing, Llc View maintenance rules for an update pipeline of an object-relational mapping (ORM) platform
US7945558B2 (en) * 2008-01-09 2011-05-17 Hewlett-Packard Development Company, L.P. Query optimizer with join cardinality estimation which mitigates the effects of skew
US8209340B2 (en) * 2008-03-31 2012-06-26 Microsoft Corporation Efficient functional representation of result shaping
US8239371B2 (en) * 2008-08-21 2012-08-07 Sap Ag Fast search views over business objects
US8275645B2 (en) * 2008-12-17 2012-09-25 Sap Ag Method and system for recursion check and low-level code generation for directed graph
US8065269B2 (en) * 2008-12-19 2011-11-22 Ianywhere Solutions, Inc. Immediate maintenance of materialized views
US8306959B2 (en) * 2010-08-06 2012-11-06 Ianywhere Solutions, Inc. Incremental maintenance of immediate materialized views with outerjoins
US8977608B2 (en) * 2010-12-07 2015-03-10 Sap Se View life cycle management
US8473483B2 (en) 2011-06-07 2013-06-25 Microsoft Corporation Performing parallel joins on distributed database data
US8666969B2 (en) 2011-11-14 2014-03-04 International Business Machines Corporation Query rewrite for pre-joined tables
US8990186B2 (en) * 2011-12-28 2015-03-24 Teradata Us, Inc. Techniques for updating join indexes
WO2015084311A1 (en) * 2013-12-02 2015-06-11 Hewlett-Packard Development Company, L.P. Merging data from a source table into a target table
US10769149B2 (en) * 2013-12-06 2020-09-08 Micro Focus Llc Transitive local predicated across multiple joins
KR101710445B1 (ko) * 2016-03-02 2017-02-27 (주)로직소프트 갱신 문장들을 조합 및 검증하는 장치
US11347796B2 (en) * 2016-08-11 2022-05-31 Sisense Ltd. Eliminating many-to-many joins between database tables
WO2020057471A1 (en) * 2018-09-21 2020-03-26 Huawei Technologies Co., Ltd. Materialized views for database query optimization
US11243956B1 (en) * 2019-07-10 2022-02-08 Amazon Technologies, Inc. Enforcing foreign key constraints for efficient materialized view updates
US11086868B2 (en) * 2019-10-29 2021-08-10 Oracle International Corporation Materialized view rewrite technique for one-sided outer-join queries
US11176130B2 (en) * 2020-01-09 2021-11-16 Salesforce.Com, Inc. Derivation of a query based on filter criteria
US20230267118A2 (en) * 2021-04-30 2023-08-24 Starcounter Ab System and method for incremental view maintenance based on differential calculus over natural algebra of k-relations

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5197005A (en) * 1989-05-01 1993-03-23 Intelligent Business Systems Database retrieval system having a natural language interface
US5548754A (en) * 1995-02-07 1996-08-20 International Business Machines Corporation Optimization of SQL queries using early-out join transformations
US5999192A (en) * 1996-04-30 1999-12-07 Lucent Technologies Inc. Interactive data exploration apparatus and methods
US5713015A (en) * 1996-05-30 1998-01-27 International Business Machines Corporation Reordering of complex SQL queries involving GROUPBYs, joins, outer joins and full outer joins
US5897632A (en) 1996-08-27 1999-04-27 At&T Corp Method and system for using materialized views to evaluate queries involving aggregation
US6063098A (en) * 1996-12-23 2000-05-16 Houser; Kevin Articulable ultrasonic surgical apparatus
US6341281B1 (en) * 1998-04-14 2002-01-22 Sybase, Inc. Database system with methods for optimizing performance of correlated subqueries by reusing invariant results of operator tree
US6134543A (en) * 1998-07-02 2000-10-17 Oracle Corporation Incremental maintenance of materialized views containing one-to-one lossless joins
US6125360A (en) * 1998-07-02 2000-09-26 Oracle Corporation Incremental maintenance of materialized views containing one-to-N lossless joins
US6581205B1 (en) * 1998-12-17 2003-06-17 International Business Machines Corporation Intelligent compilation of materialized view maintenance for query processing systems
US6496819B1 (en) * 1998-12-28 2002-12-17 Oracle Corporation Rewriting a query in terms of a summary based on functional dependencies and join backs, and based on join derivability
US5991754A (en) * 1998-12-28 1999-11-23 Oracle Corporation Rewriting a query in terms of a summary based on aggregate computability and canonical format, and when a dimension table is on the child side of an outer join
US6438541B1 (en) * 1999-02-09 2002-08-20 Oracle Corp. Method and article for processing queries that define outer joined views
US6763352B2 (en) * 1999-05-21 2004-07-13 International Business Machines Corporation Incremental maintenance of summary tables with complex grouping expressions
US6385603B1 (en) * 1999-06-14 2002-05-07 International Business Machines Corporation Joined table expression optimization by query transformation
US6325811B1 (en) * 1999-10-05 2001-12-04 Ethicon Endo-Surgery, Inc. Blades with functional balance asymmetries for use with ultrasonic surgical instruments
US6516310B2 (en) * 1999-12-07 2003-02-04 Sybase, Inc. System and methodology for join enumeration in a memory-constrained environment
US6604100B1 (en) * 2000-02-09 2003-08-05 At&T Corp. Method for converting relational data into a structured document
US6356890B1 (en) * 2000-04-20 2002-03-12 Microsoft Corporation Merging materialized view pairs for database workload materialized view selection
US6510422B1 (en) 2000-09-27 2003-01-21 Microsoft Corporation Cost based materialized view selection for query optimization
US6665663B2 (en) * 2001-03-15 2003-12-16 International Business Machines Corporation Outerjoin and antijoin reordering using extended eligibility lists
US6745198B1 (en) * 2001-06-11 2004-06-01 Ncr Corporation Parallel spatial join index
US6732096B1 (en) * 2001-07-30 2004-05-04 Ncr Corporation Optimizing an aggregate join query
US6882993B1 (en) * 2002-01-28 2005-04-19 Oracle International Corporation Incremental refresh of materialized views with joins and aggregates after arbitrary DML operations to multiple tables
US6850927B1 (en) * 2002-05-21 2005-02-01 Oracle International Corporation Evaluating queries with outer joins by categorizing and processing combinations of relationships between table records
US7136850B2 (en) * 2002-12-20 2006-11-14 International Business Machines Corporation Self tuning database retrieval optimization using regression functions
US7139783B2 (en) 2003-02-10 2006-11-21 Netezza Corporation Materialized view system and method
US7426522B2 (en) * 2003-09-23 2008-09-16 International Business Machines Corporation Object oriented query path expression to relational outer join translator method, system, article of manufacture, and computer program product

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103814408A (zh) * 2011-08-22 2014-05-21 桑迪士克技术有限公司 用于非易失性存储器的部分编程块的读取补偿
CN103814408B (zh) * 2011-08-22 2016-08-31 桑迪士克科技有限责任公司 用于非易失性存储器的部分编程块的读取补偿
CN103729392B (zh) * 2012-10-10 2017-03-01 株式会社特迈数据 查询优化方法及查询编译器
CN107798025A (zh) * 2016-09-05 2018-03-13 华为技术有限公司 存储过程的运行、编译方法、装置和数据库***
CN107798025B (zh) * 2016-09-05 2020-06-02 华为技术有限公司 存储过程的运行、编译方法、装置和数据库***
CN110325978A (zh) * 2017-09-29 2019-10-11 甲骨文国际公司 回旋镖联接:网络高效、后期物化、分布式联接技术
CN112069164A (zh) * 2019-06-10 2020-12-11 北京百度网讯科技有限公司 数据查询方法、装置、电子设备及计算机可读存储介质
CN112069164B (zh) * 2019-06-10 2023-08-01 北京百度网讯科技有限公司 数据查询方法、装置、电子设备及计算机可读存储介质

Also Published As

Publication number Publication date
WO2007095365A1 (en) 2007-08-23
KR101169121B1 (ko) 2012-07-26
US7467128B2 (en) 2008-12-16
KR20080101901A (ko) 2008-11-21
CN101385029B (zh) 2012-06-20
US20070192283A1 (en) 2007-08-16

Similar Documents

Publication Publication Date Title
CN101385029B (zh) 物化外联接视图的维护
CN113711197B (zh) 查询计划中自适应聚合操作符和属性的放置
Dehaspe et al. Discovery of frequent datalog patterns
US7899796B1 (en) Batch automated blocking and record matching
EP2601600B1 (en) Incremental maintenance of immediate materialized views with outerjoins
CN101479697B (zh) 用于数据存储和检索的***和方法
Han et al. Mining frequent patterns by pattern-growth: methodology and implications
US9158859B2 (en) Segment matching search system and method
US8984019B2 (en) Scalable summarization of data graphs
Glavic et al. Using SQL for efficient generation and querying of provenance information
Xirogiannopoulos et al. Extracting and analyzing hidden graphs from relational databases
Jindal et al. GRAPHiQL: A graph intuitive query language for relational databases
US20160232189A1 (en) Derivation of hierarchy indexes
US8515983B1 (en) Segment matching search system and method
EP3293644B1 (en) Loading data for iterative evaluation through simd registers
Moustafa et al. Declarative analysis of noisy information networks
Silva et al. Pattern mining on stars with fp-growth
Renz-Wieland et al. Scalable frequent sequence mining with flexible subsequence constraints
Zaki Sequence mining in categorical domains: Algorithms and applications
CN110706049A (zh) 数据处理方法及装置
US10628396B1 (en) Batch automated blocking and record matching
Rahal et al. Mining confident minimal rules with fixed-consequents
Christoffersen SPARQL Extension Ranking-Collaborative filtering for OptiqueVQS-queries
Borgelt Frequent pattern mining
Gómez et al. Mining semantic trajectories

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150429

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150429

Address after: Washington State

Patentee after: MICROSOFT TECHNOLOGY LICENSING, LLC

Address before: Washington State

Patentee before: Microsoft Corp.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120620

CF01 Termination of patent right due to non-payment of annual fee