專利名稱:管理數(shù)據(jù)庫系統(tǒng)中的表達式的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及數(shù)據(jù)庫管理系統(tǒng),更具體地說,涉及管理數(shù)據(jù)庫系統(tǒng)中條件表達式的技術(shù)。
背景技術(shù):
在基于事件和內(nèi)容的訂閱系統(tǒng)的情景中,事件定義為,遇到它時,觸發(fā)一個動作。例如,訂閱者可以定義包括事件的規(guī)則,這些事件定義內(nèi)容的一種狀態(tài),遇到時,觸發(fā)將內(nèi)容發(fā)送給用戶。將一種數(shù)據(jù)庫管理系統(tǒng)作為基于內(nèi)容的訂閱系統(tǒng)的底層引擎(underlyingengine),用戶可以在系統(tǒng)中登記查詢,這些查詢基于事件內(nèi)容表達為條件表達式。在這樣的訂閱或具有類似功能的系統(tǒng)中,潛在極其龐大的查詢的集合,或者說是基于內(nèi)容的表達式集合,被注冊來管理所需的內(nèi)容數(shù)據(jù)的發(fā)布。當有一個給定數(shù)據(jù)項時,過濾這些條件表達式以找到與之匹配的表達式。
過濾表達式集合的一種簡單但效率低下的方法是,對于每一個數(shù)據(jù)項,檢驗給定集合中所有的表達式。但這種方法對于大的表達式的集合或者高頻率的事件的情況都是無法實現(xiàn)的。所以,大多數(shù)商業(yè)系統(tǒng)預(yù)處理這些表達式(expression)集合并且建立存儲器內(nèi)(in-memory)匹配網(wǎng)絡(luò)(即專用的數(shù)據(jù)結(jié)構(gòu)),它將表達式集合中的匹配的判定(predicates)分組并且通過多重表達式分擔處理費用。
匹配網(wǎng)絡(luò)是決策樹,其中每個節(jié)點代表給定表達式集合中的一個判定組。僅在對于代表母節(jié)點的判定的數(shù)據(jù)被求值為真時,數(shù)據(jù)從母節(jié)點流向子節(jié)點。從決策樹的根節(jié)點到葉節(jié)點的一條路徑代表了表達式中所有與(conjunctions)。決策樹中的葉節(jié)點被標記有表達式標識符,如果數(shù)據(jù)項通過葉節(jié)點上的判定測試,就數(shù)據(jù)項而言,相應(yīng)的表達式認為是真。許多匹配網(wǎng)絡(luò)的派生形式(像RETE,TREAT和Gator網(wǎng)絡(luò))適用于現(xiàn)有系統(tǒng)中。
現(xiàn)有系統(tǒng)中,任何需要過濾表達式和相關(guān)信息的操作都需要相當數(shù)量的顧客編碼而降低了工作性能。而且,表達式數(shù)目的大小是有限制的,因為相應(yīng)匹配網(wǎng)絡(luò)必須匹配主儲存器,表達式的改變是費用昂貴的,并且,用戶不能調(diào)整表達式與相關(guān)數(shù)據(jù)的結(jié)構(gòu)與用途方面的過濾策略。
如上所述,很明顯有必要提供一種改進的機制來管理表達式,例如與訂閱系統(tǒng)關(guān)聯(lián)的表達式。并且,還更特別需求這樣的機制,這種機制提供了能夠與其他關(guān)聯(lián)信息的過濾器聯(lián)合起來過濾表達式的能力。
本發(fā)明通過附圖中的例子來進行說明,附圖中的例子不是限定,圖中相似的參考數(shù)字代表類似的元素,其中
圖1是示例表,其用于支持本文中描述的過程或步驟的實例;圖2是流程圖,其說明用于管理數(shù)據(jù)庫中表達式的過程;圖3A是流程圖,其說明對以數(shù)據(jù)形式存儲在表中一列中的表達式集合進行求值的過程;圖3B是流程圖,其說明根據(jù)判定分類過濾表達式的步驟;以及圖4是框圖,其說明本發(fā)明的實施例可以在其上執(zhí)行的計算機系統(tǒng)。
具體實施例方式
本發(fā)明涉及一種用于管理數(shù)據(jù)庫系統(tǒng)中的表達式的方法和系統(tǒng)。而且,更具體地講,涉及一種用于管理基于事件和內(nèi)容的信息訂閱系統(tǒng)關(guān)聯(lián)的條件表達式的方法與系統(tǒng)。
在下面的說明中,為了解釋的目的,闡述了許多具體的細節(jié),以提供對本發(fā)明的完整的理解。但是,很明顯,本發(fā)明沒有這些具體細節(jié)也可實施。其他情形中,眾所周知的結(jié)構(gòu)和設(shè)備以框圖形式示出以避免無謂的模糊本發(fā)明的特征。
概述條件表達式,通常呈標準的數(shù)據(jù)庫查詢形式,表示成表的一列中的數(shù)據(jù)。這些表達式舉例來說可能表示用于過濾信息訂閱系統(tǒng)中的數(shù)據(jù)的數(shù)據(jù)過濾器。另一個標準的數(shù)據(jù)庫查詢指定標準,然后可以在此列上執(zhí)行,以確定此列中的表達式是否滿足指定的標準。這些標準舉例來說可表示輸入訂閱系統(tǒng)的數(shù)據(jù)。
因此,通過將表達式視為可以與其他由用戶指定的相關(guān)數(shù)據(jù)一起查詢的數(shù)據(jù),而將這里說明的表達式處理機制與數(shù)據(jù)庫技術(shù)結(jié)合在一起。例如,發(fā)行者可以在查詢中包括其他的與其訂閱者相關(guān)的過濾標準。
在一種具體實施例中,接收包含第一條件表達式的第一查詢。例如,第一查詢可能通過插入(INSERT)或數(shù)據(jù)庫載入操作被接收。第一表達式于是可以表示成表的一列中的數(shù)據(jù)。接收指定第一標準集合的第二查詢,并且至少根據(jù)此列中的表達式是否滿足第一標準集合來執(zhí)行第二查詢以選擇數(shù)據(jù)。例如,可能從數(shù)據(jù)庫應(yīng)用程序的一個用戶接收第二查詢。
在一個具體實施例中,第二查詢進一步指定第二標準集合,其中執(zhí)行第二查詢包括根據(jù)與此列不同的其他列中的數(shù)據(jù)是否滿足第二標準來選擇數(shù)據(jù)。
其他具體實施例包括訂閱服務(wù)或系統(tǒng)從訂閱者收到第一查詢,其中第一表達式指定數(shù)據(jù)必須滿足的標準,以使該數(shù)據(jù)是用戶所感興趣的;從與訂約系統(tǒng)有關(guān)的發(fā)行者收到第二查詢,其中第二查詢指定數(shù)據(jù)必須滿足的標準,相對于訂閱者,因為數(shù)據(jù)是發(fā)行給用戶的。于是數(shù)據(jù)被用戶和發(fā)行者互相過濾。
根據(jù)本發(fā)明的一個方面,一種特殊的索引定義在將表達式作為數(shù)據(jù)存儲的列上,以有效地過濾龐大的表達式集合。
一個具體實施例中,表達式中的判定根據(jù)它們左手邊的同一性,也就是與第一表達式標準關(guān)聯(lián)的共同標識進行分組。這些分組被永久存儲在數(shù)據(jù)庫中。進一步,與判定關(guān)聯(lián)的算符和常量存儲在與相應(yīng)的判定分組關(guān)聯(lián)的判定表中,并且根據(jù)這些算符與常量創(chuàng)建例如并置位圖索引等索引。
管理數(shù)據(jù)庫系統(tǒng)中的表達式一般而言,在基于事件和內(nèi)容的訂閱系統(tǒng)中,為事件結(jié)構(gòu)或背景(context)定義表達式或規(guī)則(例如,事件-條件-動作(ECA)規(guī)則)的集合,且事件的結(jié)構(gòu)決定了可以在表達式中使用的基本屬性。在這里,術(shù)語“事件”用在背景中是指給表達式或“條件”求值的數(shù)據(jù)項。例如,在股票交易的情景中,事件可能是獲得一定價格的公開交易的股票,其被表示為數(shù)據(jù)項。因此,與這個事件關(guān)聯(lián)的表達式的基本屬性可能包括,例如,符號(SYMBOL),價格(PRICE)和變化(CHANGE)。ECA規(guī)則處于休眠狀態(tài)直到被一件事件的發(fā)生激活。
為事件結(jié)構(gòu)或背景的表達式定義的集合稱為表達式集合。例如,訂閱者A可能對表示成SYMBOL=ORCL、PRICE>30、CHANGE>5的事件感興趣;訂閱者B可能對表示成SYMBOL=CSCO、PRICE>25的事件感興趣;訂閱者C可能對表示成SYMBOL=INTC、CHANGE/PRICE>0.1的事件感興趣。
基于規(guī)則的典型系統(tǒng)中,例如基于內(nèi)容的訂閱系統(tǒng)中,有效地過濾條件表達式龐大集合對于系統(tǒng)的可擴縮性至關(guān)重要。與典型的數(shù)據(jù)庫設(shè)計不同,其中少量的查詢執(zhí)行于表中多個行中,基于規(guī)則的系統(tǒng)具有操作于一個數(shù)據(jù)項上的大量表達式(像查詢中的WHERE從句)。
為一種應(yīng)用定義的表達式相對穩(wěn)定,且對這些表達式處理的新數(shù)據(jù)的速率很高。所以,根據(jù)一個方面,執(zhí)行表達式的預(yù)處理以建立專用數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)存取機制(例如索引等),以容許快速地過濾新數(shù)據(jù)項。
表達式集合的預(yù)處理假定系統(tǒng)中有大量的條件表達式,這些表達式傾向于在初級判定級別上具有相似性。也就是說,兩個表達式,每一個都有一個或更多通過“與”連接的基本判定,可以有共同的判定。于是,表達式求值的費用(evaluation cost)在多個表達式之間分擔,從而利用前面敘述的相似性。在一個實施例中,函數(shù)庫,表達式類型庫支持表達式集合的預(yù)處理。
表達式類型庫提供了建立表達式匹配網(wǎng)絡(luò)所需要的基本功能。這種庫是作為Java類的集合供給的,其能夠?qū)⒈磉_式串轉(zhuǎn)換為含初級判定的表達式樹,且通過“與”和“或”結(jié)合。這種庫可以在對這些表達式作增加修改時被任何索引方案用來預(yù)處理表達式集合中的表達式。
這種庫如下分解和處理表達式(1)舉例來說通過重組表達式中的判定并將之改寫為析取規(guī)范形式(DNF),也就是,AND子從句的OR列表(list),標準化表達式。例如下面形式的表達式SYMBOL=“GE”和(PRICE<25或PRICE>35)經(jīng)DNF轉(zhuǎn)換后改寫如下(SYMBOL=“GE”和PRICE<25)或(SYMBOL=“GE”和PRICE>35)。
(2)通過改寫表達式中每個判定以便其右邊部分是純常量,標準化判定。例如,如下形式的判定
PRICE>27+CHANGE被重寫成PRICE-CHANGE>27(3)通過如下分解解碼判定左邊部分(LHS)一個或多個屬性的表達式或函數(shù)(例如,判定PRICE-CHANGE>27中的PRICE-CHANGE);右邊部分(RHS)一個常量(例如,判定PRICE-CHANGE>27中的“27”);關(guān)系算符關(guān)系算符連接LHS與RHS(例如,判定PRICE-CHANGE>27中的“>”)。
判定的左邊部分,例如,屬性SYMBOL,也稱為復(fù)雜屬性。它也可能是涉及一個或多個初級屬性或用戶定義的函數(shù)的次級表達式(sub-expression),例如,變化/價格。判定的算符被映射到預(yù)定整數(shù)值,但是,實施例并不局限于這種映射。被映射的算符和關(guān)聯(lián)的判定常量(RHS)被存儲在一種判定表中,下面會對它予以詳細說明。執(zhí)行時,涉及到IN列表,次級查詢等結(jié)構(gòu)的判定不用其他判定分組。
屬性集合根據(jù)本發(fā)明的一個方面,創(chuàng)建捕獲事件結(jié)構(gòu)或背景的屬性集合。屬性集合有一列在表達式集合中使用的基本屬性及它們的數(shù)據(jù)類型。在其最簡單的形式中,屬性集合類似于數(shù)據(jù)庫中的抽象類型定義。例如,用在表達式集合中的初級屬性的集合構(gòu)成了它的屬性集。
一種非限定性的用于創(chuàng)建屬性集合的技術(shù)可用如下命令表達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’);藉此創(chuàng)建屬性集合“TICK”,其具有基本屬性“SYMBOL”,“PRICE”,和“CHANGE”。
值得注意的是,屬性集合被存儲在表的一列中。例如表達式可以存儲在一種數(shù)據(jù)庫表的VARCHAR2或CLOB列中。例如,將一些表達式集合的元數(shù)據(jù)和該列關(guān)聯(lián),這樣的列可視為表達式數(shù)據(jù)類型列。而且,存儲表達式集合的列與為表達式集合創(chuàng)建的屬性集合關(guān)聯(lián)。一種非限定性的用于關(guān)聯(lián)屬性集合和表達式集合的技術(shù)用下列命令表達EXECUTE dbms_expeng.assign_attribute_set(attr_set=>’TICK’,tab_name=>’TRADER’,exp_column=>’INTERST’);藉此屬性集合“TICK”與存儲在表“TRADER”的“INTEREST”列中的表達式集合關(guān)聯(lián)。
與屬性集合關(guān)聯(lián)的VARCHAR2或CLOB列組成表達式列。存儲在表達式列中的值被視為表達式,并且,起初它們應(yīng)該遵守可包含XPATH表達式的SQL-WHERE從句格式。這些表達式可以使用所有的定義在屬性集合中的屬性以及任何系統(tǒng)變量和用戶環(huán)境中有效的用戶定義函數(shù),例如,UPPER(symbol)=‘INTC’AND change/price>0.1。
表達式過濾器根據(jù)一個實施例,表達式過濾器是PL/SQL包和API的集合,用來管理用戶表中的表達式和過濾給定數(shù)據(jù)項的表達式,也就是說,使用標準SQL或其他查詢語言使表達式中的標準與給定數(shù)據(jù)項進行匹配。在一個發(fā)布系統(tǒng)中,表達式指定數(shù)據(jù)必須滿足的標準以使訂閱者對該數(shù)據(jù)感興趣。表達式過濾器包括兩部分求值算符(下面就要講到)和表達式過濾器索引類型(在“創(chuàng)建表達式集合的索引”部分予以說明)。
求值算符(EVALUATE OPERATOR)引入一種用于處理存儲在表達式列中的表達式集合的新算符。這種算符可以用在標準SQL或DML的WHERE從句中,為數(shù)據(jù)項過濾表達式。使用新算符EVALUATE對表達式集合的判定可與表上的任何其他判定結(jié)合。求值算符接收存儲表達式列的名稱,例如INTEREST,和作為變量的給定數(shù)據(jù)項。求值算符在內(nèi)部使用表達式集合元數(shù)據(jù)來對輸入的數(shù)據(jù)項的表達式求值。
使用求值算符查詢的例子如下SELECT*FROM tradersWHERE EVALUATE(traders.exp,‘symbol=>”intc”,price=>32,change=>3.3’)=1AND traders.city=’New York’.
如果對于給定的數(shù)據(jù)項的值查詢?nèi)≈禐檎?,此表達式視為真。
表達式存儲于其中的表的查詢可以擴展到包括多表連接(joins)和任何其他的使用GROUP BY從句,ORDER BY從句,HAVING等從句的數(shù)據(jù)庫查詢操作。而且,可想到,通過連接表達式存儲于其中的表和存儲數(shù)據(jù)項的表,而為一批數(shù)據(jù)項過濾表達式集合。這樣的查詢的例子如下
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是存儲被處理(即和表達式集合作比較)的數(shù)據(jù)項的表。
為表達式集合創(chuàng)建索引為數(shù)據(jù)項驗證每一個表達式是線性時域解(time solution)。當定義一個龐大的表達式集合時,對于大量的數(shù)據(jù)項而言,這種方法是無法實現(xiàn)的。所以,在一個實施例中,一種新的索引機制被用來有效地對一個龐大的集合中的表達式求值,以便加快用于給定數(shù)據(jù)項或數(shù)據(jù)串的表達式集合的求值。這種索引可以定義在表達式列上,于是,一種查詢優(yōu)化器可以根據(jù)索引使用費用來確定對于表達式集合求值的索引的使用。在一個實施例中,創(chuàng)建永久數(shù)據(jù)庫對象,以保持用于表達式集合的索引,其中索引創(chuàng)建之時預(yù)處理表達式集合填充(populates)這些數(shù)據(jù)庫對象。而且,儲存在這些對象中的信息被保存,以對存儲表達式的表使用DML操作來反映表達式集合的任何變化。
表達式過濾索引類型在一個實施例中,索引方案被執(zhí)行為一種新的索引類型,表達式過濾器,其使用可擴展的索引框架(framework)。在一個實施例中,索引方案被執(zhí)行為一種新的索引類型,表達式過濾器,其使用Oracle可擴展索引框架。表達式過濾器索引類型可用來在任何存儲在類型為VARCHAR2、CLOB、或BFILE的數(shù)據(jù)庫列的表達式集合上創(chuàng)建索引。但是,可想到,也可使用不同于上述的可用在存儲為數(shù)值類型的表達式上的另一種索引類型,因而也在本發(fā)明的實施例的范圍之內(nèi)。
表達式過濾器索引類型的執(zhí)行分析集合中的表達式組,并將表達式中的判定分組為和左邊部分匹配的拆散的集合。用來將表達式集合中的判定分組的數(shù)據(jù)結(jié)構(gòu)本質(zhì)上是關(guān)聯(lián)的。在永久數(shù)據(jù)庫對象用于表達式過濾器索引數(shù)據(jù)結(jié)構(gòu)的實施例中,這樣的數(shù)據(jù)庫對象的例子如下判定表存儲出現(xiàn)在表達式中的判定的關(guān)系表;位圖索引判定表上的一個或多個位圖索引;以及存取函數(shù)為數(shù)據(jù)項過濾表達式而查詢判定表的函數(shù)基于等式和范圍判定,這些對象共同地提供表達式的有效過濾。而且,由于索引結(jié)構(gòu)對象永久地存儲在數(shù)據(jù)庫中,和現(xiàn)有方法(其中通常廣泛使用主存儲器)中表達式集合的大小關(guān)聯(lián)的存儲器限制不適用于本實施例。相反,使用本實施例的操作可以根據(jù)需要將必要的數(shù)據(jù)庫單元存儲在數(shù)據(jù)庫高速緩沖存儲器。
如上所述,給定表達式集合中的表達式指具有固定數(shù)據(jù)類型的基本屬性的集合。而且,這些屬性的有效值的集合構(gòu)成一個數(shù)據(jù)項,其參照這些表達式取值。所以,為了以過濾器索引類型索引表達式集合,所有用在表達式集合中的基本屬性都應(yīng)該與存儲表達式的數(shù)據(jù)庫的列關(guān)聯(lián)。這些基本屬性與一些可選的復(fù)雜屬性組成存儲在一個或多個數(shù)據(jù)字典表中的表達式集合的屬性集合。一種非限制性的如上所述的創(chuàng)建表達式過濾器索引的方法可用下列命令表達,這些命令在存儲表達式的表TRADER的INTEREST列上創(chuàng)建索引TRADERFILTER。另外,通過在這些屬性上定義位圖索引,將該索引配置為用于有效地過濾涉及SYMBOL和PRICE屬性的判定。
CREATE INDEX traderfilter ON trader(interest)INDEXTYPE IS EXPRIL.EXPFILTERPARAMETERS(‘STOREATTRS(symbol,price,change)INDEXATTRS(symbol,price)’).
傳遞給CREATE INDEX語句的參數(shù)決定了用于表達式過濾器索引的對象的結(jié)構(gòu)(判定表、位圖索引、和存取函數(shù)),因而影響過濾器的性能。CREATE INDEX語句中的PARAMETERS從句是可選的,沒有這個從句時,屬性集合中的所有基本屬性(有自然類型(native type))被存儲和索引。
在一個實施例中,為常用的左邊部分在判定表的算符列上和右邊常量列上創(chuàng)建級聯(lián)的位圖索引。例如,左邊部分的屬性SYMBOL在涉及股票報價的表達式中經(jīng)常使用,所以在與判定關(guān)聯(lián)的算符和常量列上創(chuàng)建一個位圖索引,該判定包括SYMBOL屬性,并組合成級聯(lián)的位圖索引。在表達式集合求值時這些位圖索引用作多維索引。
一般而言,這里敘述的索引方案的利用,作為一種新的索引類型(即,表達式過濾器索引類型)執(zhí)行并應(yīng)用到將表達式存儲為數(shù)據(jù)的列上,其通過容許新的求值算符使用表達式過濾器索引,而提供一種有效的對龐大表達式集合求值的方法。
判定求值在一個實施例中,在分析判定中,將表達式集合中的判定分為三個集合(1)用索引屬性判定為屬于這個集合的判定分組創(chuàng)建位圖索引,例如,常見判定,例如包括SYMBOL標識符的判定;(2)用存儲屬性判定屬于這個集合的判定分組被分析和存儲在沒有在<算符,右邊部分常量>列上定義索引的判定表中;以及(3)稀疏判定屬于這個集合的判定以其原始形式存儲。如果對于一個表達式有一個以上的稀疏判定存在,則它們被組合成“與”。注意,對于不能于其他判定歸于同一組的判定增加新的列集合到判定表并不非總是有效。所以,根據(jù)一個實施例,分開的VARCHAR2列,PARTIAL_CONDITION,被定義在判定表中以保留用于稀疏判定的條件表達式。與表達式表中其他列不同,這一列并沒有被索引,且其可以聯(lián)合的形式保留一個或多個判定定義。
依賴于計算它的左邊部分的費用和其左邊部分在表達式集合中的出現(xiàn)頻率,判定落入上面的集合之一。判定求值的費用依賴于它所屬的集合。
對于上面敘述的分類,判定求值涉及的步驟如下。
(1)索引屬性復(fù)雜屬性(即,判定分組的左邊部分)的一次計算,使用計算出的值在位圖索引上作一次或多次范圍掃描;(2)存儲屬性復(fù)雜屬性的一次計算,并將計算值與該組中所有判定的右端部分比較;以及(3)稀疏判定分析代表稀疏判定的子表達式,并通過數(shù)據(jù)值的置換求子表達式的值。
在對表達式集合求值時,根據(jù)一個實施例,表達式分三個階段過濾,敘述如下。
第一階段屬于有索引屬性集合中的判定通過對在其上定義的位圖索引執(zhí)行若干范圍掃描來驗證。組合這些掃描結(jié)果(位圖和操作)以獲得表達式集合,對于這些集合來說,這些判定對于給定的數(shù)據(jù)項都是真。
該階段的總費用定義如下I*C11+N1*C12*log(E1)+C13*E2;其中I是用于過濾的位圖索引的數(shù)目;E1是待過濾的表達式數(shù)目;C11是每個索引的平均位圖索引處理費用;C12*log(E1)是一次索引查找的平均費用;C13是使用行標識符從判定表中取出一列的費用;
E2是在階段1取值為真的表達式的數(shù)目;以及N1是每一位圖索引平均查找數(shù)目。
階段1的結(jié)果是由屬于有索引屬性集合的所有判定取值為真的表達式的集合。
階段2對于所有在階段1取值為真的表達式,驗證屬于存儲屬性集合的判定。
這一階段的總費用定義如下S*C2*E2;其中S是每個表達式的存儲屬性的平均數(shù)目;C2是一次比較的平均費用;E2是階段1取值為真的表達式的總數(shù)目。一般而言,在階段1工作集合(working set)顯著縮小,且E2<<E1。
階段2的結(jié)果是由屬于索引或存儲屬性集合的判定取值為真的表達式集合。
階段3對于階段2后所有為真的表達式,對這些表達式的稀疏判定(如果有的話)取值。
本階段的所有費用定義如下P*C3*E3;
其中P是對表達式稀疏判定的概率;C3是分析稀疏判定并對其求值的平均費用;以及E3是過濾階段2后為真的表達式的總數(shù)目。
階段3的結(jié)果是對于給定數(shù)據(jù)項取值為真的表達式集合。注意可使用不同于上述基于索引的取值方法的替換存取方案。
考慮如圖1所示的數(shù)據(jù)庫表TRADERS,其將股票商人及其貿(mào)易利潤的信息存儲為條件表達式。為了找到30歲以下的住在紐約并且對數(shù)據(jù)項(SYMBOL=‘OROL’,PRICE=31,CHANGE=5.2)感興趣的所有商人,如下的查詢是一個可在TRADERS表上發(fā)出的查詢例子。
SELECT name,phone FROM traders,WHERE EVALUATE(interest,‘SYMBOL=’ORCL’,PRICE=>31,CHANGE=>5.2’)=1 ANDcity=’New York’AND age<30;實際上,這種查詢可以利用判定表和判定表上的位圖索引來過濾表達式。表達式過濾器索引返回對于給定數(shù)據(jù)項取值為真的所有表達式的行內(nèi)部地址(rowids)。SELECT語句中的其余判定對相應(yīng)的行取值以答復(fù)查詢。除了INTEREST列上的表達式過濾索引之外,如果TRADERS表有定義在CITY和AGE列上固有的或擴展的索引,則優(yōu)化器程序可以根據(jù)存取費用,選擇這些索引的一個或多個來答復(fù)上面的查詢。
當有一新行插入TRADERS表或某些現(xiàn)有表達式被更新時,表達式過濾器索引自動保持以反映這些變化。
如上面的查詢例子所示,這里敘述的技術(shù)將表達式過濾操作集成到數(shù)據(jù)庫操作中。在一個信息訂閱-發(fā)布系統(tǒng)的環(huán)境下,作為將表達式和過濾機制集成到數(shù)據(jù)庫系統(tǒng)中的結(jié)果,可從訂閱者和發(fā)行者執(zhí)行互相過濾,并且通過使用標準SQL語句而有效地執(zhí)行互相過濾。所以,通過連接表和給查詢增加判定來促進表達式過濾,多值域查詢(multi-domain)是可能的。而且,對于給定的數(shù)據(jù)集合,通過連接儲存表達式的表和存儲數(shù)據(jù)項的表,成批給表達式集合求值是可能的。
現(xiàn)有方法將系統(tǒng)用戶或客戶的特征(例如名字,電話號碼,住址)與他們各自對數(shù)據(jù)的興趣分割開來,這一點在訂閱表達式中表現(xiàn)出來。許多實際應(yīng)用可以從這種興趣與個人特征結(jié)合中獲益。例如,可以執(zhí)行一個查詢來返回“紐約的對價格超過Y的股票X感興趣的所有商人”或“住在離我的商店10英里以內(nèi)對車輛Z感興趣的所有顧客?!敝档米⒁獾氖牵緦嵤├谄浔尘按龠M表達式的最佳過濾。例如,在股票交易的情況下,由于大多數(shù)用戶對某一種股票符號代表的特定股票感興趣,所以通過將判定根據(jù)符號屬性分組,并建立與包含SYMBOL屬性的判定關(guān)聯(lián)的算符與常量的索引,這種情形導(dǎo)致數(shù)據(jù)的有效過濾。
管理數(shù)據(jù)庫中的表達式的過程圖2是說明管理數(shù)據(jù)庫中的表達式的過程的流程圖。圖2的敘述還參考圖1中的表。
在框202,接收包含第一條件表達式的第一查詢。例如,第一查詢可能通過INSERT或數(shù)據(jù)庫載入操作接收。在一個實施例中,希望條件表達式是SQL WHERE從句的形式。進一步,任何SQL的WHERE從句都可以視為一個表達式。在可替換的實施例中,也可想到不同于SQL查詢形式的條件表達式和不同于任何類型的查詢形式的條件表達式。例如,一個用戶可能通過簡單的文本輸入指定感興趣的數(shù)據(jù),其中文本輸入直接轉(zhuǎn)化為一種合適的數(shù)據(jù)格式,例如VARCHAR2或CLOB等,用于存儲表中的列。
在一個實施例中,第一查詢從用戶傳到信息訂閱系統(tǒng),或其他的基于事件或內(nèi)容的信息發(fā)布系統(tǒng),其中表達式指定數(shù)據(jù)必須滿足的標準,以便該數(shù)據(jù)是特定的用戶感興趣的數(shù)據(jù)。因此,第一查詢可以作為對系統(tǒng)數(shù)據(jù)第一層過濾的機制,主要是處理數(shù)據(jù),以分發(fā)或公布給合適的訂閱者。
在框204,第一查詢的第一條件表達式表達成表中一列中的數(shù)據(jù),就像上面敘述的和圖1中的列106描述的那樣。例如,一個或多個判定構(gòu)成表達式,其被編碼為數(shù)據(jù)形式,SQL或其他查詢語言可以在其上操作。注意,圖1的表中的INTEREST列106中的表達式的表示是為了解釋的目的,并沒有采取描寫的形式。相反,在其中存儲有表達式表達的INTEREST列或任何相似列中存儲的表達式實際上習(xí)慣被編碼為合適的數(shù)據(jù)格式。
在可選框206,在表的一列上創(chuàng)建索引,其中,條件表達式在框204被存儲為數(shù)據(jù)。在這個實施例中,如上所述創(chuàng)建索引。
創(chuàng)建索引的步驟包括根據(jù)與第一標準集合的各個標準關(guān)聯(lián)的判定標識符將表達式集合中的判定分組。繼續(xù)上面的例子,判定分組標識符可能包含SYMBOL、PRICE、和CHANGE。判定算符和常量的集合被存儲在與各個判定標識符關(guān)聯(lián)的判定表中。例如,對SYMBOL的判定分組可在代表算符和常量組合的集合的判定表中有條目(entry),例如算符是“等于”,且常量是“ORCL”,對PRICE的判定分組可能在包含例如“大于或等于”和“31”等算符和常量組合的判定表中有條目。這些算符和常量的集合可以適合于其目的的任何傳統(tǒng)方式編碼。其次,根據(jù)與特定判定標識符關(guān)聯(lián)的判定算符和常量的集合創(chuàng)建一種級聯(lián)位圖索引或另一種形式的索引。例如,作為數(shù)據(jù)過濾過程的一部分,對于判定標識符SYMBOL,為了快速而有效地對判定,因此對表達式求值,為判定表中各個列表示的算符和常量組合的集合創(chuàng)建索引。
在框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。舉例來說可能收到來自數(shù)據(jù)庫應(yīng)用程序的用戶的第二查詢。
在一個實施例中,從信息訂閱系統(tǒng)或其他基于事件或內(nèi)容的信息發(fā)布系統(tǒng)的發(fā)布者收到第二查詢,其中,表達式為待發(fā)布給特殊用戶的數(shù)據(jù)指定數(shù)據(jù)必須滿足的標準集合。于是,第二查詢可以作為一種機制對系統(tǒng)數(shù)據(jù)進行第二層過濾,主要是處理數(shù)據(jù)以分發(fā)或公布給合適的用戶。
在框210中,至少根據(jù)106列中的條件表達式是否滿足第一標準集合,執(zhí)行第二查詢以選擇數(shù)據(jù)。例如,除了其他的功能外,第二查詢的執(zhí)行確定特定數(shù)據(jù)項是否滿足以數(shù)據(jù)列106中存儲的表達式表示的條件或條件集合。換句話說,在訂閱系統(tǒng)的環(huán)境中,通過表達式中指定的條件或判定,確定是否有訂閱者對滿足查詢中WHERE從句的第一部分(在“與”連接之前)指定的標準的數(shù)據(jù)感興趣。
在一個實施例中,第二查詢還指定第二標準集合,其中,在方框210中執(zhí)行第二查詢包括根據(jù)與表達式列不同的一列或多個列(例如列102、104)中的數(shù)據(jù)是否滿足第二標準選擇數(shù)據(jù)。例如,WHERE從句的第二部分(在“與(AND)”連接之后)指定其他列,城市和年齡將被考慮以決定被處理的給定數(shù)據(jù)項是否還滿足標準城市CITY(104列)等于紐約(New York)和年齡AGE(102列)小于30。在框206中創(chuàng)建的索引是可選的,但是,在創(chuàng)建索引的情形中,執(zhí)行第二查詢可以利用這個索引來有效地對條件表達式取值。
實際上,對一層以上或一維以上的過濾,第二查詢可以做為互相過濾機制執(zhí)行。例如,上面的第二查詢同時考慮訂閱者和發(fā)行者的數(shù)據(jù)過濾興趣。值得注意的是,所述的過程可以在信息安全的執(zhí)行中操作,此時,第二標準集合表示特定信息發(fā)布給或提供給誰的標準的安全或授權(quán)。
作為數(shù)據(jù)存儲在數(shù)據(jù)庫表的列中的表達式取值過程圖3A是流程圖,其說明用于存儲為數(shù)據(jù)庫表的列中數(shù)據(jù)的表達式集合的取值過程的流程圖。
在框302中,形成表達式集合中的每個表達式的每個判定都分類為索引的屬性判定、存儲的屬性判定、和稀疏判定中的一種。索引的屬性判定是被選作索引的判定,如上所述,其中索引建立在算符和常量屬性集合的基礎(chǔ)上,算符和常量屬性集合存儲在與各個判定標識符關(guān)聯(lián)的判定表中各個列上。
存儲的屬性判定是一種判定,對于這種判定,它的算符和常量屬性存儲在與各個標識符關(guān)聯(lián)的判定表中各個列上,但沒有創(chuàng)建索引。例如,存儲的屬性判定可能沒有創(chuàng)建索引,因為它們的標識符在表達式集合中并不經(jīng)常使用,或者可能它們是復(fù)雜判定,其包括具有基本屬性(例如,CHANGE/PRICE)的操作。
如上所述,稀疏判定是這樣一個判定,其中與其關(guān)聯(lián)的判定標識符在表達式集合中是不常見的。例如,一個稀疏判定可能從具有一個BETWEEN算符,在同一屬性上有多個算符的,有函數(shù)的,有一個LIKE算符的判定得到。一個稀疏判定和與它關(guān)聯(lián)的算符和常量以數(shù)據(jù)存儲在判定表中。
在框304中,根據(jù)在方框302中執(zhí)行的判定分類,過濾表達式集合。圖3B是說明基于判定分類過濾表達式的步驟的流程圖,方框304。
在框304A中,第一,過濾索引屬性判定以得到包含一個或多個表達式的第一表達式集合,對于這些表達式,它們索引屬性判定對于給定的數(shù)據(jù)項為真。第二,在框304B中,過濾第一表達式集合的存儲屬性判定以得到包含一個或多個表達式的第二表達式集合,對于這些表達式,其所有存儲的屬性對于給定的數(shù)據(jù)項為真。第三,在框304C中,如果有的話,過濾第二表達式集合的稀疏判定以得到包含一個或多個表達式的第三表達式集合,對于這些表達式,其所有判定對于給定的數(shù)據(jù)項為真。因此,數(shù)據(jù)項滿足表達式中指定的標準。
硬件概述圖4的方框圖說明了一個實現(xiàn)本發(fā)明實施例的計算機系統(tǒng)400。計算機系統(tǒng)400包括總線402或用于信息通信的其它通信裝置,以及處理器404與總線402相連用于信息處理。計算系統(tǒng)400還包括主存儲器406,例如隨機存取存儲器(RAM)或其它動態(tài)存儲裝置,與總線402相連用于儲存將被處理器404執(zhí)行的信息和指令。在處理器404進行指令執(zhí)行過程中,主存儲器406還可以被用于存儲臨時變量或其它中間信息。計算機系統(tǒng)400還包括與總線402相連的只讀存儲器(ROM)408或其它靜態(tài)存儲裝置,用于存儲處理器404的靜態(tài)信息和指令。存儲裝置410,例如磁盤或光盤,與總線402相連,用于存儲信息和指令。
計算機系統(tǒng)400還可通過總線402與顯示器412相連,例如陰極射線管(CRT),用來顯示信息給計算機用戶。輸入裝置414,包括文字數(shù)字以及其它按鍵,與總線402相連用來傳達信息和命令給處理器404。另一種類型用戶輸入裝置是光標控制器416,例如鼠標、軌跡球或光標方向鍵,用來傳達方向信息和命令選擇給處理器404以及用來控制顯示器412上的光標移動。這個輸入裝置典型地具有兩個自由度在兩個軸上,第一個軸(例如x)和第二個軸(例如y),使得該裝置在一個平面上確定位置。
本發(fā)明涉及計算機系統(tǒng)400的使用以實現(xiàn)這里描述的技術(shù)。根據(jù)本發(fā)明的一個實施例,這些技術(shù)通過計算機系統(tǒng)400響應(yīng)處理器404執(zhí)行主存儲器406中的一組或更多組的單一或多個指令來完成。這樣的指令可從另一個計算機可讀介質(zhì)中,例如存儲裝置410,讀取到主存儲器406中。在主存儲器406內(nèi)指令的執(zhí)行導(dǎo)致處理器404完成這里所描述的處理步驟。在一個可供選擇的實施例中,硬線電路可被用來代替軟件指令或與軟件指令相結(jié)合來實現(xiàn)本發(fā)明。因此,本發(fā)明的實施例并不局限于任何特殊的硬件電路和軟件組合。
這里使用的術(shù)語“計算機可讀介質(zhì)”指任何參與提供指令給處理器404執(zhí)行的介質(zhì)。這樣一個介質(zhì)可以有許多種形式,包括但不局限于非易失性介質(zhì)、易失性介質(zhì)和傳輸介質(zhì)。非易失性介質(zhì)包括,例如光盤和磁盤,如存儲裝置410。易失性介質(zhì)包括動態(tài)存儲器,如主存儲器406。傳輸介質(zhì)包括同軸電纜、銅線和光纖,包括組成總線402的導(dǎo)線。傳輸介質(zhì)還可以是聲波和光波,例如那些在無線電波和紅外數(shù)據(jù)通信時產(chǎn)生的波。
普通形式的計算機可讀介質(zhì)包括,例如軟盤、軟碟、硬盤、磁帶或任何其它磁性介質(zhì),CD-ROM、任何其它光學(xué)介質(zhì),打孔卡片、打孔紙帶、任何其它具有孔狀圖案的物理介質(zhì),RAM、PROM以及EPROM、FLASH-EPROM,任何其它存儲芯片內(nèi)存盒,載波如下文所描述的,或其它任何計算機可讀的介質(zhì)。
不同形式的計算機可讀介質(zhì)可用來傳送一組或更多組的單一或多個指令到處理器404執(zhí)行。例如,指令可能初始在一臺遠程計算機的磁盤上。該遠程計算機可把指令裝入到動態(tài)內(nèi)存中然后利用調(diào)制解調(diào)器將指令送入電話線。計算機系統(tǒng)400的本地調(diào)制解調(diào)器可以接收到電話線上的數(shù)據(jù),然后使用紅外發(fā)射機將數(shù)據(jù)變成紅外信號。紅外探測器可接收紅外信號上攜帶的數(shù)據(jù),并且適當?shù)碾娐房蓪?shù)據(jù)放到總線402上??偩€402傳送數(shù)據(jù)給主存儲器406,處理器404從那兒獲取并執(zhí)行指令。這些從主存儲器406收到的指令在被處理器404執(zhí)行前或執(zhí)行后選擇性地被存儲在存儲裝置410上。
計算機系統(tǒng)400還包括通信接口418,其連接在總線402上。通信接口418提供雙向數(shù)據(jù)通信,與連接在本地網(wǎng)絡(luò)422上的網(wǎng)絡(luò)鏈路420相連。例如,通信接口418可以是綜合數(shù)據(jù)業(yè)務(wù)網(wǎng)(ISDN)網(wǎng)卡,或調(diào)制解調(diào)器用來提供數(shù)據(jù)通信連接到相應(yīng)類型的電話線上。如另一個例子,通信接口418可以是局域網(wǎng)(LAN)網(wǎng)卡以提供數(shù)據(jù)通信連接到兼容的局域網(wǎng)上。無線連接也可以實現(xiàn)。在任一這樣的實現(xiàn)方式中,通信接口418傳送和接收電信號、電磁信號或光信號,它們都攜帶代表不同類型信息的數(shù)字數(shù)據(jù)流。
網(wǎng)絡(luò)鏈路420通常通過一個或更多網(wǎng)絡(luò)提供數(shù)據(jù)通信到其它數(shù)據(jù)服務(wù)器。例如,網(wǎng)絡(luò)鏈路420可提供連接經(jīng)由本地網(wǎng)絡(luò)422到一個主機424上或到互聯(lián)網(wǎng)服務(wù)供應(yīng)商(ISP)426操作的數(shù)據(jù)設(shè)備上。接著ISP 426通過廣域數(shù)據(jù)包通信網(wǎng)絡(luò),現(xiàn)在通常被稱作為“互聯(lián)網(wǎng)”428,提供數(shù)據(jù)通信服務(wù)。本地網(wǎng)絡(luò)422和互聯(lián)網(wǎng)428都使用電信號、電磁信號或光信號傳送數(shù)字數(shù)據(jù)流。經(jīng)過不同網(wǎng)絡(luò)傳送的信號、網(wǎng)絡(luò)鏈路420上的信號和經(jīng)過通信接口418的信號攜帶著數(shù)字數(shù)據(jù)到達通信系統(tǒng)400或離開通信系統(tǒng)400,這些信號只是傳送信息的示范性載波。
通信系統(tǒng)400可通過網(wǎng)絡(luò)、網(wǎng)絡(luò)鏈路420和通信接口418發(fā)出和接收數(shù)據(jù),包括程序代碼。例如在互聯(lián)網(wǎng)中,服務(wù)器430可從應(yīng)用程序經(jīng)過互聯(lián)網(wǎng)428、網(wǎng)絡(luò)服務(wù)供應(yīng)商426、本地網(wǎng)絡(luò)422和通信接口418傳送請求代碼。
收到的代碼可由處理器404執(zhí)行,和/或存儲在存儲裝置410上,或其它非易失性存儲器用來以后執(zhí)行。按這種方式,計算機系統(tǒng)400可獲得載波形式的應(yīng)用程序代碼。
擴展和可替換的方案以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的權(quán)利要求范圍之內(nèi)。例如,提出了其中使用SQL的實施例;但是,此處所述的技術(shù)并不局限于使用SQL,也可使用其它的數(shù)據(jù)查詢語言。另外一個例子,實施例在訂閱者/發(fā)布者的情景中給出;但是,本發(fā)明的實施例的優(yōu)勢和用途并不局限于這種情景。還有例子,提出這樣的實施例,其中級聯(lián)的位圖索引創(chuàng)建于判定表的列上。但是,實施例并不局限于這種索引,對于其他適合在數(shù)據(jù)表的多個列上創(chuàng)建索引的索引類型,也可以應(yīng)用。所以,本發(fā)明的說明書和附圖應(yīng)視為說明性的,而不是限制性的。
此外,本說明書中,一些過程的步驟按某種特定的順序陳述,字母和字母數(shù)字的標號被用來標記某些步驟。除非在說明中特別聲明,本發(fā)明的實施例并非必須局限于執(zhí)行這些步驟的任何特定順序。特別是,這些標號僅僅是為了方便的識別步驟,而不是特意的規(guī)定或要求執(zhí)行這些步驟的特定順序。
權(quán)利要求
1.一種管理數(shù)據(jù)庫中的表達式的方法,所述方法包含以下步驟接收包含第一條件表達式的第一查詢;將所述第一條件表達式表示成表中一列的數(shù)據(jù);接收第二查詢,所述第二查詢用于指定包含一個或多個標準的第一集合;以及執(zhí)行所述第二查詢,以至少基于所述列中的條件表達式是否滿足所述標準的第一集合而選擇數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的方法,其中所述第二查詢進一步指定包含一個或多個標準的第二集合,且其中所述執(zhí)行第二查詢的步驟包括基于與所述列不同的一個或多個列中的數(shù)據(jù)是否滿足所述標準的第二集合而選擇數(shù)據(jù)。
3.根據(jù)權(quán)利要求1所述的方法,其中接收所述第一查詢的步驟包括接收來自數(shù)據(jù)庫應(yīng)用程序的第一用戶的所述第一查詢,且其中所述第一條件表達式指定數(shù)據(jù)必須滿足的一個或多個標準,以得到所述第一用戶感興趣的數(shù)據(jù)。
4.根據(jù)權(quán)利要求3所述的方法,其中接收所述第二查詢的步驟包括接收來自數(shù)據(jù)庫應(yīng)用的第二用戶的所述第二查詢,且其中,所述第二查詢指定包含數(shù)據(jù)必須滿足的一個或多個標準的第二集合,以便使所述數(shù)據(jù)為所述第一用戶所用,因此使得能夠在所述第一用戶和所述第二用戶之間相互過濾數(shù)據(jù)。
5.根據(jù)權(quán)利要求1所述的方法,其中接收所述第一查詢的步驟包括將來自訂閱者的所述第一查詢接收到信息訂閱系統(tǒng),且其中所述第一條件表達式指定數(shù)據(jù)必須滿足的一個或多個標準,以得到所述訂閱者感興趣的數(shù)據(jù)。
6.根據(jù)權(quán)利要求5所述的方法,其中接收所述第二查詢的步驟包括從所述訂閱系統(tǒng)中的發(fā)布者接收所述第二查詢,且其中所述第二查詢指定包含數(shù)據(jù)必須滿足的一個或多個標準的第二集合,以便將所述數(shù)據(jù)發(fā)布給所述訂閱者。
7.根據(jù)權(quán)利要求1所述的方法,其中接收所述第二查詢的步驟包括從信息訂閱系統(tǒng)的發(fā)布者接收所述第二查詢,且其中所述第二查詢指定包含數(shù)據(jù)必須滿足的一個或多個標準的第二集合,以便將所述數(shù)據(jù)發(fā)布給訂閱者和訂閱系統(tǒng)。
8.根據(jù)權(quán)利要求1所述的方法,其中,所述將第一條件表達式表示為一列中的數(shù)據(jù)的步驟包括將來自多個第一查詢的第一條件表達式集合表示為所述列中的數(shù)據(jù),所述方法進一步包括以下步驟通過基于判定標識符對第一條件表達式集合的判定進行分組,對所述表的列創(chuàng)建索引,其中所述判定標識符和所述標準的第一集合中的各個標準相關(guān)聯(lián);將與各個判定標識符關(guān)聯(lián)的判定算符和常量的集合儲存在判定表中;基于與特定判定標識符關(guān)聯(lián)的判定算符和常量集合創(chuàng)建級聯(lián)的位圖索引。
9.一種承載一個或多個指令序列的計算機可讀介質(zhì),當這些指令序列被一個或多個處理器執(zhí)行時,使所述一個或多個處理器執(zhí)行權(quán)利要求1至8中任一項所述的方法。
10.一種對作為數(shù)據(jù)存儲在表的一列中的表達式集合求值的方法,所述方法包括以下步驟將所述表達式集合中的每個表達式的每個判定分類為以下之一,索引屬性判定,其中位圖索引是基于算符和常量屬性集合創(chuàng)建的,所述算符和常量屬性集合存儲在與各個判定標識符關(guān)聯(lián)的判定表的各個列中;存儲屬性判定,其中算符和常量屬性集合存儲在與各個判定標識符關(guān)聯(lián)的判定表的各個列中,且其中沒有索引創(chuàng)建于所述算符和常量屬性集合之上;稀疏判定,其中與稀疏判定關(guān)聯(lián)的判定標識符在所述表達式集合中不常見,且其中,稀疏判定作為數(shù)據(jù)存儲在所述判定表中;以及基于對所述表達式集合中判定的分類過濾所述表達式集合。
11.根據(jù)權(quán)利要求10所述的方法,其中所述過濾所述表達式集合的步驟包括以下步驟第一,過濾索引屬性判定,以獲得第一表達式集合,所述第一表達式集合包括其儲存的所有索引屬性判定對給定數(shù)據(jù)項均為真的一個或多個表達式;第二,過濾所述第一表達式集合的所述存儲的屬性判定,以獲得其儲存的所有屬性判定對所述給定數(shù)據(jù)項均為真的第二表達式集合;以及第三,如果有,過濾所述第二表達式集合的稀疏判定,以獲得第三表達式集合,所述第三表達式集合包括其所有判定對所述給定數(shù)據(jù)項均為真的一個或多個表達式。
12.根據(jù)權(quán)利要求11所述的方法,進一步包括以下步驟發(fā)布所述給定數(shù)據(jù)項給訂閱者和信息訂閱系統(tǒng),所述信息訂閱系統(tǒng)已表達了對滿足所述第三表達式集合中的表達式表示的標準的數(shù)據(jù)的興趣。
13.一種承載一個或多個指令序列的計算機可讀介質(zhì),當這些指令序列被一個或多個處理器執(zhí)行時,使得所述一個或多個處理器執(zhí)行權(quán)利要求10至12中任一項所述的方法中的任何一個。
14.一種存儲索引的計算機可讀介質(zhì),所述索引建立于具有多個行的表中,所述索引包括級聯(lián)位向量,其中每個位向量都與分別存儲在所述表的各個列中的算符和常量中的其中之一關(guān)聯(lián);其中所述算符和常量與一個或多個判定中的一個關(guān)聯(lián),所述一個或多個判定來自條件表達式,所述條件表達式指定數(shù)據(jù)必須滿足的一個或多個標準,以便所述數(shù)據(jù)是訂閱者和訂閱系統(tǒng)感興趣的。
15.一種用于管理數(shù)據(jù)庫中的表達式的設(shè)備,包括用于接收第一查詢的裝置,所述第一查詢包括第一條件表達式;用于將所述第一條件表達式表示為表的一列中數(shù)據(jù)的裝置;用于接收第二查詢的裝置,所述第二查詢指定包括一個或多個標準的第一集合;以及用于執(zhí)行所述第二查詢以至少基于所述列中的條件表達式是否滿足所述標準的第一集合而選擇數(shù)據(jù)的裝置。
16.一種用于對表達式集合取值的設(shè)備,所述表達式集合以數(shù)據(jù)的形式被儲存在表的一列中,所述設(shè)備包括用于將所述表達式集合中每個表達式的每個判定分類為以下之一的裝置,索引屬性判定,其中位圖索引是基于算符和常量屬性集合創(chuàng)建的,所述算符和常量屬性集合存儲在與各個判定標識符關(guān)聯(lián)的判定表的各個列中;存儲屬性判定,其中算符和常量屬性集合存儲在與各個判定標識符關(guān)聯(lián)的判定表的各個列中,且其中沒有索引創(chuàng)建于所述算符和常量屬性集合之上;稀疏判定,其中與稀疏判定關(guān)聯(lián)的判定標識符在所述表達式集合中不常見,且其中,稀疏判定作為數(shù)據(jù)存儲在所述判定表中;以及用于基于對所述表達式集合中判定的分類過濾所述表達式集合的裝置。
全文摘要
本發(fā)明提供了一種管理表達式的方法,其包括接收包括條件表達式的第一查詢。然后該表達式被表示為表中一列的數(shù)據(jù)。第二查詢被接收到,其規(guī)定標準的第一集合,且執(zhí)行第二查詢以至少基于該列中的表達式是否滿足標準的第一集合選擇數(shù)據(jù)。在一個實施例中,第二查詢進一步規(guī)定標準的第二集合,其中執(zhí)行第二查詢包括基于多個列中數(shù)據(jù)而非表達式是否滿足第二標準。定義特殊索引以有效過濾大表達式集合,該索引可以在存儲表達式的列上創(chuàng)建。一種為作為數(shù)據(jù)存儲在表中的表達式取值的方法,其將每個表達式中的判定分類,并基于該判定分類過濾表達式集合。
文檔編號G06F17/30GK1653452SQ03810570
公開日2005年8月10日 申請日期2003年5月8日 優(yōu)先權(quán)日2002年5月10日
發(fā)明者阿拉溫達·亞拉曼基, 迪特爾·加夫利克, 賈甘納坦·斯里尼瓦桑 申請人:甲骨文國際公司