CN101385029A - 物化外联接视图的维护 - Google Patents
物化外联接视图的维护 Download PDFInfo
- 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
Links
- 238000012423 maintenance Methods 0.000 title claims abstract description 62
- 230000014509 gene expression Effects 0.000 claims abstract description 116
- 238000000034 method Methods 0.000 claims description 50
- 230000008859 change Effects 0.000 claims description 19
- 238000012545 processing Methods 0.000 claims description 13
- 230000009471 action Effects 0.000 claims description 10
- 230000007704 transition Effects 0.000 claims description 7
- 238000004422 calculation algorithm Methods 0.000 abstract description 18
- 230000002776 aggregation Effects 0.000 abstract description 16
- 238000004220 aggregation Methods 0.000 abstract description 16
- 238000006243 chemical reaction Methods 0.000 abstract description 4
- 238000005457 optimization Methods 0.000 abstract description 4
- 238000012217 deletion Methods 0.000 description 28
- 230000037430 deletion Effects 0.000 description 28
- 238000006116 polymerization reaction Methods 0.000 description 23
- 238000003780 insertion Methods 0.000 description 19
- 230000037431 insertion Effects 0.000 description 19
- 230000008569 process Effects 0.000 description 18
- 238000004891 communication Methods 0.000 description 17
- 238000003860 storage Methods 0.000 description 13
- 239000000284 extract Substances 0.000 description 12
- 238000010586 diagram Methods 0.000 description 11
- 230000015654 memory Effects 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 5
- 238000009795 derivation Methods 0.000 description 4
- 238000007689 inspection Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 235000014510 cooky Nutrition 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000011156 evaluation Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 239000012141 concentrate Substances 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000000429 assembly Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000009472 formulation Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/40—Data acquisition and logging
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99932—Access 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 T2表示的外部并首先对每一操作数的元组进行空值扩展(用空值填补)成模式S1∪S2,然后取结果的并(不进行重复消去)。由表示的外部(集合)差以类似方式定义。
如果元组t1和t2在同一模式上定义,且对它们均为非空的所有列,t1与t2一致,且t1包括的空值少于t2,则元组t1被称为包含元组t2。由T↓表示的运算符移除T中被包含的元组返回T中不被T中任何其他元组包含的元组。
表T1和T2的最小并被定义为最小并的优先级低于联接。可示出最小并既是可交换又是结合的。
令T1和T2是分别具有不相交模式S1和S2的表,且p为引用(S1∪S2)中的列的某个子集的谓词。表的(内)联接被定义为t2∈T2,p(t1,t2)}。左半联接被定义为即T1中的元组限定它是否与T2中的某个元组联接。左反(半)联接被定义为即T1中的元组限定它是否不与T2中的任何元组联接。左外联接可被表示为右外联接可被表示为全外联接可被表示为
如此处所述,假定每一基表具有唯一键,在实践中往往也是这样。所有物化视图被假定为具有唯一键,且谓词被假定为对所引用的所有列是拒绝空值的。
基于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。
考虑具有以下定义的示例视图,
该视图包括所有的顾客以及其定单(如果有),以及价格高于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元组将存在一个这样的元组。
结果包括联接中的所有元组,联接中的所有元组,并包含C中的所有元组。这三个子结果中的每一个在结果中用最小方式表示。例如,如果元组(c1,null,null)出现在结果中,则C中存在元组c1,但在O中没有元组o1,使得(c1,o1)出现在中。
表达式可被重写成完全由内联接组成的三个项的最小并,这是原始SPOJ表达式的联接析取形式。
其中πC将结构投影到所需的列C上,且每一项Ei是如下形式的
对将SPOJ表达式转换成联接析取形式使用以下变换规则。
如果T1=T1↓且T2=T2↓
如果T1=T1↓且T2=T2↓
如果T3=T3↓
规则(4)
如果p(1)强且仅引用T1
规则(5)
如果p(1)强且仅引用T1
以下示例示出使用以上规则转换SPOJ表达式。p(i,j)表示引用表Ti和Tj中的列的谓词。
按规则(4)
通过在联接中包括选择谓词
定义。令 为SPOJ表达式的联接析取形式。E的包含图对范式中的每一项Ei包括节点ni,且节点用Ei的源表集标记。如果是的最小超集,则从节点ni到节点nj存在边。如果在图中不存在使得 的节点nk,则是的最小超集。
考虑以下示出两个SPOJ视图,V1和V2,其范式的示例。图3示出了示例SPOJ视图V1和V2的包含图。
联接析取范式中的最小并运算符具有两个概念:消去被包含的元组以及取其余元组的并。通过首先从每一项消去被包含的元组,可由外部并来代替最小并。得到的形式是有用的,因为它清楚地示出什么项受到更新的影响以及如何受到影响。
项之间的包含不是任意的;当检查项的元组是否被包含时,针对父项中的元组进行检查是足够的。以下引理示出如何从项中消去被包含的元组。
引理。令Ei为SPOJ表达式的联接析取范式中的项。则,Ei所生成的未被E中的另一元组包含的元组的集合可被计算为,
被称为项Ei的净贡献,因为Di的元组不被任何其他元组包含,且因此在视图结果中明确显示。以下提供净贡献形式的示例。
定理。令E为具有范式 的SPOJ表达式。则
其中,如引理中所定义,每一Di是从Ei中计算出的。
现在参考图4,示出了生成包含图和对视图的净贡献的方法。在400,检索视图定义。在402,将视图表达式的SPOJ部分转换成由内联接构成的项的最小并组成的联接析取范式。在404,从该范式创建包含图,这揭示了项之间的包含(父子)关系。在406,使用范式中的项表达式和包含图来创建定义每一项对视图的净贡献的表达式。根据以上引理构造项的净贡献表达式。在408,通过用外部并运算符连接所有净贡献表达式来构造定义总净贡献的表达式。
以下是在修改单个基表时如何增量式维护SPOJ视图的描述。此处仅进行***或删除;更新可作为删除继而是***来对待。此处关注的是得到正确的维护表达式而不必是最高效的一个。在下文中将得到更高效的表达式。
第一个任务是标识哪些项会受到***或删除的影响。考虑视图V,并假定修改其基表T之一。这仅当T出现在定义Di的表达式中才会改变项的净贡献。通过检查Di表达式的形式,显然,改变会按三种方式之一影响结果:
1.直接地,这在T处于i中的表之中时发生;
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)获得的表达式由表示。
考虑以下示例:一组元组ΔO被***到表O中,且期望维护视图V1。图5(b)示出该情况的维护图。两个节点直接受影响,即{C,O,L}和{C,O}。要***到视图中的新元组可通过在每一项的净贡献的表达式中用ΔO代入O来计算。给出以下Δ1-表达式,
反半联接的谓词q等于(l.ok=r.ok),其中l.ok(r.ok)指定来自联接的左(右)操作数的列ok。
接着,考虑间接受影响的项{C}。新的O元组将与之前未与任何元组联接的某个C元组联接。该项当前可能包括这样孤立的C元组,它们现在必须被删除。要删除的视图元组可被计算为,
其中,联接谓词q等于(l.ck=r.ck)。
组合各部分,可获得以下完整的维护表达式。
引理。考虑SPOJ视图的范式中其净贡献由定义的项。假定通过***ΔT元组更新了表T。如果项直接受到***的影响,则添加到项的净贡献的元组可被计算为,
如果项间接受影响,则从项的净贡献删除的元组可被计算为,
其中q是对Ei的唯一键的同等联接谓词。
前述示例考虑视图V1以及***到O中;现在考虑从O删除。如之前的情况一样,两个项直接受影响,即{C,O,L}和{C,O},见图5(b)。直接受影响的项的Δ1-表达式与***的相同,但现在得到的元组从视图中删除。存在一个间接受影响的项{C}。删除的O元组可能是与C元组联接的最后一个元组。如果是,则它应在更新后出现在{C}项的结果中。要***的元组可被计算为,
其中,联接谓词q等于(l.ck=r.ck)。
将此与之前得到的Δ1-表达式组合,可获取以下完整的维护表达式。
如果项间接受影响,则向项的净贡献添加的元组可被计算为,
其中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
该表达式中的同等联接谓词如下列出。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可被计算为,
两个项{C}和{L}是间接受影响的。要删除的元组的集合可被计算为,
对于从O中删除,Δ1V2的表达式与***的相同,但Δ2V2表达式是不同的。
可通过简化维护图来得到更高效的维护表达式。以下是如何利用外键约束来从维护图中消去额外节点从而进一步简化维护的描述。
考虑视图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元组来更新。
利用该定理来从维护图中消去一个或多个直接受影响的节点及其边。消去某些直接受影响的节点可能会留下没有引入的边,即没有受影响的父节点的间接受影响的节点。任何这样的节点也可被消去。得到的图被称为简化的维护图。
这种优化可非常显著地降低维护开销。假定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和
由于从L到O的外键约束,对O的***将不会影响节点{O,L}和{C,O,L}。消去这两个节点,留下没有父节点的节点{L},因此它也被消去(间接受影响的节点必须具有父节点)。这留下图9(b)中所示的简化图。对***O的维护表达式被简化为,
这种优化不总是能应用。当更新语句出于得到维护表达式的目的而被逻辑上分解成删除和***时不能应用,因为在这种情况中,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得到的视图,
该视图的范式为
图11示出用于对表T和R的更新的维护图。首先考虑对T***的情况。图5(a)的维护图指示要***三种类型的元组,即形式{T,U}、{R,T,U}和{R,S,T,U}的元组。每一项的元组可分别被计算为 R以及因为T具有唯一键,新的元组不会被已经在V3中的元组包含,所以检查新的元组之间的包含是足够的。Δ1V3可被计算为
这两个表达式可通过将外联接版本转换成联接析取范式来验证为等价的。这样做产生与以上完全相同的三个项,这证实它们是等价的。
用于对T的更新的维护图仅包括含单条路径,且通过自底向上遍历路径、为所遍历的每一条边添加左外联接来构造Δ1-表达式。不难看到,同样的方法适用于包括单条路径的任何维护图。此外,如果图包括多条路径,则可使用任何路径按照同样的方式构造Δ1-表达式。
图11(b)中示出的用于对R的更新的维护图包括两条路径。在这种情况中,可使用任一路径来构造Δ1V3,产生以下两个表达式
该表达式的第一个版本从路径{R}、{R,S}、{R,S,T,U}获得。节点{R}包括单个表R且不包含谓词,因此初始表达式仅为ΔR。与节点{R}比较,节点{R,S}包括一附加表S和谓词p(r,s)。遍历边并添加左外联接产生
节点{R,S,T,U}具有两个附加表T和U以及谓词p(r,t)和p(t,u)。这两个表在它们用作与谓词p(r,t)的左外联接的右操作数之前应首先使用局部谓词p(t,u)联接。这产生第一个表达式。
(从维护图构造的)Δ1V3的范式为
将这两个外联接表达式中的任一个转换成范式产生完全相同的项。
以下的算法1是用于构造用于计算由左外联接和内联接组成的Δ1的表达式的算法。它取维护图和目标表作为输入,并输出用于计算Δ1的表达式。图12示出构造用于计算对直接受影响的项的净贡献的改变的表达式的***1200。***1200包括可执行算法1的表达式构造组件1202。组件1202取视图维护图1204和目标表1206作为输入。通过该算法处理这些输入得到输出表达式1208,它可用于计算对直接受影响的项的净贡献的改变。
该算法使用取一组表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表达式为
这两个表达式均包括半联接,且被称为父增量的右操作数在这两个情况中是相同的。以下示出如何从Δ1V提取父增量。
对于***和删除,左操作数稍有不同。在众多情况中,左操作数可从视图本身提取,但并非总是这样,此处示出何时这样做以及如何做。然而,它总是可从基表和经更新的表的增量来计算。
可通过使用谓词NN(T)=∧t∈T~Null(t)的选择从视图或视图增量恢复来自具有源集T的项的元组。
在以下示例中考虑视图V3,并假定正修改表T。图11(a)中的维护图示出两个间接受影响的项{R}和{R,S},其父项分别为{R,T,U}和{R,S,T,U}。以下表达式从Δ1V3中提取所需的两个父增量。
如果表R被修改,则图11(b)中的维护图示出{T,U}是唯一的间接受影响的项,且其父项为{R,T,U}。其父增量可被计算为
接着,得到用于从Δ1V和视图(在应用Δ1V之后)计算Δ2Di的表达式。在对表T***之后,Δ2Di的基本表达式为
Di是视图的老状态(在应用当前更新之前)中项i的净贡献。Di的元组可通过以下表达式从视图中提取:
这类似于从Δ1V提取父增量,但有一个显著的差异:视图可以不对每个源表输出非空列。即使这样,仍有可能从视图提取Di。提取何时仍有可能的精确条件在别处得到。关键的观察结果是视图应展示足够的非空列以便将Di元组与所有其它项唯一地区分开来。
Ei是间接受影响的项,因此应用Δ1V不会影响Ei,而仅影响其父项。因此,视图中满足谓词Ex(Di)的元组与在将Δ1V应用于视图之后完全相同。这意味着,可从V或V+Δ1V任一个中计算Di,即
将各部分组合在一起,用于计算Δ2Di的最终表达式为,
直观上,该表达式有意义。它实际上等于:在***Δ1之后,找到视图中之前未联接的元组,并删除现在被包括在***到父项的新元组中的那些元组。
继续之前的示例,对于对T的***,计算ΔDR和ΔDRS。根据以上推导,它们可被计算为
DR=σNN(R)∧N(STU)(V3+Δ1V3)
DRS=σNN(RS)∧N(TU)(V3+Δ1V3)
将其与来自示例的相应的父增量组合,获得以下表达式
其中q(key R)表示左操作数和右操作数中的R的键列之间的同等联接条件,并且对q(key RS)是类似的。
对于对R的***,可将ΔDTU计算为
在从表T删除的情况中,Δ2Di的基本表达式为
表示在应用了更新之后的父项,而Ei表示在应用当前更新之前的项。然而,Ei是间接受影响的项,因此它不会受到将Δ1V应用于视图的影响。因此,可在应用Δ1V之前或者之后从视图中提取Ei。间接受影响的项的父项总是直接受影响的项,因此的状态取决于Δ1V(而非Δ2V)。
第二个分量可按下式从视图中计算
其中,NN(par Ei)选择项Ei的所有父项的元组。
现在重新装配Δ2Di的表达式,且同时改变半联接和反半联接的次序,这产生表达式
应用这种简化,获得用于计算Δ2Di的以下最终表达式
该表达式直观上也有意义。在删除之后,首先将要删除的所有(父)元组投影到间接受影响的项的表上,并消去重复。这给出了潜在的孤立元组。然后***在删除之后未包括在任何父元组中的那些元组,即实际的孤立元组。如果视图未对所有表展示非空列,则对于***的相同的考虑也适用。
继续该示例视图V3,且假定从表T中删除,发现ΔDR和ΔDRS可如下计算。
对于从表R删除,仅对间接受影响的项的更新可被计算为
如果视图被聚合,且未展示充分的非空列,则不能从视图中提取项的贡献。在这种情况中,项的Δ2必须从基表和更新的表的增量中计算。现在描述如何高效地这样做。首先针对删除,因为删除被证实处理起来比***稍微简单一点。
假定已经对表T应用了更新,因此仅表的新状态可用。表的新状态在***之后为T+ΔT,在删除之后为T-ΔT。
父项包括子项Ei的所有表以及谓词,加上它在某些其他表中联接。通过将父项分成两个部分Ei和余项来使此清楚。用表示余项,且用qk表示连接两个部分的联接谓词。如果的谓词中的合取式引用来自Ei中的表的列以及来自中的表的列,则它被包括在qk中。
在应用相当长的变换序列(未示出)之后,获得最终表达式
在另一示例中,考虑视图V3以及如何在从表T进行删除之后计算Δ2。应用以上得到的公式,发现Δ2DR和Δ2DRS可被计算为
现在考虑***。如下重写用于***的Δ2Di
应用与删除相同的变换序列,获得表达式
其中谓词q(key T)表示T的键上的同等联接谓词。
继续示例视图V3。在对表T的***之后,要从视图删除的元组可被计算为
图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的祖先。
按照更精确的术语重新叙述第一个条件,将分组表的集合表示为且表示包含图中其源集包括的节点的子集。如果在中存在节点T,使得T的源集被包括在中每个其他节点的源集中,且中没有其他节点具有该性质,则第一个条件得到满足。
对满足该定理中的各条件的更新,视图中分组的数目不会改变,并且应仅更新相应的聚合值。当表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部分转换成联接析取范式的计算机实现的装置;
用于处理外键约束的计算机实现的装置;
用于生成处理对所述物化视图定义的结果的更新的一个或多个语句的计算机实现的装置;以及
用于处理所述一个或多个语句以便增量式地更新所述物化视图定义的结果的计算机实现的装置。
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)
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)
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)
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 |
-
2006
- 2006-02-15 US US11/354,375 patent/US7467128B2/en active Active
-
2007
- 2007-02-13 CN CN2007800055873A patent/CN101385029B/zh not_active Expired - Fee Related
- 2007-02-13 KR KR1020087019714A patent/KR101169121B1/ko active IP Right Grant
- 2007-02-13 WO PCT/US2007/004135 patent/WO2007095365A1/en active Application Filing
Cited By (8)
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 |