管理数据库系统中的表达式的制作方法

文档序号:6408496阅读:350来源:国知局
专利名称:管理数据库系统中的表达式的制作方法
技术领域
本发明一般涉及数据库管理系统,更具体地说,涉及管理数据库系统中条件表达式的技术。
背景技术
在基于事件和内容的订阅系统的情景中,事件定义为,遇到它时,触发一个动作。例如,订阅者可以定义包括事件的规则,这些事件定义内容的一种状态,遇到时,触发将内容发送给用户。将一种数据库管理系统作为基于内容的订阅系统的底层引擎(underlyingengine),用户可以在系统中登记查询,这些查询基于事件内容表达为条件表达式。在这样的订阅或具有类似功能的系统中,潜在极其庞大的查询的集合,或者说是基于内容的表达式集合,被注册来管理所需的内容数据的发布。当有一个给定数据项时,过滤这些条件表达式以找到与之匹配的表达式。
过滤表达式集合的一种简单但效率低下的方法是,对于每一个数据项,检验给定集合中所有的表达式。但这种方法对于大的表达式的集合或者高频率的事件的情况都是无法实现的。所以,大多数商业系统预处理这些表达式(expression)集合并且建立存储器内(in-memory)匹配网络(即专用的数据结构),它将表达式集合中的匹配的判定(predicates)分组并且通过多重表达式分担处理费用。
匹配网络是决策树,其中每个节点代表给定表达式集合中的一个判定组。仅在对于代表母节点的判定的数据被求值为真时,数据从母节点流向子节点。从决策树的根节点到叶节点的一条路径代表了表达式中所有与(conjunctions)。决策树中的叶节点被标记有表达式标识符,如果数据项通过叶节点上的判定测试,就数据项而言,相应的表达式认为是真。许多匹配网络的派生形式(像RETE,TREAT和Gator网络)适用于现有系统中。
现有系统中,任何需要过滤表达式和相关信息的操作都需要相当数量的顾客编码而降低了工作性能。而且,表达式数目的大小是有限制的,因为相应匹配网络必须匹配主储存器,表达式的改变是费用昂贵的,并且,用户不能调整表达式与相关数据的结构与用途方面的过滤策略。
如上所述,很明显有必要提供一种改进的机制来管理表达式,例如与订阅系统关联的表达式。并且,还更特别需求这样的机制,这种机制提供了能够与其他关联信息的过滤器联合起来过滤表达式的能力。


