亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種基于復數(shù)單維索引的對稱發(fā)布訂閱系統(tǒng)匹配方法

文檔序號:6339992閱讀:156來源:國知局
專利名稱:一種基于復數(shù)單維索引的對稱發(fā)布訂閱系統(tǒng)匹配方法
技術領域
本發(fā)明屬于數(shù)據(jù)庫領域,特別涉及一種基于復數(shù)單維索引的對稱發(fā)布訂閱系統(tǒng)匹 配方法。
背景技術
發(fā)布訂閱系統(tǒng)是以個性化的信息發(fā)布和獲取為中心的應用服務平臺,如提供股 票、交通、天氣、新聞等信息的發(fā)布及訂閱的服務平臺,發(fā)布者提供給平臺的信息被稱作事 件,訂閱者提供給平臺的感興趣消息的過濾條件被稱作訂閱,在傳統(tǒng)的發(fā)布訂閱系統(tǒng)中,信 息的發(fā)布者對信息的訂閱者沒有約束;有一類信息發(fā)布獲取服務平臺如求職求人、出租 求租、網(wǎng)上易物等,信息的發(fā)布者需要對信息的接受者進行篩選過濾,以求職求人為例,公 司發(fā)布工資信息的同時還對求職者的年齡有要求,求職者發(fā)布自己的年齡信息的同時還對 公司所提供的工資有要求,與傳統(tǒng)的發(fā)布訂閱系統(tǒng)不同,該類服務平臺的用戶既是信息的 制造者又是信息的消費者,這類信息發(fā)布獲取服務平臺被稱為對稱發(fā)布訂閱系統(tǒng)。不論是傳統(tǒng)的發(fā)布訂閱系統(tǒng)還是對稱發(fā)布訂閱系統(tǒng),事件與訂閱的匹配方法是發(fā) 布訂閱系統(tǒng)的關鍵技術之一,在傳統(tǒng)的發(fā)布訂閱系統(tǒng)中,為了提高匹配效率,需要對由謂詞 表示的過濾條件建立訂閱索引,根據(jù)索引結(jié)構(gòu),匹配方法可分為三類1)基于復數(shù)單維索 引的方法對于定義在相同屬性類型相同的謂詞建立一個一維索引,索引結(jié)構(gòu)可以采用紅 黑樹、哈希表與B+Tree,匹配過程是對滿足條件的謂詞進行計數(shù),其代表為Counting方法; 2)基于高維索引的方法是把訂閱看作高維空間上的對象,利用高維空間索引對訂閱建索 引,匹配過程就是高維空間的查詢過程,常用的索引結(jié)構(gòu)是R*Tree、UBTree ;3)基于決策樹 的方法,每一個屬性對應樹的一層,每一層的分支由定義在這一層的謂詞決定,匹配過程是 從樹的根節(jié)點到葉子節(jié)點的搜索過程。從匹配的效率、索引的動態(tài)維護行及對數(shù)據(jù)分布的敏感性,上述匹配方法有不同 特性1)基于復數(shù)單維索引的方法,如Counting方法,對于具有良好的擴展性、動態(tài)維護 性,對數(shù)據(jù)分布不敏感,對于每一個事件的過濾,每一維對應一個屬性,每個屬性上預選結(jié) 果集合都是整個訂閱集,而不是其子集,計算量較大,實現(xiàn)較復雜;2)基于高維索引的方 法,如RTree索引,實現(xiàn)簡單,隨著每一步查找的深入,候選結(jié)果集都是在不斷減小的,其計 算量不像復數(shù)單維索引那樣是隨著維數(shù)的增長而線性增長,計算量較小,但高維空間索引 的維護代價高,當維數(shù)較高時,查詢操作需要掃描整個索引,動態(tài)維護性查,其性能對數(shù)據(jù) 分布敏感;3)基于決策樹的方法匹配速度快,但其動態(tài)維護性非常高,不具有可用性。綜上所述,在傳統(tǒng)的發(fā)布訂閱系統(tǒng)中,發(fā)布者是信息的制造者,訂閱者是消息的消 費者,在對稱發(fā)布訂閱系統(tǒng)中,消息的發(fā)布者也希望施加約束條件,從而達到對于信息的接 受者進行篩選或限制,基于高維索引的匹配方法雖然支持對稱發(fā)布訂閱的事件與訂閱的匹 配,但因為動態(tài)維護性差同時其性能對數(shù)據(jù)分布敏感,在可用性在實踐上有很大的局限性; 基于復數(shù)單維索引的方法不直接支持對稱發(fā)布訂閱的事件與訂閱的匹配,因為在傳統(tǒng)的方 法里,事件用點表示,事件對訂閱做點查詢,在對稱發(fā)布訂閱系統(tǒng)中,事件是帶有約束條件的,也就是事件要求對訂閱作范圍查詢時,傳統(tǒng)的基于復數(shù)單維索引的匹配方法不能適應 這種條件下的應用。