本发明通过附图中的例子来进行说明,附图中的例子不是限定,图中相似的参考数字代表类似的元素,其中
图1是示例表,其用于支持本文中描述的过程或步骤的实例;图2是流程图,其说明用于管理数据库中表达式的过程;图3A是流程图,其说明对以数据形式存储在表中一列中的表达式集合进行求值的过程;图3B是流程图,其说明根据判定分类过滤表达式的步骤;以及图4是框图,其说明本发明的实施例可以在其上执行的计算机系统。
具体实施例方式
本发明涉及一种用于管理数据库系统中的表达式的方法和系统。而且,更具体地讲,涉及一种用于管理基于事件和内容的信息订阅系统关联的条件表达式的方法与系统。
在下面的说明中,为了解释的目的,阐述了许多具体的细节,以提供对本发明的完整的理解。但是,很明显,本发明没有这些具体细节也可实施。其他情形中,众所周知的结构和设备以框图形式示出以避免无谓的模糊本发明的特征。
概述条件表达式,通常呈标准的数据库查询形式,表示成表的一列中的数据。这些表达式举例来说可能表示用于过滤信息订阅系统中的数据的数据过滤器。另一个标准的数据库查询指定标准,然后可以在此列上执行,以确定此列中的表达式是否满足指定的标准。这些标准举例来说可表示输入订阅系统的数据。
因此,通过将表达式视为可以与其他由用户指定的相关数据一起查询的数据,而将这里说明的表达式处理机制与数据库技术结合在一起。例如,发行者可以在查询中包括其他的与其订阅者相关的过滤标准。
在一种具体实施例中,接收包含第一条件表达式的第一查询。例如,第一查询可能通过插入(INSERT)或数据库载入操作被接收。第一表达式于是可以表示成表的一列中的数据。接收指定第一标准集合的第二查询,并且至少根据此列中的表达式是否满足第一标准集合来执行第二查询以选择数据。例如,可能从数据库应用程序的一个用户接收第二查询。
在一个具体实施例中,第二查询进一步指定第二标准集合,其中执行第二查询包括根据与此列不同的其他列中的数据是否满足第二标准来选择数据。
其他具体实施例包括订阅服务或系统从订阅者收到第一查询,其中第一表达式指定数据必须满足的标准,以使该数据是用户所感兴趣的;从与订约系统有关的发行者收到第二查询,其中第二查询指定数据必须满足的标准,相对于订阅者,因为数据是发行给用户的。于是数据被用户和发行者互相过滤。
根据本发明的一个方面,一种特殊的索引定义在将表达式作为数据存储的列上,以有效地过滤庞大的表达式集合。
一个具体实施例中,表达式中的判定根据它们左手边的同一性,也就是与第一表达式标准关联的共同标识进行分组。这些分组被永久存储在数据库中。进一步,与判定关联的算符和常量存储在与相应的判定分组关联的判定表中,并且根据这些算符与常量创建例如并置位图索引等索引。
管理数据库系统中的表达式一般而言,在基于事件和内容的订阅系统中,为事件结构或背景(context)定义表达式或规则(例如,事件-条件-动作(ECA)规则)的集合,且事件的结构决定了可以在表达式中使用的基本属性。在这里,术语“事件”用在背景中是指给表达式或“条件”求值的数据项。例如,在股票交易的情景中,事件可能是获得一定价格的公开交易的股票,其被表示为数据项。因此,与这个事件关联的表达式的基本属性可能包括,例如,符号(SYMBOL),价格(PRICE)和变化(CHANGE)。ECA规则处于休眠状态直到被一件事件的发生激活。
为事件结构或背景的表达式定义的集合称为表达式集合。例如,订阅者A可能对表示成SYMBOL=ORCL、PRICE>30、CHANGE>5的事件感兴趣;订阅者B可能对表示成SYMBOL=CSCO、PRICE>25的事件感兴趣;订阅者C可能对表示成SYMBOL=INTC、CHANGE/PRICE>0.1的事件感兴趣。
基于规则的典型系统中,例如基于内容的订阅系统中,有效地过滤条件表达式庞大集合对于系统的可扩缩性至关重要。与典型的数据库设计不同,其中少量的查询执行于表中多个行中,基于规则的系统具有操作于一个数据项上的大量表达式(像查询中的WHERE从句)。
为一种应用定义的表达式相对稳定,且对这些表达式处理的新数据的速率很高。所以,根据一个方面,执行表达式的预处理以建立专用数据结构和数据存取机制(例如索引等),以容许快速地过滤新数据项。
表达式集合的预处理假定系统中有大量的条件表达式,这些表达式倾向于在初级判定级别上具有相似性。也就是说,两个表达式,每一个都有一个或更多通过“与”连接的基本判定,可以有共同的判定。于是,表达式求值的费用(evaluation cost)在多个表达式之间分担,从而利用前面叙述的相似性。在一个实施例中,函数库,表达式类型库支持表达式集合的预处理。
表达式类型库提供了建立表达式匹配网络所需要的基本功能。这种库是作为Java类的集合供给的,其能够将表达式串转换为含初级判定的表达式树,且通过“与”和“或”结合。这种库可以在对这些表达式作增加修改时被任何索引方案用来预处理表达式集合中的表达式。
这种库如下分解和处理表达式(1)举例来说通过重组表达式中的判定并将之改写为析取规范形式(DNF),也就是,AND子从句的OR列表(list),标准化表达式。例如下面形式的表达式SYMBOL=“GE”和(PRICE<25或PRICE>35)经DNF转换后改写如下(SYMBOL=“GE”和PRICE<25)或(SYMBOL=“GE”和PRICE>35)。
(2)通过改写表达式中每个判定以便其右边部分是纯常量,标准化判定。例如,如下形式的判定
PRICE>27+CHANGE被重写成PRICE-CHANGE>27(3)通过如下分解解码判定左边部分(LHS)一个或多个属性的表达式或函数(例如,判定PRICE-CHANGE>27中的PRICE-CHANGE);右边部分(RHS)一个常量(例如,判定PRICE-CHANGE>27中的“27”);关系算符关系算符连接LHS与RHS(例如,判定PRICE-CHANGE>27中的“>”)。
判定的左边部分,例如,属性SYMBOL,也称为复杂属性。它也可能是涉及一个或多个初级属性或用户定义的函数的次级表达式(sub-expression),例如,变化/价格。判定的算符被映射到预定整数值,但是,实施例并不局限于这种映射。被映射的算符和关联的判定常量(RHS)被存储在一种判定表中,下面会对它予以详细说明。执行时,涉及到IN列表,次级查询等结构的判定不用其他判定分组。
属性集合根据本发明的一个方面,创建捕获事件结构或背景的属性集合。属性集合有一列在表达式集合中使用的基本属性及它们的数据类型。在其最简单的形式中,属性集合类似于数据库中的抽象类型定义。例如,用在表达式集合中的初级属性的集合构成了它的属性集。
一种非限定性的用于创建属性集合的技术可用如下命令表达EXECUTE dbms_expeng.create_attribute_set(attr_set=>’TICK’);EXECUTE dbms_expeng.add_elementary_attribute(attr_set=>’TICK’,attr_name=>’SYMBOL’,attr_type=>’VARCHAR2(6)’);EXECUTE dbms_expeng.add_elementary_attribute(attr_set=>’TICK’,attr_name=>’PRICE’,attr_type=>’NUMBER’);EXECUTE dbms_expeng.add_elementary_attribute(attr_set=>’TICK’,attr_name=>’CHANGE’,attr_type=>’NUMBER’);藉此创建属性集合“TICK”,其具有基本属性“SYMBOL”,“PRICE”,和“CHANGE”。
值得注意的是,属性集合被存储在表的一列中。例如表达式可以存储在一种数据库表的VARCHAR2或CLOB列中。例如,将一些表达式集合的元数据和该列关联,这样的列可视为表达式数据类型列。而且,存储表达式集合的列与为表达式集合创建的属性集合关联。一种非限定性的用于关联属性集合和表达式集合的技术用下列命令表达EXECUTE dbms_expeng.assign_attribute_set(attr_set=>’TICK’,tab_name=>’TRADER’,exp_column=>’INTERST’);藉此属性集合“TICK”与存储在表“TRADER”的“INTEREST”列中的表达式集合关联。
与属性集合关联的VARCHAR2或CLOB列组成表达式列。存储在表达式列中的值被视为表达式,并且,起初它们应该遵守可包含XPATH表达式的SQL-WHERE从句格式。这些表达式可以使用所有的定义在属性集合中的属性以及任何系统变量和用户环境中有效的用户定义函数,例如,UPPER(symbol)=‘INTC’AND change/price>0.1。
表达式过滤器根据一个实施例,表达式过滤器是PL/SQL包和API的集合,用来管理用户表中的表达式和过滤给定数据项的表达式,也就是说,使用标准SQL或其他查询语言使表达式中的标准与给定数据项进行匹配。在一个发布系统中,表达式指定数据必须满足的标准以使订阅者对该数据感兴趣。表达式过滤器包括两部分求值算符(下面就要讲到)和表达式过滤器索引类型(在“创建表达式集合的索引”部分予以说明)。
求值算符(EVALUATE OPERATOR)引入一种用于处理存储在表达式列中的表达式集合的新算符。这种算符可以用在标准SQL或DML的WHERE从句中,为数据项过滤表达式。使用新算符EVALUATE对表达式集合的判定可与表上的任何其他判定结合。求值算符接收存储表达式列的名称,例如INTEREST,和作为变量的给定数据项。求值算符在内部使用表达式集合元数据来对输入的数据项的表达式求值。
使用求值算符查询的例子如下SELECT*FROM tradersWHERE EVALUATE(traders.exp,‘symbol=>”intc”,price=>32,change=>3.3’)=1AND traders.city=’New York’.
如果对于给定的数据项的值查询取值为真,此表达式视为真。
表达式存储于其中的表的查询可以扩展到包括多表连接(joins)和任何其他的使用GROUP BY从句,ORDER BY从句,HAVING等从句的数据库查询操作。而且,可想到,通过连接表达式存储于其中的表和存储数据项的表,而为一批数据项过滤表达式集合。这样的查询的例子如下
SELECT distinct(dataitems.symbol),count(*)FROM traders,detaitemsWHERE EVALUATE(traders.exp,tick.getVarchar(dataitems.symbol,dataitems.price,dataitems.change))=1AND traders.city=’New York’GROUP BY dataitems.symbol;其中,TICK是为表达式集合定义的属性集合名,TRADERS是存储表达式集合的表(例子见图1),DATAITEMS是存储被处理(即和表达式集合作比较)的数据项的表。
为表达式集合创建索引为数据项验证每一个表达式是线性时域解(time solution)。当定义一个庞大的表达式集合时,对于大量的数据项而言,这种方法是无法实现的。所以,在一个实施例中,一种新的索引机制被用来有效地对一个庞大的集合中的表达式求值,以便加快用于给定数据项或数据串的表达式集合的求值。这种索引可以定义在表达式列上,于是,一种查询优化器可以根据索引使用费用来确定对于表达式集合求值的索引的使用。在一个实施例中,创建永久数据库对象,以保持用于表达式集合的索引,其中索引创建之时预处理表达式集合填充(populates)这些数据库对象。而且,储存在这些对象中的信息被保存,以对存储表达式的表使用DML操作来反映表达式集合的任何变化。
表达式过滤索引类型在一个实施例中,索引方案被执行为一种新的索引类型,表达式过滤器,其使用可扩展的索引框架(framework)。在一个实施例中,索引方案被执行为一种新的索引类型,表达式过滤器,其使用Oracle可扩展索引框架。表达式过滤器索引类型可用来在任何存储在类型为VARCHAR2、CLOB、或BFILE的数据库列的表达式集合上创建索引。但是,可想到,也可使用不同于上述的可用在存储为数值类型的表达式上的另一种索引类型,因而也在本发明的实施例的范围之内。
表达式过滤器索引类型的执行分析集合中的表达式组,并将表达式中的判定分组为和左边部分匹配的拆散的集合。用来将表达式集合中的判定分组的数据结构本质上是关联的。在永久数据库对象用于表达式过滤器索引数据结构的实施例中,这样的数据库对象的例子如下判定表存储出现在表达式中的判定的关系表;位图索引判定表上的一个或多个位图索引;以及存取函数为数据项过滤表达式而查询判定表的函数基于等式和范围判定,这些对象共同地提供表达式的有效过滤。而且,由于索引结构对象永久地存储在数据库中,和现有方法(其中通常广泛使用主存储器)中表达式集合的大小关联的存储器限制不适用于本实施例。相反,使用本实施例的操作可以根据需要将必要的数据库单元存储在数据库高速缓冲存储器。
如上所述,给定表达式集合中的表达式指具有固定数据类型的基本属性的集合。而且,这些属性的有效值的集合构成一个数据项,其参照这些表达式取值。所以,为了以过滤器索引类型索引表达式集合,所有用在表达式集合中的基本属性都应该与存储表达式的数据库的列关联。这些基本属性与一些可选的复杂属性组成存储在一个或多个数据字典表中的表达式集合的属性集合。一种非限制性的如上所述的创建表达式过滤器索引的方法可用下列命令表达,这些命令在存储表达式的表TRADER的INTEREST列上创建索引TRADERFILTER。另外,通过在这些属性上定义位图索引,将该索引配置为用于有效地过滤涉及SYMBOL和PRICE属性的判定。
CREATE INDEX traderfilter ON trader(interest)INDEXTYPE IS EXPRIL.EXPFILTERPARAMETERS(‘STOREATTRS(symbol,price,change)INDEXATTRS(symbol,price)’).
传递给CREATE INDEX语句的参数决定了用于表达式过滤器索引的对象的结构(判定表、位图索引、和存取函数),因而影响过滤器的性能。CREATE INDEX语句中的PARAMETERS从句是可选的,没有这个从句时,属性集合中的所有基本属性(有自然类型(native type))被存储和索引。
在一个实施例中,为常用的左边部分在判定表的算符列上和右边常量列上创建级联的位图索引。例如,左边部分的属性SYMBOL在涉及股票报价的表达式中经常使用,所以在与判定关联的算符和常量列上创建一个位图索引,该判定包括SYMBOL属性,并组合成级联的位图索引。在表达式集合求值时这些位图索引用作多维索引。
一般而言,这里叙述的索引方案的利用,作为一种新的索引类型(即,表达式过滤器索引类型)执行并应用到将表达式存储为数据的列上,其通过容许新的求值算符使用表达式过滤器索引,而提供一种有效的对庞大表达式集合求值的方法。
判定求值在一个实施例中,在分析判定中,将表达式集合中的判定分为三个集合(1)用索引属性判定为属于这个集合的判定分组创建位图索引,例如,常见判定,例如包括SYMBOL标识符的判定;(2)用存储属性判定属于这个集合的判定分组被分析和存储在没有在<算符,右边部分常量>列上定义索引的判定表中;以及(3)稀疏判定属于这个集合的判定以其原始形式存储。如果对于一个表达式有一个以上的稀疏判定存在,则它们被组合成“与”。注意,对于不能于其他判定归于同一组的判定增加新的列集合到判定表并不非总是有效。所以,根据一个实施例,分开的VARCHAR2列,PARTIAL_CONDITION,被定义在判定表中以保留用于稀疏判定的条件表达式。与表达式表中其他列不同,这一列并没有被索引,且其可以联合的形式保留一个或多个判定定义。
依赖于计算它的左边部分的费用和其左边部分在表达式集合中的出现频率,判定落入上面的集合之一。判定求值的费用依赖于它所属的集合。
对于上面叙述的分类,判定求值涉及的步骤如下。
(1)索引属性复杂属性(即,判定分组的左边部分)的一次计算,使用计算出的值在位图索引上作一次或多次范围扫描;(2)存储属性复杂属性的一次计算,并将计算值与该组中所有判定的右端部分比较;以及(3)稀疏判定分析代表稀疏判定的子表达式,并通过数据值的置换求子表达式的值。
在对表达式集合求值时,根据一个实施例,表达式分三个阶段过滤,叙述如下。
第一阶段属于有索引属性集合中的判定通过对在其上定义的位图索引执行若干范围扫描来验证。组合这些扫描结果(位图和操作)以获得表达式集合,对于这些集合来说,这些判定对于给定的数据项都是真。
该阶段的总费用定义如下I*C11+N1*C12*log(E1)+C13*E2;其中I是用于过滤的位图索引的数目;E1是待过滤的表达式数目;C11是每个索引的平均位图索引处理费用;C12*log(E1)是一次索引查找的平均费用;C13是使用行标识符从判定表中取出一列的费用;
E2是在阶段1取值为真的表达式的数目;以及N1是每一位图索引平均查找数目。
阶段1的结果是由属于有索引属性集合的所有判定取值为真的表达式的集合。
阶段2对于所有在阶段1取值为真的表达式,验证属于存储属性集合的判定。
这一阶段的总费用定义如下S*C2*E2;其中S是每个表达式的存储属性的平均数目;C2是一次比较的平均费用;E2是阶段1取值为真的表达式的总数目。一般而言,在阶段1工作集合(working set)显著缩小,且E2<<E1。
阶段2的结果是由属于索引或存储属性集合的判定取值为真的表达式集合。
阶段3对于阶段2后所有为真的表达式,对这些表达式的稀疏判定(如果有的话)取值。
本阶段的所有费用定义如下P*C3*E3;
其中P是对表达式稀疏判定的概率;C3是分析稀疏判定并对其求值的平均费用;以及E3是过滤阶段2后为真的表达式的总数目。
阶段3的结果是对于给定数据项取值为真的表达式集合。注意可使用不同于上述基于索引的取值方法的替换存取方案。
考虑如图1所示的数据库表TRADERS,其将股票商人及其贸易利润的信息存储为条件表达式。为了找到30岁以下的住在纽约并且对数据项(SYMBOL=‘OROL’,PRICE=31,CHANGE=5.2)感兴趣的所有商人,如下的查询是一个可在TRADERS表上发出的查询例子。
SELECT name,phone FROM traders,WHERE EVALUATE(interest,‘SYMBOL=’ORCL’,PRICE=>31,CHANGE=>5.2’)=1 ANDcity=’New York’AND age<30;实际上,这种查询可以利用判定表和判定表上的位图索引来过滤表达式。表达式过滤器索引返回对于给定数据项取值为真的所有表达式的行内部地址(rowids)。SELECT语句中的其余判定对相应的行取值以答复查询。除了INTEREST列上的表达式过滤索引之外,如果TRADERS表有定义在CITY和AGE列上固有的或扩展的索引,则优化器程序可以根据存取费用,选择这些索引的一个或多个来答复上面的查询。
当有一新行插入TRADERS表或某些现有表达式被更新时,表达式过滤器索引自动保持以反映这些变化。
如上面的查询例子所示,这里叙述的技术将表达式过滤操作集成到数据库操作中。在一个信息订阅-发布系统的环境下,作为将表达式和过滤机制集成到数据库系统中的结果,可从订阅者和发行者执行互相过滤,并且通过使用标准SQL语句而有效地执行互相过滤。所以,通过连接表和给查询增加判定来促进表达式过滤,多值域查询(multi-domain)是可能的。而且,对于给定的数据集合,通过连接储存表达式的表和存储数据项的表,成批给表达式集合求值是可能的。
现有方法将系统用户或客户的特征(例如名字,电话号码,住址)与他们各自对数据的兴趣分割开来,这一点在订阅表达式中表现出来。许多实际应用可以从这种兴趣与个人特征结合中获益。例如,可以执行一个查询来返回“纽约的对价格超过Y的股票X感兴趣的所有商人”或“住在离我的商店10英里以内对车辆Z感兴趣的所有顾客。”值得注意的是,本实施例基于其背景促进表达式的最佳过滤。例如,在股票交易的情况下,由于大多数用户对某一种股票符号代表的特定股票感兴趣,所以通过将判定根据符号属性分组,并建立与包含SYMBOL属性的判定关联的算符与常量的索引,这种情形导致数据的有效过滤。
管理数据库中的表达式的过程图2是说明管理数据库中的表达式的过程的流程图。图2的叙述还参考图1中的表。
在框202,接收包含第一条件表达式的第一查询。例如,第一查询可能通过INSERT或数据库载入操作接收。在一个实施例中,希望条件表达式是SQL WHERE从句的形式。进一步,任何SQL的WHERE从句都可以视为一个表达式。在可替换的实施例中,也可想到不同于SQL查询形式的条件表达式和不同于任何类型的查询形式的条件表达式。例如,一个用户可能通过简单的文本输入指定感兴趣的数据,其中文本输入直接转化为一种合适的数据格式,例如VARCHAR2或CLOB等,用于存储表中的列。
在一个实施例中,第一查询从用户传到信息订阅系统,或其他的基于事件或内容的信息发布系统,其中表达式指定数据必须满足的标准,以便该数据是特定的用户感兴趣的数据。因此,第一查询可以作为对系统数据第一层过滤的机制,主要是处理数据,以分发或公布给合适的订阅者。
在框204,第一查询的第一条件表达式表达成表中一列中的数据,就像上面叙述的和图1中的列106描述的那样。例如,一个或多个判定构成表达式,其被编码为数据形式,SQL或其他查询语言可以在其上操作。注意,图1的表中的INTEREST列106中的表达式的表示是为了解释的目的,并没有采取描写的形式。相反,在其中存储有表达式表达的INTEREST列或任何相似列中存储的表达式实际上习惯被编码为合适的数据格式。
在可选框206,在表的一列上创建索引,其中,条件表达式在框204被存储为数据。在这个实施例中,如上所述创建索引。
创建索引的步骤包括根据与第一标准集合的各个标准关联的判定标识符将表达式集合中的判定分组。继续上面的例子,判定分组标识符可能包含SYMBOL、PRICE、和CHANGE。判定算符和常量的集合被存储在与各个判定标识符关联的判定表中。例如,对SYMBOL的判定分组可在代表算符和常量组合的集合的判定表中有条目(entry),例如算符是“等于”,且常量是“ORCL”,对PRICE的判定分组可能在包含例如“大于或等于”和“31”等算符和常量组合的判定表中有条目。这些算符和常量的集合可以适合于其目的的任何传统方式编码。其次,根据与特定判定标识符关联的判定算符和常量的集合创建一种级联位图索引或另一种形式的索引。例如,作为数据过滤过程的一部分,对于判定标识符SYMBOL,为了快速而有效地对判定,因此对表达式求值,为判定表中各个列表示的算符和常量组合的集合创建索引。
在框208,接收指定包含一个或多个标准的第一集合的第二查询。下面的查询是第二查询的一个例子。
SELECT name,phone FROM tradersWHERE EVALUATE(interest,‘SYMBOL=’ORCL’,PRICE>=31,CHANGE=>5.2)=1ANDcity=’New York’AND age<30;所述查询指定标准SYMBOL等于“ORCL”,PRICE大于或等于31,且PRICE中的CHANGE大于或等于5.2。举例来说可能收到来自数据库应用程序的用户的第二查询。
在一个实施例中,从信息订阅系统或其他基于事件或内容的信息发布系统的发布者收到第二查询,其中,表达式为待发布给特殊用户的数据指定数据必须满足的标准集合。于是,第二查询可以作为一种机制对系统数据进行第二层过滤,主要是处理数据以分发或公布给合适的用户。
在框210中,至少根据106列中的条件表达式是否满足第一标准集合,执行第二查询以选择数据。例如,除了其他的功能外,第二查询的执行确定特定数据项是否满足以数据列106中存储的表达式表示的条件或条件集合。换句话说,在订阅系统的环境中,通过表达式中指定的条件或判定,确定是否有订阅者对满足查询中WHERE从句的第一部分(在“与”连接之前)指定的标准的数据感兴趣。
在一个实施例中,第二查询还指定第二标准集合,其中,在方框210中执行第二查询包括根据与表达式列不同的一列或多个列(例如列102、104)中的数据是否满足第二标准选择数据。例如,WHERE从句的第二部分(在“与(AND)”连接之后)指定其他列,城市和年龄将被考虑以决定被处理的给定数据项是否还满足标准城市CITY(104列)等于纽约(New York)和年龄AGE(102列)小于30。在框206中创建的索引是可选的,但是,在创建索引的情形中,执行第二查询可以利用这个索引来有效地对条件表达式取值。
实际上,对一层以上或一维以上的过滤,第二查询可以做为互相过滤机制执行。例如,上面的第二查询同时考虑订阅者和发行者的数据过滤兴趣。值得注意的是,所述的过程可以在信息安全的执行中操作,此时,第二标准集合表示特定信息发布给或提供给谁的标准的安全或授权。
作为数据存储在数据库表的列中的表达式取值过程图3A是流程图,其说明用于存储为数据库表的列中数据的表达式集合的取值过程的流程图。
在框302中,形成表达式集合中的每个表达式的每个判定都分类为索引的属性判定、存储的属性判定、和稀疏判定中的一种。索引的属性判定是被选作索引的判定,如上所述,其中索引建立在算符和常量属性集合的基础上,算符和常量属性集合存储在与各个判定标识符关联的判定表中各个列上。
存储的属性判定是一种判定,对于这种判定,它的算符和常量属性存储在与各个标识符关联的判定表中各个列上,但没有创建索引。例如,存储的属性判定可能没有创建索引,因为它们的标识符在表达式集合中并不经常使用,或者可能它们是复杂判定,其包括具有基本属性(例如,CHANGE/PRICE)的操作。
如上所述,稀疏判定是这样一个判定,其中与其关联的判定标识符在表达式集合中是不常见的。例如,一个稀疏判定可能从具有一个BETWEEN算符,在同一属性上有多个算符的,有函数的,有一个LIKE算符的判定得到。一个稀疏判定和与它关联的算符和常量以数据存储在判定表中。
在框304中,根据在方框302中执行的判定分类,过滤表达式集合。图3B是说明基于判定分类过滤表达式的步骤的流程图,方框304。
在框304A中,第一,过滤索引属性判定以得到包含一个或多个表达式的第一表达式集合,对于这些表达式,它们索引属性判定对于给定的数据项为真。第二,在框304B中,过滤第一表达式集合的存储属性判定以得到包含一个或多个表达式的第二表达式集合,对于这些表达式,其所有存储的属性对于给定的数据项为真。第三,在框304C中,如果有的话,过滤第二表达式集合的稀疏判定以得到包含一个或多个表达式的第三表达式集合,对于这些表达式,其所有判定对于给定的数据项为真。因此,数据项满足表达式中指定的标准。
硬件概述图4的方框图说明了一个实现本发明实施例的计算机系统400。计算机系统400包括总线402或用于信息通信的其它通信装置,以及处理器404与总线402相连用于信息处理。计算系统400还包括主存储器406,例如随机存取存储器(RAM)或其它动态存储装置,与总线402相连用于储存将被处理器404执行的信息和指令。在处理器404进行指令执行过程中,主存储器406还可以被用于存储临时变量或其它中间信息。计算机系统400还包括与总线402相连的只读存储器(ROM)408或其它静态存储装置,用于存储处理器404的静态信息和指令。存储装置410,例如磁盘或光盘,与总线402相连,用于存储信息和指令。
计算机系统400还可通过总线402与显示器412相连,例如阴极射线管(CRT),用来显示信息给计算机用户。输入装置414,包括文字数字以及其它按键,与总线402相连用来传达信息和命令给处理器404。另一种类型用户输入装置是光标控制器416,例如鼠标、轨迹球或光标方向键,用来传达方向信息和命令选择给处理器404以及用来控制显示器412上的光标移动。这个输入装置典型地具有两个自由度在两个轴上,第一个轴(例如x)和第二个轴(例如y),使得该装置在一个平面上确定位置。
本发明涉及计算机系统400的使用以实现这里描述的技术。根据本发明的一个实施例,这些技术通过计算机系统400响应处理器404执行主存储器406中的一组或更多组的单一或多个指令来完成。这样的指令可从另一个计算机可读介质中,例如存储装置410,读取到主存储器406中。在主存储器406内指令的执行导致处理器404完成这里所描述的处理步骤。在一个可供选择的实施例中,硬线电路可被用来代替软件指令或与软件指令相结合来实现本发明。因此,本发明的实施例并不局限于任何特殊的硬件电路和软件组合。
这里使用的术语“计算机可读介质”指任何参与提供指令给处理器404执行的介质。这样一个介质可以有许多种形式,包括但不局限于非易失性介质、易失性介质和传输介质。非易失性介质包括,例如光盘和磁盘,如存储装置410。易失性介质包括动态存储器,如主存储器406。传输介质包括同轴电缆、铜线和光纤,包括组成总线402的导线。传输介质还可以是声波和光波,例如那些在无线电波和红外数据通信时产生的波。
普通形式的计算机可读介质包括,例如软盘、软碟、硬盘、磁带或任何其它磁性介质,CD-ROM、任何其它光学介质,打孔卡片、打孔纸带、任何其它具有孔状图案的物理介质,RAM、PROM以及EPROM、FLASH-EPROM,任何其它存储芯片内存盒,载波如下文所描述的,或其它任何计算机可读的介质。
不同形式的计算机可读介质可用来传送一组或更多组的单一或多个指令到处理器404执行。例如,指令可能初始在一台远程计算机的磁盘上。该远程计算机可把指令装入到动态内存中然后利用调制解调器将指令送入电话线。计算机系统400的本地调制解调器可以接收到电话线上的数据,然后使用红外发射机将数据变成红外信号。红外探测器可接收红外信号上携带的数据,并且适当的电路可将数据放到总线402上。总线402传送数据给主存储器406,处理器404从那儿获取并执行指令。这些从主存储器406收到的指令在被处理器404执行前或执行后选择性地被存储在存储装置410上。
计算机系统400还包括通信接口418,其连接在总线402上。通信接口418提供双向数据通信,与连接在本地网络422上的网络链路420相连。例如,通信接口418可以是综合数据业务网(ISDN)网卡,或调制解调器用来提供数据通信连接到相应类型的电话线上。如另一个例子,通信接口418可以是局域网(LAN)网卡以提供数据通信连接到兼容的局域网上。无线连接也可以实现。在任一这样的实现方式中,通信接口418传送和接收电信号、电磁信号或光信号,它们都携带代表不同类型信息的数字数据流。
网络链路420通常通过一个或更多网络提供数据通信到其它数据服务器。例如,网络链路420可提供连接经由本地网络422到一个主机424上或到互联网服务供应商(ISP)426操作的数据设备上。接着ISP 426通过广域数据包通信网络,现在通常被称作为“互联网”428,提供数据通信服务。本地网络422和互联网428都使用电信号、电磁信号或光信号传送数字数据流。经过不同网络传送的信号、网络链路420上的信号和经过通信接口418的信号携带着数字数据到达通信系统400或离开通信系统400,这些信号只是传送信息的示范性载波。
通信系统400可通过网络、网络链路420和通信接口418发出和接收数据,包括程序代码。例如在互联网中,服务器430可从应用程序经过互联网428、网络服务供应商426、本地网络422和通信接口418传送请求代码。
收到的代码可由处理器404执行,和/或存储在存储装置410上,或其它非易失性存储器用来以后执行。按这种方式,计算机系统400可获得载波形式的应用程序代码。
扩展和可替换的方案以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。例如,提出了其中使用SQL的实施例;但是,此处所述的技术并不局限于使用SQL,也可使用其它的数据查询语言。另外一个例子,实施例在订阅者/发布者的情景中给出;但是,本发明的实施例的优势和用途并不局限于这种情景。还有例子,提出这样的实施例,其中级联的位图索引创建于判定表的列上。但是,实施例并不局限于这种索引,对于其他适合在数据表的多个列上创建索引的索引类型,也可以应用。所以,本发明的说明书和附图应视为说明性的,而不是限制性的。
此外,本说明书中,一些过程的步骤按某种特定的顺序陈述,字母和字母数字的标号被用来标记某些步骤。除非在说明中特别声明,本发明的实施例并非必须局限于执行这些步骤的任何特定顺序。特别是,这些标号仅仅是为了方便的识别步骤,而不是特意的规定或要求执行这些步骤的特定顺序。
权利要求
1.一种管理数据库中的表达式的方法,所述方法包含以下步骤接收包含第一条件表达式的第一查询;将所述第一条件表达式表示成表中一列的数据;接收第二查询,所述第二查询用于指定包含一个或多个标准的第一集合;以及执行所述第二查询,以至少基于所述列中的条件表达式是否满足所述标准的第一集合而选择数据。
2.根据权利要求1所述的方法,其中所述第二查询进一步指定包含一个或多个标准的第二集合,且其中所述执行第二查询的步骤包括基于与所述列不同的一个或多个列中的数据是否满足所述标准的第二集合而选择数据。
3.根据权利要求1所述的方法,其中接收所述第一查询的步骤包括接收来自数据库应用程序的第一用户的所述第一查询,且其中所述第一条件表达式指定数据必须满足的一个或多个标准,以得到所述第一用户感兴趣的数据。
4.根据权利要求3所述的方法,其中接收所述第二查询的步骤包括接收来自数据库应用的第二用户的所述第二查询,且其中,所述第二查询指定包含数据必须满足的一个或多个标准的第二集合,以便使所述数据为所述第一用户所用,因此使得能够在所述第一用户和所述第二用户之间相互过滤数据。
5.根据权利要求1所述的方法,其中接收所述第一查询的步骤包括将来自订阅者的所述第一查询接收到信息订阅系统,且其中所述第一条件表达式指定数据必须满足的一个或多个标准,以得到所述订阅者感兴趣的数据。
6.根据权利要求5所述的方法,其中接收所述第二查询的步骤包括从所述订阅系统中的发布者接收所述第二查询,且其中所述第二查询指定包含数据必须满足的一个或多个标准的第二集合,以便将所述数据发布给所述订阅者。
7.根据权利要求1所述的方法,其中接收所述第二查询的步骤包括从信息订阅系统的发布者接收所述第二查询,且其中所述第二查询指定包含数据必须满足的一个或多个标准的第二集合,以便将所述数据发布给订阅者和订阅系统。
8.根据权利要求1所述的方法,其中,所述将第一条件表达式表示为一列中的数据的步骤包括将来自多个第一查询的第一条件表达式集合表示为所述列中的数据,所述方法进一步包括以下步骤通过基于判定标识符对第一条件表达式集合的判定进行分组,对所述表的列创建索引,其中所述判定标识符和所述标准的第一集合中的各个标准相关联;将与各个判定标识符关联的判定算符和常量的集合储存在判定表中;基于与特定判定标识符关联的判定算符和常量集合创建级联的位图索引。
9.一种承载一个或多个指令序列的计算机可读介质,当这些指令序列被一个或多个处理器执行时,使所述一个或多个处理器执行权利要求1至8中任一项所述的方法。
10.一种对作为数据存储在表的一列中的表达式集合求值的方法,所述方法包括以下步骤将所述表达式集合中的每个表达式的每个判定分类为以下之一,索引属性判定,其中位图索引是基于算符和常量属性集合创建的,所述算符和常量属性集合存储在与各个判定标识符关联的判定表的各个列中;存储属性判定,其中算符和常量属性集合存储在与各个判定标识符关联的判定表的各个列中,且其中没有索引创建于所述算符和常量属性集合之上;稀疏判定,其中与稀疏判定关联的判定标识符在所述表达式集合中不常见,且其中,稀疏判定作为数据存储在所述判定表中;以及基于对所述表达式集合中判定的分类过滤所述表达式集合。
11.根据权利要求10所述的方法,其中所述过滤所述表达式集合的步骤包括以下步骤第一,过滤索引属性判定,以获得第一表达式集合,所述第一表达式集合包括其储存的所有索引属性判定对给定数据项均为真的一个或多个表达式;第二,过滤所述第一表达式集合的所述存储的属性判定,以获得其储存的所有属性判定对所述给定数据项均为真的第二表达式集合;以及第三,如果有,过滤所述第二表达式集合的稀疏判定,以获得第三表达式集合,所述第三表达式集合包括其所有判定对所述给定数据项均为真的一个或多个表达式。
12.根据权利要求11所述的方法,进一步包括以下步骤发布所述给定数据项给订阅者和信息订阅系统,所述信息订阅系统已表达了对满足所述第三表达式集合中的表达式表示的标准的数据的兴趣。
13.一种承载一个或多个指令序列的计算机可读介质,当这些指令序列被一个或多个处理器执行时,使得所述一个或多个处理器执行权利要求10至12中任一项所述的方法中的任何一个。
14.一种存储索引的计算机可读介质,所述索引建立于具有多个行的表中,所述索引包括级联位向量,其中每个位向量都与分别存储在所述表的各个列中的算符和常量中的其中之一关联;其中所述算符和常量与一个或多个判定中的一个关联,所述一个或多个判定来自条件表达式,所述条件表达式指定数据必须满足的一个或多个标准,以便所述数据是订阅者和订阅系统感兴趣的。
15.一种用于管理数据库中的表达式的设备,包括用于接收第一查询的装置,所述第一查询包括第一条件表达式;用于将所述第一条件表达式表示为表的一列中数据的装置;用于接收第二查询的装置,所述第二查询指定包括一个或多个标准的第一集合;以及用于执行所述第二查询以至少基于所述列中的条件表达式是否满足所述标准的第一集合而选择数据的装置。
16.一种用于对表达式集合取值的设备,所述表达式集合以数据的形式被储存在表的一列中,所述设备包括用于将所述表达式集合中每个表达式的每个判定分类为以下之一的装置,索引属性判定,其中位图索引是基于算符和常量属性集合创建的,所述算符和常量属性集合存储在与各个判定标识符关联的判定表的各个列中;存储属性判定,其中算符和常量属性集合存储在与各个判定标识符关联的判定表的各个列中,且其中没有索引创建于所述算符和常量属性集合之上;稀疏判定,其中与稀疏判定关联的判定标识符在所述表达式集合中不常见,且其中,稀疏判定作为数据存储在所述判定表中;以及用于基于对所述表达式集合中判定的分类过滤所述表达式集合的装置。
全文摘要
本发明提供了一种管理表达式的方法,其包括接收包括条件表达式的第一查询。然后该表达式被表示为表中一列的数据。第二查询被接收到,其规定标准的第一集合,且执行第二查询以至少基于该列中的表达式是否满足标准的第一集合选择数据。在一个实施例中,第二查询进一步规定标准的第二集合,其中执行第二查询包括基于多个列中数据而非表达式是否满足第二标准。定义特殊索引以有效过滤大表达式集合,该索引可以在存储表达式的列上创建。一种为作为数据存储在表中的表达式取值的方法,其将每个表达式中的判定分类,并基于该判定分类过滤表达式集合。
文档编号G06F17/30GK1653452SQ03810570
公开日2005年8月10日 申请日期2003年5月8日 优先权日2002年5月10日
发明者阿拉温达·亚拉曼基, 迪特尔·加夫利克, 贾甘纳坦·斯里尼瓦桑 申请人:甲骨文国际公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1