發(fā)明內(nèi)容
針對上述方法的不足,本發(fā)明提出一種基于復數(shù)單維索引的對稱發(fā)布訂閱系統(tǒng)匹 配方法。首先定義對稱發(fā)布訂閱系統(tǒng)的匹配模型如下在對稱發(fā)布訂閱系統(tǒng)中,發(fā)布者發(fā) 布的事件既包含事件自身的描述信息又包含對訂閱者的約束條件,每個屬性上的事件自身 的描述信息可以用與該屬性對應空間上的一段間隔來表示,其中用點表示的描述信息是開 始位置與結(jié)束位置相同的間隔,發(fā)布者對訂閱者的約束條件用一組謂詞來表示,每個屬性 上定義一個謂詞,每個謂詞也可以用與該屬性對應空間上的一段間隔來表示,其中等于謂 詞表示為開始位置與結(jié)束位置相同的間隔;訂閱者提交的訂閱中既包含訂閱者對發(fā)布者發(fā) 布的事件的匹配條件還包括訂閱者自身的描述信息,訂閱中用謂詞描述的匹配條件與自身 的描述信息都可以用定義在屬性上的間隔來表示,綜上、對稱發(fā)布訂閱系統(tǒng)中的事件與訂 閱都可以用一組間隔表示;根據(jù)上述模型,本發(fā)明給出事件與訂閱匹配的定義針對對稱發(fā)布訂閱系統(tǒng)中的 一個屬性,定義在該屬性上事件與訂閱被稱為子事件與子訂閱,如果與子事件與子訂閱對 應的間隔相交,那么子事件與子訂閱互相匹配;對于對稱發(fā)布訂閱系統(tǒng)中的所有屬性,如果 一個事件的所有子事件與一個訂閱的所有子訂閱匹配,則稱該事件與該訂閱匹配;本發(fā)明的技術方案是這樣實現(xiàn)的由于在對稱的發(fā)布訂閱系統(tǒng)中、事件與訂閱是 對稱的,用戶既是提供者又是消費者,訂閱與事件只有語義上的區(qū)別,在處理過程上訂閱與 事件是相同的,系統(tǒng)既要對訂閱建索引計數(shù)也要對事件建索引計數(shù),其索引的結(jié)構(gòu)、索引的 建立使用方法及計數(shù)方法完全相同,一種基于復數(shù)單維索引的對稱發(fā)布訂閱系統(tǒng)匹配方 法,包括以下步驟步驟1 系統(tǒng)接收用戶提交的數(shù)據(jù),所述數(shù)據(jù)包含用戶的要求與用戶自身的信息, 以數(shù)值形式表示用戶分為兩類,系統(tǒng)任選一類用戶提交的信息數(shù)據(jù)作為訂閱,則另一類用 戶提交的信息數(shù)據(jù)作為事件;當用戶提交的信息數(shù)據(jù)為事件時執(zhí)行步驟2,當用戶提交的 信息數(shù)據(jù)為訂閱時執(zhí)行步驟3 ;步驟2 查詢與事件匹配的訂閱并將事件插入事件索引;步驟2-1 查詢訂閱索引,方法為分解事件的每一個屬性,將之變成和屬性對應 的子事件的集合,對每一個子事件,查詢步驟3-3建立的訂閱索引,檢查與之匹配的子訂 閱,并對與匹配出的子訂閱對應的訂閱匹配計數(shù)器SCoimter進行計數(shù),以便將來比對訂閱 是否得到滿足時使用,假定到達的事件為[EX,EY],其中,EX、EY分別表式間隔的起點與終 點的數(shù)值,所對應的索引與計數(shù)操作方法如下用EY查詢所對應屬性的小于謂詞的索引查到第一個小于等于EY葉子節(jié)點后,利 用B+Tree葉子節(jié)點的有序鏈表,對索引的葉子鏈表進行掃描,掃描的方向是從大到小,對 每一個掃描到的謂詞對應的訂閱進行匹配計數(shù),計數(shù)值為1 ;用EX查詢所對應屬性的大于謂詞的索引查到第一個大于等于葉子節(jié)點后,利用 B+Tree葉子節(jié)點的有序鏈表,對索引的葉子鏈表進行掃描,掃描的方向是從小到大,對每一個掃描到的謂詞對應的訂閱進行匹配計數(shù),計數(shù)值為1 ;步驟2-2 輸出匹配的訂閱檢查步驟2-1所查到的每個訂閱相關聯(lián)的索引表的 情況,如果索引表內(nèi)的每個訂閱的預統(tǒng)計的計數(shù)值PCoimter與其匹配的訂閱匹配計數(shù)器 Scoimter相等,則此事件使該訂閱得到了滿足,系統(tǒng)將該訂閱輸出并提交給用戶;步驟2-3 將此事件插入事件索引分解事件的每一個屬性,將之變成和屬性對應 的子事件的集合,根據(jù)子事件對應的間隔的類型,將其插入對應的索引同時對該子事件計 數(shù),該事件的計數(shù)是每個子事件的計數(shù)值的和,即預統(tǒng)計計數(shù)PCoimter,每一屬性有兩個索 弓丨,一個用于索引與大于謂詞對應的間隔,另一個索引與小于謂詞對應的索引,索引的數(shù)據(jù) 結(jié)構(gòu)為 B+Tree ;假定該屬性的域值為[D0MAIN_MIN,D0MAIN_MAX], D0MAIN_MIN 與 D0MAIN_ MAX為該屬性的最小值與最大值,下文所用的SX與SY分別為間隔的起點值與終點值,對索 引的插入與對每個子訂閱的計數(shù)的具體操作方法如下(1)如果該屬性上沒定義謂詞,即間隔為[D0MAIN_MIN,D0MAIN_MAX]模式時,因為 任何事件都在區(qū)間范圍內(nèi),所以任何訂閱都會得到滿足,故而不需為其建立索引與計數(shù),該 子事件的計數(shù)值為O ;(2)當間隔為[SX,D0MAIN_MAX]模式時,它對應大于謂詞,將SX插入與大于謂詞 對應的索引,因為任意事件的右端都在最大值之內(nèi),該子事件的右端點不需計數(shù),其計數(shù)值 為1 ;(3)當間隔為[D0MAIN_MIN,SY]模式時,它對應小于謂詞,將SY插入與小于謂詞 對應的索引,因為任意事件的左端都在最小值之內(nèi),該子事件的左端點不需計數(shù),其計數(shù)值 為1 ;(4)當間隔為[SX,SY]模式時,不論SX與SY是否相等,可以將其分解成[SX, D0MAIN_MAX]和[D0MAIN_MIN,SY]的形式,由(2)和(3)可知,需要將SX插入大于謂詞索 引,將SY插入小于謂詞索引,該子事件的數(shù)值為2,當且僅當分解成的這兩個謂詞都得到滿 足的時候,[SX,SY]模式才會得到滿足;步驟2-4:轉(zhuǎn)到步驟1;步驟3 查詢與訂閱匹配的事件并將訂閱插入訂閱索引;步驟3-1 查詢事件索引分解訂閱的每一個屬性,將之變成和屬性對應的子訂閱 的集合;對每一個子訂閱,查詢步驟2-3建立的事件索引,檢查與之匹配的子事件,并對與 匹配出的子事件對應的事件匹配計數(shù)器SCoimter進行計數(shù),以便將來比對事件是否得到 滿足時使用,假定到達的事件為[EX,EY],所對應的索引與計數(shù)操作方法如下(1)用EY查詢所對應屬性的小于謂詞的索引,查到第一個小于等于EY葉子節(jié)點 后,利用B+Tree葉子節(jié)點的有序鏈表,對索引的葉子鏈表進行掃描,掃描的方向是從大到 小,對每一個掃描到的謂詞對應的事件進行匹配計數(shù),計數(shù)值為1 ;(2)用EX查詢所對應屬性的大于謂詞的索引,查到第一個大于等于葉子節(jié)點后, 利用B+Tree葉子節(jié)點的有序鏈表,對索引的葉子鏈表進行掃描,掃描的方向是從小到大, 對每一個掃描到的謂詞對應的訂閱進行事件計數(shù),計數(shù)值為1 ;步驟3-2 輸出匹配的事件,檢查步驟3-1所查到的每個訂閱相關聯(lián)的索引表的 情況,如果索引表內(nèi)的每個事件的預統(tǒng)計的計數(shù)值PCoimter與其匹配的事件匹配計數(shù)器 SCoimter相等,則此訂閱使該事件得到了滿足,系統(tǒng)將該事件輸出并提交給用戶;
步驟3-3 將訂閱插入訂閱索引,分解訂閱的每一個屬性,將之變成和屬性對應的 子訂閱的集合,根據(jù)子訂閱對應的間隔的類型,將其插入對應的索引同時對該子訂閱計數(shù), 該訂閱的計數(shù)是每個子訂閱的計數(shù)值的和,即預統(tǒng)計計數(shù)PCoimter,每一屬性有兩個索引, 一個用于索引與大于謂詞對應的間隔,另一個索引與小于謂詞對應的索引,索引的數(shù)據(jù)結(jié) 構(gòu)為B+Tree,假定該屬性的域值為[D0MAIN_MIN,D0MAIN_MAX],對索引的插入與對每個子 訂閱的計數(shù)的具體操作方法如下(1)如果該屬性上沒定義謂詞,即間隔為[D0MAIN_MIN,D0MAIN_MAX]模式時,因為 任何事件都在區(qū)間范圍內(nèi),所以任何事件都會得到滿足,故而不需為其建立索引與計數(shù),該 子訂閱的計數(shù)值為0 ;(2)當間隔為[SX,D0MAIN_MAX]模式時,它對應大于謂詞,將SX插入與大于謂詞 對應的索引,因為任意事件的右端都在最大值之內(nèi),該子訂閱的右端點不需計數(shù),其計數(shù)值 為1 ;(3)當間隔為[D0MAIN_MIN,SY]模式時,它對應小于謂詞,將SY插入與小于謂詞 對應的索引,因為任意事件的左端都在最小值之內(nèi),該子訂閱的左端點不需計數(shù),其計數(shù)值 為1 ;(4)當間隔為[SX,SY]模式時,不論SX與SY是否相等,可以將其分解成[SX, D0MAIN_MAX]和[D0MAIN_MIN, SY]的形式,由步驟3_3的(2)和(3)可知,需要將SX插入 大于謂詞索引,將SY插入小于謂詞索引,該子訂閱的數(shù)值為2,當且僅當分解成的這兩個謂 詞都得到滿足的時候,[SX,SY]模式才會得到滿足;步驟3-4:轉(zhuǎn)到步驟1。本發(fā)明的優(yōu)點本發(fā)明方法與傳統(tǒng)的Counting方法不同,1)在事件與訂閱匹配的 時候,本發(fā)明的查詢方式是范圍查詢而不是點查詢,點查詢可以被看做特殊的范圍查詢,因 此本發(fā)明既支持傳統(tǒng)的發(fā)布訂閱的匹配,又支持對稱的發(fā)布訂閱系統(tǒng)的匹配;2)在建立訂 閱謂詞索引時,本發(fā)明把相等的謂詞也存儲成B+樹的形式,把相等的謂詞看作兩個不等謂 詞的合取,相等謂詞被分解為大于與小于謂詞,在建索引時,分別向?qū)拇笥谥^詞索引樹 和小于謂詞索引樹插入這個結(jié)點,并把這兩個謂詞作為計數(shù)條件,這樣使系統(tǒng)的數(shù)據(jù)結(jié)構(gòu) 簡單,更易于實現(xiàn);3)本發(fā)明支持對稱的發(fā)布訂閱匹配,與基于高維的匹配方法相比,針對 不同的數(shù)據(jù)規(guī)模、謂詞比例、數(shù)據(jù)分布及選擇度;本發(fā)明的匹配性能與動態(tài)維護性能具有良 好穩(wěn)定性有良好的擴展性。


圖1為本發(fā)明一種基于復數(shù)單維索引的對稱發(fā)布訂閱系統(tǒng)匹配方法對稱發(fā)布訂 閱的示例框圖;圖2為本發(fā)明一種基于復數(shù)單維索引的對稱發(fā)布訂閱系統(tǒng)匹配方法謂詞與間隔 映射示意圖;圖3為本發(fā)明一種基于復數(shù)單維索引的對稱發(fā)布訂閱系統(tǒng)匹配方法子訂閱的匹 配示意圖;圖4為本發(fā)明一種基于復數(shù)單維索引的對稱發(fā)布訂閱系統(tǒng)匹配方法流程圖;圖5為本發(fā)明一種基于復數(shù)單維索引的對稱發(fā)布訂閱系統(tǒng)匹配方法所建立的訂閱索引及相應的預統(tǒng)計計數(shù)示意圖;圖6(1) 圖6(4),為本發(fā)明一種基于復數(shù)單維索引的對稱發(fā)布訂閱系統(tǒng)匹配方 法實施例建立的訂閱索引樹示意圖;圖7為本發(fā)明一種基于復數(shù)單維索引的對稱發(fā)布訂閱系統(tǒng)匹配方法謂詞與訂閱 的對應關系示意圖;圖8(0) 圖8(4)為本發(fā)明一種基于復數(shù)單維索引的對稱發(fā)布訂閱系統(tǒng)匹配方法 事件匹配訂閱示意圖;圖9為本發(fā)明一種基于復數(shù)單維索引的對稱發(fā)布訂閱系統(tǒng)匹配方法索引建立時 間比較示意圖;圖10為本發(fā)明一種基于復數(shù)單維索引的對稱發(fā)布訂閱系統(tǒng)匹配方法不同維數(shù)的 時間比較示意圖;圖11為本發(fā)明一種基于復數(shù)單維索引的對稱發(fā)布訂閱系統(tǒng)匹配方法等于謂詞不 同比例的時間示意圖。
具體實施例方式下面結(jié)合附圖和實施例對本發(fā)明進行進一步詳細說明。本發(fā)明的一個實施例,一個求人與求職系統(tǒng)中,這里所述的求人信息稱為事件,求 職信息稱為訂閱,本實施例采用下面的4個對稱發(fā)布訂閱數(shù)據(jù),其中每個數(shù)據(jù)有2個屬性, 數(shù)據(jù)第一個屬性為“工資”,取值范圍為
;數(shù)據(jù)第二屬性為“年齡”,取值范圍為 W,150],所述4個對稱發(fā)布訂閱數(shù)據(jù)的內(nèi)容如下訂閱1 :{工資=1000,20 <=年齡<=32}訂閱2 :{工資>=200,年齡<=60}訂閱3 {200 < =工資<=600,NULL}事件1 {800 < =工資<=1600,年齡=24}假定數(shù)據(jù)到達順序為訂閱1、訂閱2、訂閱3、事件1,如圖1所示,圖1中還顯示了 當事件ι提交后,系統(tǒng)給出匹配結(jié)果,其結(jié)果為訂閱1與訂閱2 ;圖2和圖3為本發(fā)明對稱發(fā)布訂閱系統(tǒng)的匹配模型原理示意圖,其中,圖2為謂詞 與間隔映射示例圖,其中,Sl =A <= X <= B,S2 =X <= B,S3 :X >= A, S4 =X = A,S1、S2、 S3與S4代表不同類型的謂詞,Min、MaX、A、B分別表示與謂詞對應屬性的最大值、最小值、間 隔的起點與終點;謂詞與間隔是一一對應相互轉(zhuǎn)換,Sl表示區(qū)間[A,B],S2表示[Min, B], S3 表示[A, Max],S4 表示[A, A];圖3為子訂閱的匹配示意圖,列出了事件與訂閱匹配即間隔覆蓋的所有可能性, 與訂閱S匹配的事件是E1、E2、E3與E6,不匹配的是E4與E5 ;本實施例一種基于復數(shù)單維索引的對稱發(fā)布訂閱系統(tǒng)匹配方法,流程圖如圖4所 示,“系統(tǒng)初始化”的主要功能是創(chuàng)建與初始化匹配中所用的索引以及保存計數(shù)器值的數(shù)據(jù) 結(jié)構(gòu),初始化后,索引內(nèi)容為空,計數(shù)器的值為0,總執(zhí)行過程包括以下步驟(1)當訂閱1輸入,基于復數(shù)單維索引的對稱發(fā)布訂閱系統(tǒng)匹配方法執(zhí)行步驟如 下步驟1 訂閱1輸入,執(zhí)行步驟3 ;
步驟2 查詢與事件匹配的訂閱并將事件插入事件索引;步驟3 查詢與訂閱匹配的事件并將訂閱插入訂閱索引;步驟3-1 查詢事件索引此時事件索引為空,無可查詢索引,執(zhí)行步驟3-2 ;步驟3-2 輸出匹配的事件,由于步驟3-1的事件索引為空,故無匹配事件輸出,執(zhí) 行步驟3-3 ;步驟3-3 插入訂閱索弓丨,方法為訂閱1 用間隔表示為訂閱 1 :{[1000,1000],[20,32]};對索引的插入與對每個子訂閱的計數(shù)采用方法(4),則訂閱1的謂詞表示可以等 價轉(zhuǎn)換為訂閱1 {P1 工資<=1000,P2 工資>=1000,P3 年齡>=20,P4 年齡< = 32},其預統(tǒng)計計數(shù)PCOunterl = 4 ;同時將1000及Pl插入屬性‘工資,的< =謂詞的B+Tree 索引,將1000及P2插入屬性‘工資,的> =謂詞的B+Tree索引,將20及P3插入屬性‘年 齡,的> =謂詞的B+Tree索引,將32及P4插入屬性‘年齡,的< =謂詞的B+Tree索引,執(zhí) 行步驟3-4 ;步驟3-4 轉(zhuǎn)入步驟1 ;(2)當訂閱2與訂閱3輸入時,所對應情況與訂閱1相同,主要是步驟3-3插入訂 閱索引過程有所不同訂閱2與訂閱3的間隔表示為訂閱2 {[200,10000],
}訂閱3 {[200,600],
}進一步根據(jù)步驟3-3中的⑵(3),訂閱2的謂詞表示可以等價轉(zhuǎn)換為訂閱2 :{P5 工資>=200,P6 年齡<=60},其預統(tǒng)計計數(shù)Pcounter2 = 2 ;同時 將200及P5插入屬性‘工資,的> =謂詞的B+Tree索引,將60及P6插入屬性‘年齡,< = 謂詞的B+Tree索引;根據(jù)步驟3-3中的⑴(4),訂閱3的謂詞表示可以等價轉(zhuǎn)換為訂閱3 :{P5 工資>=200,P7 工資<=600},其預統(tǒng)計計數(shù)Pcounter = 2 ;同時 將600及P7插入屬性‘工資,的< =謂詞的B+Tree索引;P5在上一步已經(jīng)被插入索引,在 謂詞與訂閱對應關系表中的P5中插入訂閱3 ;當訂閱1、訂閱2與訂閱3輸入后,系統(tǒng)所建立的訂閱索弓丨,訂閱及相應的預統(tǒng)計 計數(shù)Pcoimter及建立后的訂閱索引樹,如圖5,圖6,圖7所示,圖7還顯示了謂詞與訂閱的 對應關系,當事件輸入時查找匹配的訂閱,其中P1、P2、P3、P4、P5、P6及P7代表上述的子謂 詞;最后執(zhí)行步驟3-4 ;(3)用戶提交的信息數(shù)據(jù)為事件1時,基于復數(shù)單維索引的對稱發(fā)布訂閱系統(tǒng)匹 配方法,執(zhí)行步驟如下步驟1 當事件1輸入時,步驟1得到事件1的數(shù)據(jù),事件1的間隔表示為S4 = {[800,1600], [24,24]},輸入數(shù)據(jù)類型為事件,所以轉(zhuǎn)入步驟2 ;步驟2 查詢與事件匹配的訂閱并將事件插入事件索引步驟2-1 查詢訂閱索引此時,訂閱1、訂閱2及訂閱3已經(jīng)存在于訂閱索引中,檢查與之匹配的子訂閱,并對與匹配出的子訂閱對應的訂閱匹配計數(shù)器SCoimter進行計數(shù), 如圖8(0) 圖8(4)所示,其中,圖8(0)是計數(shù)器的初始狀態(tài),假定EX與EY代表間隔的起 占與錄占.對于屬性‘工資,,根據(jù)步驟2-1中的(1),EX = 800,EY = 1600,用EY = 1600查 詢屬性‘工資’的< =謂詞的B+Tree索引,查詢結(jié)果是P2、P5,根據(jù)圖7的謂詞與訂閱的對 應關系,訂閱1、訂閱2及訂閱3的匹配計數(shù)器各加1,結(jié)果如圖8(1)所示;根據(jù)步驟2-1中的(2),用EX = 800查詢屬性‘工資,的< =謂詞的B+Tree索 引,查詢結(jié)果是P1,根據(jù)圖7的謂詞與訂閱的對應關系,訂閱1的匹配計數(shù)器加1,結(jié)果如圖 8⑵所示;對于屬性‘年齡,,EX = 24,EY = 24,在查詢升序掃描‘年齡,的< =謂詞的B+Tree 時,結(jié)果為P4,P6,所以訂閱1,訂閱2的匹配計數(shù)器各加1,結(jié)果如圖8(3),在查詢掃描‘年 齡’的> =謂詞的B+Tree索引時,結(jié)果為P3,訂閱1的匹配計數(shù)器增1,執(zhí)行完步驟2_2后 計數(shù)狀態(tài)入圖8(4)所示,執(zhí)行步驟2-2 ;步驟2-2 輸出匹配的訂閱,因為訂閱1與訂閱2的預統(tǒng)計數(shù)器與匹配計數(shù)器的值 相等,所以訂閱1與訂閱2是事件1的匹配結(jié)果,系統(tǒng)輸出訂閱1與訂閱2,如圖1中求職匹 配結(jié)果所示,執(zhí)行步驟2-3;步驟2-3 將此事件插入事件索引,其過程與上述(1) (2)步驟3-3建立訂閱索引 的過程相似,再此不再贅述。本實施例的時空間復雜度所有的訂閱都被分級成子訂閱保存在索引里,索引的 數(shù)據(jù)結(jié)構(gòu)為B+Tree,所以本實施例的空間復雜度為0(n),在匹配過程中,需要掃描索引每 一個屬性的大于謂詞的B+Tree與小于謂詞的B+Tree的葉子鏈表,因此本實施例的匹配時 間復雜度為0 (n),索引的插入與刪除代價是0 (log (n))。硬件平臺為HP DX2708MT/CPU Intel Core 263001. 86GHz、內(nèi)存 2GB、硬盤 80GB 7200rpm ;在Debian GNU linux 4. 0的系統(tǒng)上進行了模擬實驗,所有程序用C++實現(xiàn);實驗 的結(jié)果如圖9-11所示圖9、圖10與圖11分別顯示維數(shù)對匹配性能的影響、數(shù)據(jù)分布對配匹性能的影響 及索引性能的插入時間變化,在比對實驗中,數(shù)據(jù)分布Zipf與Uniform有兩種,多維索引為 UB-Tree與R*tree,Counting代表本發(fā)明,UB-Tree與R*tree代表多維索引,從圖9可以看 出在訂閱索引建立時,與R*Tree相比,UB-tree與本發(fā)明具有很好的動態(tài)維護性能,發(fā)布訂 閱系統(tǒng)的數(shù)據(jù)是動態(tài)的插入與刪除的,系統(tǒng)必須要有良好的動態(tài)維護性能;從圖10與圖11 可以看出,與UB-tree相比,本發(fā)明的匹配性能隨著維數(shù)的變化線性增長,對不同的數(shù)據(jù)分 布具有穩(wěn)定性。
權利要求
1.一種基于復數(shù)單維索引的對稱發(fā)布訂閱系統(tǒng)匹配方法,其特征在于包括以下步驟步驟1 系統(tǒng)接收用戶提交的數(shù)據(jù),所述數(shù)據(jù)包含用戶的要求與用戶自身的信息,以數(shù) 值形式表示用戶分為兩類,系統(tǒng)任選一類用戶提交的信息數(shù)據(jù)作為訂閱,則另一類用戶提 交的信息數(shù)據(jù)作為事件;當用戶提交的信息數(shù)據(jù)為事件時執(zhí)行步驟2,當用戶提交的信息 數(shù)據(jù)為訂閱時執(zhí)行步驟3;步驟2 查詢與事件匹配的訂閱并將事件插入事件索引,執(zhí)行步驟1 ;步驟3 查詢與訂閱匹配的事件并將訂閱插入訂閱索引,執(zhí)行步驟1。
2.根據(jù)權利要求1所述的一種基于復數(shù)單維索引的對稱發(fā)布訂閱系統(tǒng)匹配方法,其特 征在于步驟2所述的查詢與事件匹配的訂閱并將事件插入事件索引,包括以下步驟步驟2-1 查詢訂閱索引,方法為分解事件的每一個屬性,將之變成和屬性對應的子 事件的集合,對每一個子事件,查詢步驟3-3建立的訂閱索引,檢查與之匹配的子訂閱,并 對與匹配出的子訂閱對應的訂閱匹配計數(shù)器SCoimter進行計數(shù),以便將來比對訂閱是否 得到滿足時使用,假定到達的事件為[EX,EY],其中,EX、EY分別表示間隔的起點與終點的 數(shù)值,所對應的索引與計數(shù)操作方法如下(1)用EY查詢所對應屬性的小于謂詞的索引查到第一個小于等于EY葉子節(jié)點后,利 用B+Tree葉子節(jié)點的有序鏈表,對索引的葉子鏈表進行掃描,掃描的方向是從大到小,對 每一個掃描到的謂詞對應的訂閱進行匹配計數(shù),計數(shù)值為1 ;(2)用EX查詢所對應屬性的大于謂詞的索引查到第一個大于等于葉子節(jié)點后,利用 B+Tree葉子節(jié)點的有序鏈表,對索引的葉子鏈表進行掃描,掃描的方向是從小到大,對每一 個掃描到的謂詞對應的訂閱進行匹配計數(shù),計數(shù)值為1 ;步驟2-2 輸出匹配的訂閱檢查步驟2-1所查到的每個訂閱相關聯(lián)的索引表的情 況,如果索引表內(nèi)的每個訂閱的預統(tǒng)計的計數(shù)值PCoimter與其匹配的訂閱匹配計數(shù)器 Scoimter相等,則此事件使該訂閱得到了滿足,系統(tǒng)將該訂閱輸出并提交給用戶;步驟2-3 將此事件插入事件索引分解事件的每一個屬性,將之變成和屬性對應的子 事件的集合,根據(jù)子事件對應的間隔的類型,將其插入對應的索引同時對該子事件計數(shù),該 事件的計數(shù)是每個子事件的計數(shù)值的和,即預統(tǒng)計計數(shù)PCoimter,每一屬性有兩個索引,一 個用于索引與大于謂詞對應的間隔,另一個索引與小于謂詞對應的索引,索引的數(shù)據(jù)結(jié)構(gòu) 為 B+Tree ;假定該屬性的域值為[DOMAIN_MIN,DOMAIN_MAX],DOMAIN_MIN 與 DOMAIN_MAX 為 該屬性的最小值與最大值,下文所用的SX與SY分別為間隔的起點值與終點值,對索引的插 入與對每個子訂閱的計數(shù)的具體操作方法如下(1)如果該屬性上沒定義謂詞,即間隔為[DOMAIN_MIN,DOMAIN_MAX]模式時,因為任何 事件都在區(qū)間范圍內(nèi),所以任何訂閱都會得到滿足,故而不需為其建立索引與計數(shù),該子事 件的計數(shù)值為O ;(2)當間隔為[SX,DOMAIN_MAX]模式時,它對應大于謂詞,將SX插入與大于謂詞對應的 索引,因為任意事件的右端都在最大值之內(nèi),該子事件的右端點不需計數(shù),其計數(shù)值為1 ;(3)當間隔為[DOMAIN_MIN,SY]模式時,它對應小于謂詞,將SY插入與小于謂詞對應的 索引,因為任意事件的左端都在最小值之內(nèi),該子事件的左端點不需計數(shù),其計數(shù)值為1 ;(4)當間隔為[SX,SY]模式時,不論SX與SY是否相等,可以將其分解成[SX,D0MAIN_MAX]和[D0MAIN_MIN,SY]的形式,由⑵和(3)可知,需要將SX插入大于謂詞索引,將SY 插入小于謂詞索引,該子事件的數(shù)值為2,當且僅當分解成的這兩個謂詞都得到滿足的時 候,[SX,SY]模式才會得到滿足。
3.根據(jù)權利要求1所述的一種基于復數(shù)單維索引的對稱發(fā)布訂閱系統(tǒng)匹配方法,其特 征在于步驟3所述的查詢與訂閱匹配的事件并將訂閱插入訂閱索引,包括以下步驟步驟3-1 查詢事件索引分解訂閱的每一個屬性,將之變成和屬性對應的子訂閱的集 合;對每一個子訂閱,查詢步驟2-3建立的事件索引,檢查與之匹配的子事件,并對與匹配 出的子事件對應的事件匹配計數(shù)器SCoimter進行計數(shù),以便將來比對事件是否得到滿足 時使用,假定到達的事件為[EX,EY],所對應的索引與計數(shù)操作方法如下(1)用EY查詢所對應屬性的小于謂詞的索引,查到第一個小于等于EY葉子節(jié)點后,利 用B+Tree葉子節(jié)點的有序鏈表,對索引的葉子鏈表進行掃描,掃描的方向是從大到小,對 每一個掃描到的謂詞對應的事件進行匹配計數(shù),計數(shù)值為1 ;(2)用EX查詢所對應屬性的大于謂詞的索引,查到第一個大于等于葉子節(jié)點后,利用 B+Tree葉子節(jié)點的有序鏈表,對索引的葉子鏈表進行掃描,掃描的方向是從小到大,對每一 個掃描到的謂詞對應的訂閱進行事件計數(shù),計數(shù)值為1 ;步驟3-2:輸出匹配的事件,檢查步驟3-1所查到的每個訂閱相關聯(lián)的索引表的情 況,如果索引表內(nèi)的每個事件的預統(tǒng)計的計數(shù)值PCoimter與其匹配的事件匹配計數(shù)器 SCounter相等,則此訂閱使該事件得到了滿足,系統(tǒng)將該事件輸出并提交給用戶;步驟3-3 將訂閱插入訂閱索引,分解訂閱的每一個屬性,將之變成和屬性對應的子訂 閱的集合,根據(jù)子訂閱對應的間隔的類型,將其插入對應的索引同時對該子訂閱計數(shù),該訂 閱的計數(shù)是每個子訂閱的計數(shù)值的和,即預統(tǒng)計計數(shù)PCoimter,每一屬性有兩個索引,一個 用于索引與大于謂詞對應的間隔,另一個索引與小于謂詞對應的索弓丨,索引的數(shù)據(jù)結(jié)構(gòu)為 B+Tree,假定該屬性的域值為[DOMAIN_MIN,DOMAIN_MAX],對索引的插入與對每個子訂閱的 計數(shù)的具體操作方法如下(1)如果該屬性上沒定義謂詞,即間隔為[DOMAIN_MIN,DOMAIN_MAX]模式時,該子訂閱 的計數(shù)值為O ;(2)當間隔為[SX,DOMAIN_MAX]模式時,它對應大于謂詞,將SX插入與大于謂詞對應 的索引,其計數(shù)值為1;(3)當間隔為[DOMAIN_MIN,SY]模式時,它對應小于謂詞,將SY插入與小于謂詞對應 的索引,其計數(shù)值為1;(4)當間隔為[SX,SY]模式時,不論SX與SY是否相等,可以將其分解成[SX,D0MAIN_ MAX]和[DOMAIN_MIN,SY]的形式,由步驟3_3的(2)和(3)可知,需要將SX插入大于謂詞 索引,將SY插入小于謂詞索引,該子訂閱的數(shù)值為2,當且僅當分解成的這兩個謂詞都得到 滿足的時候,[SX,SY]模式才會得到滿足。
全文摘要
一種基于復數(shù)單維索引的對稱發(fā)布訂閱系統(tǒng)匹配方法,屬于數(shù)據(jù)庫領域,方法如下系統(tǒng)接收用戶提交的數(shù)據(jù);查詢與事件匹配的訂閱并將事件插入事件索引;查詢與訂閱匹配的事件并將訂閱插入訂閱索引;本發(fā)明方法1)在事件與訂閱匹配的時候,本發(fā)明的查詢方式是范圍查詢而不是點查詢;2)在建立訂閱謂詞索引時,本發(fā)明把相等的謂詞也存儲成B+樹的形式,把相等的謂詞看作兩個不等謂詞的合取,相等謂詞被分解為大于與小于謂詞,在建索引時,分別向?qū)拇笥谥^詞索引樹和小于謂詞索引樹插入這個結(jié)點,并把這兩個謂詞作為計數(shù)條件,這樣使系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)簡單,更易于實現(xiàn);本發(fā)明的匹配性能與動態(tài)維護性能具有良好穩(wěn)定性有良好的擴展性。
文檔編號G06F17/30GK102004798SQ201010606649
公開日2011年4月6日 申請日期2010年12月27日 優(yōu)先權日2010年12月27日
發(fā)明者信俊昌, 王斌, 王波濤, 王超 申請人:東北大學
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1