一種基于歷史經(jīng)驗(yàn)的謂詞索引匹配方法
【專利摘要】一種基于歷史經(jīng)驗(yàn)的謂詞索引匹配方法,接收到新的訂閱條件后,分配唯一ID,并保存在訂閱條件ID表對應(yīng)位置;將訂閱條件謂詞數(shù)目保存在謂詞數(shù)目表的對應(yīng)位置,對于訂閱條件的每個謂詞,存入謂詞表,將該謂詞與歷史經(jīng)驗(yàn)表中的事件謂詞進(jìn)行匹配,若匹配成功,將訂閱條件的ID存入歷史經(jīng)驗(yàn)表中匹配成功的事件謂詞對應(yīng)的ID列表;接收到新的事件后,遍歷事件中的謂詞,進(jìn)行處理;根據(jù)事件謂詞的屬性遍歷匹配謂詞表中與該屬性對應(yīng)行的所有謂詞;所有謂詞匹配結(jié)束后,遍歷比較謂詞數(shù)目表與匹配謂詞數(shù)目表上對應(yīng)的數(shù)值,若相等,則與此位置代表的訂閱條件匹配。本發(fā)明利用歷史匹配結(jié)果以加快匹配速度,擁有空間效率高、可擴(kuò)展性強(qiáng)和可維護(hù)性好的優(yōu)勢,能夠較好地提高大規(guī)模分布交互式仿真系統(tǒng)中數(shù)據(jù)分發(fā)的效率。
【專利說明】一種基于歷史經(jīng)驗(yàn)的謂詞索引匹配方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于分布交互式仿真【技術(shù)領(lǐng)域】,具體涉及一種基于歷史經(jīng)驗(yàn)的謂詞索引匹配算法。
【背景技術(shù)】
[0002]在分布交互式仿真系統(tǒng)中,地處不同位置上的各種仿真實(shí)體通過網(wǎng)絡(luò)相連,相互協(xié)作以完成某項(xiàng)仿真任務(wù)。而在大規(guī)模的分布交互式仿真系統(tǒng)中,參與仿真的節(jié)點(diǎn)數(shù)量以千百計(jì),每個節(jié)點(diǎn)模擬實(shí)現(xiàn)現(xiàn)實(shí)世界中多個實(shí)體的狀態(tài)和行為,這些仿真節(jié)點(diǎn)共處于一個龐大的虛擬環(huán)境中每時每刻都在產(chǎn)生大量的仿真數(shù)據(jù),如何將這些仿真數(shù)據(jù)以高效的方式分發(fā)給各個仿真節(jié)點(diǎn)是關(guān)系到系統(tǒng)能否高效運(yùn)行的關(guān)鍵問題。
[0003]對于傳統(tǒng)的數(shù)據(jù)分發(fā)方式:單播方式(一對一)、廣播方式(一對全部),應(yīng)用到大規(guī)模仿真數(shù)據(jù)分發(fā)時,都存在一定的問題。單播方式下,節(jié)點(diǎn)向指定的節(jié)點(diǎn)發(fā)送仿真數(shù)據(jù),接收來自其他節(jié)點(diǎn)的仿真數(shù)據(jù)。隨著客戶端數(shù)量的增加,節(jié)點(diǎn)間一對一的數(shù)據(jù)交互將極大地增加網(wǎng)絡(luò)負(fù)載和系統(tǒng)耦合性。廣播方式下,節(jié)點(diǎn)將每一份仿真數(shù)據(jù)都發(fā)送給系統(tǒng)中的所有節(jié)點(diǎn),而實(shí)際上很多節(jié)點(diǎn)并不需要該數(shù)據(jù),給網(wǎng)絡(luò)帶寬造成很大的浪費(fèi),也增加了節(jié)點(diǎn)的處理負(fù)擔(dān)。
[0004]相比而言,發(fā)布/訂閱方式更能滿足大規(guī)模分布式仿真系統(tǒng)對于數(shù)據(jù)分發(fā)效率的要求。在發(fā)布/訂閱系統(tǒng)中,節(jié)點(diǎn)作為訂閱者向其他節(jié)點(diǎn)發(fā)送訂閱條件,表達(dá)自己對數(shù)據(jù)的個性化需求,當(dāng)有節(jié)點(diǎn)生成仿真數(shù)據(jù)(即事件)后,會將數(shù)據(jù)與訂閱條件進(jìn)行匹配,將數(shù)據(jù)分發(fā)給真正需要的節(jié)點(diǎn)。發(fā)布/訂閱方式具有更好的靈活性,實(shí)現(xiàn)了發(fā)送者與接收者的解耦,增強(qiáng)了系統(tǒng)的可擴(kuò)展性,也減少了網(wǎng)絡(luò)冗余數(shù)據(jù),進(jìn)而提高了數(shù)據(jù)傳輸效率,因而在大規(guī)模數(shù)據(jù)分發(fā)中得到廣泛應(yīng)用。
[0005]發(fā)布/訂閱系統(tǒng)是一類中間件系統(tǒng),系統(tǒng)中的各方之間通過發(fā)布/訂閱方式實(shí)現(xiàn)交互。
[0006]在這一系統(tǒng)中,信息的需求方稱為訂閱者,信息的生產(chǎn)方稱為發(fā)布者。訂閱者將其需求的信息發(fā)送給中間件,發(fā)布者將其生產(chǎn)的信息發(fā)送給中間件,由中間件進(jìn)行信息間的匹配,并將發(fā)布者生產(chǎn)的信息準(zhǔn)確、及時地發(fā)送給對該信息感興趣的訂閱者。
[0007]在發(fā)布/訂閱系統(tǒng)中,發(fā)布者發(fā)布的信息稱為事件,每個事件由一個或多個事件謂詞組成;訂閱者發(fā)布的需求信息稱為訂閱條件,每個訂閱條件由一個或多個訂閱條件謂詞組成。謂詞可以分為事件謂詞和訂閱條件謂詞,事件謂詞即〈屬性,類型,值〉三元組,訂閱條件謂詞即〈屬性,類型,操作符,值〉四元組。事件謂詞之所以沒有操作符這一元素,是因?yàn)槭录^詞默認(rèn)操作符為“=”(等于)。屬性根據(jù)發(fā)布/訂閱系統(tǒng)應(yīng)用背景的不同可有不同的定義,如在一個股票系統(tǒng)中,屬性可以是股票的名稱、股票的價(jià)格、股票的交易量等。類型可以是枚舉類型、布爾類型、整數(shù)類型、浮點(diǎn)類型、字符類型等。操作符包括了“ = ”(等于)、“!=”(不等于)、“>”(大于)、“〈”(小于)等。
[0008]在采用發(fā)布/訂閱方式的大規(guī)模分布式仿真系統(tǒng)中,能否高效地進(jìn)行數(shù)據(jù)分發(fā)是影響系統(tǒng)運(yùn)行和管理乃至最終仿真目標(biāo)能否實(shí)現(xiàn)的關(guān)鍵問題之一。特別是在“大數(shù)據(jù)”仿真的情況下,面對海量的信息資源,數(shù)據(jù)互操作過程卻難以準(zhǔn)確獲取所需的信息,存在著信息規(guī)模巨大和用戶難以有效獲取之間的矛盾。匹配算法,是解決數(shù)據(jù)匹配問題的關(guān)鍵,它負(fù)責(zé)快速、準(zhǔn)確地找到與給定事件相匹配的全部訂閱條件。
[0009]目前現(xiàn)有主流的匹配方法,根據(jù)數(shù)據(jù)結(jié)構(gòu)劃分,大致可以分為三類,一類是以搜索樹、并行搜索樹為代表的樹結(jié)構(gòu)匹配諒法;另一類是以暴力方法、謂詞索引為代表的表結(jié)構(gòu)匹配方法;還有一類是以二叉判定圖為代表的圖結(jié)構(gòu)匹配方法。接下來對這幾類算法進(jìn)行詳細(xì)介紹:
[0010](I)基于樹結(jié)構(gòu)的匹配方法
[0011]基于樹結(jié)構(gòu)的匹配方法將訂閱條件組織成樹形結(jié)構(gòu),樹形結(jié)構(gòu)的每一個非葉子節(jié)點(diǎn)代表了對訂閱條件謂詞的判斷,從根節(jié)點(diǎn)到葉子節(jié)點(diǎn)的一條路徑代表了一個或多個訂閱條件。具有代表性的樹形結(jié)構(gòu)匹配算法有搜索樹匹配算法和并行搜索樹匹配算法。
[0012]搜索樹匹配方法由Gough提出,該算法中,各訂閱條件被組織成樹形結(jié)構(gòu),該樹的深度為系統(tǒng)中所有訂閱條件包含的屬性的總數(shù)。當(dāng)一個事件到達(dá)時,系統(tǒng)遍歷從根節(jié)點(diǎn)到達(dá)葉子節(jié)點(diǎn)的各條路徑,就得出了與該事件相匹配的全部訂閱條件。搜索樹算法的特點(diǎn)是對各個訂閱條件同屬性謂詞之間的覆蓋關(guān)系不斷地進(jìn)行拆分,直到各條路徑的謂詞間不再有覆蓋關(guān)系,這種操作使得一個訂閱條件可能與多條從根節(jié)點(diǎn)到葉子節(jié)點(diǎn)的路徑相關(guān)聯(lián),一條路徑也可能包含了多個訂閱條件。事件匹配時,只需遵循一條路徑即能找到所有與之匹配的訂閱條件。該算法擁有較低的時間復(fù)雜度,匹配效率很高,但是其空間復(fù)雜度為指數(shù)級。此外,訂閱條件的維護(hù)成本高也是該算法的一大問題,每當(dāng)訂閱條件被增加或取消時,由于該訂閱可能被包含于多條根節(jié)點(diǎn)到葉子節(jié)點(diǎn)的路徑中,使得對搜索樹進(jìn)行修改難度極大,而只能重建搜索樹。因此,搜索樹算法并不適用于擁有大量數(shù)據(jù)或數(shù)據(jù)更新頻繁的系統(tǒng)。
[0013]并行搜索樹方法由Aguilera提出,該算法是在搜索樹算法基礎(chǔ)上的改進(jìn),它與搜索樹算法的區(qū)別在于其不再對同屬性謂詞的覆蓋關(guān)系進(jìn)行拆分,每條從根節(jié)點(diǎn)到達(dá)葉子節(jié)點(diǎn)的路徑均只代表了一個訂閱條件,一個事件到達(dá)時,系統(tǒng)遵循一條路徑找到某個匹配的訂閱條件后,還需回溯去匹配其它路徑。由于需要進(jìn)行回溯匹配,所以該算法在匹配效率上要低于搜索樹算法,但該算法的空間復(fù)雜度與訂閱數(shù)量呈線性關(guān)系,而且通過對并行搜索樹進(jìn)行局部修改即可以完成增加或取消訂閱條件的操作,即該算法擁有較低的訂閱維護(hù)成本。
[0014](2)基于表結(jié)構(gòu)的匹配方法
[0015]基于表結(jié)構(gòu)的匹配方法將訂閱條件組織成表的形式,其既可以將整個訂閱條件直接存儲進(jìn)表里,也可以將訂閱條件拆分成一個個謂詞后再存儲進(jìn)表里。具有代表性的表結(jié)構(gòu)匹配算法有暴力方法和謂詞索引方法。
[0016]暴力方法是最基本的表結(jié)構(gòu)匹配方法,其將所有的訂閱條件存進(jìn)一個列表中,每當(dāng)出現(xiàn)一個事件時,則順序遍歷存儲訂閱條件的列表,找出所有匹配的訂閱條件。顯然,該算法實(shí)現(xiàn)起來較容易,但匹配的時間效率很低。
[0017]謂詞索引方法的原理是將所有訂閱條件的謂詞存進(jìn)謂詞表中,每一個訂閱條件以一個唯一的ID標(biāo)識,同屬性的謂詞相鄰存儲,重復(fù)的謂詞只存一次。匹配時順序取出事件的謂詞到謂詞表里進(jìn)行匹配,如果謂詞表中的某個謂詞匹配成功,則對包含該謂詞的所有訂閱條件的計(jì)數(shù)器加1,當(dāng)事件的所有謂詞均匹配結(jié)束之后,查詢訂閱條件的計(jì)數(shù)器,判斷訂閱條件包含的謂詞個數(shù)是否與其計(jì)數(shù)器的值相等,如果相等,則說明該訂閱條件匹配成功,否則不匹配。
[0018](3)基于圖結(jié)構(gòu)的匹配方法
[0019]基于圖結(jié)構(gòu)的匹配方法將訂閱條件組織成圖的形式,具有代表性的圖結(jié)構(gòu)匹配方法是二叉判定圖匹配方法。
[0020]二叉判定圖(binary decis1n diagram)匹配算法由Campailla等人提出,訂閱條件中的每個謂詞由一個布爾變量表不,一張二叉判定圖表不一個訂閱條件。對于含有相同謂詞的訂閱條件,則可將這些訂閱條件對應(yīng)的二叉判定圖進(jìn)行整合,從而形成共享的二叉判定圖,節(jié)點(diǎn)的數(shù)量即為各訂閱條件的全部謂詞數(shù)量。當(dāng)一個事件到達(dá)時,先求出二叉判定圖中各節(jié)點(diǎn)的值(為I或?yàn)镺),然后再通過遍歷二叉判定圖,以得到匹配成功的所有訂閱條件。
[0021]樹結(jié)構(gòu)匹配方法的共性是匹配效率高,但空間復(fù)雜度大,不適用于大規(guī)模系統(tǒng)。比如說,一個系統(tǒng)中總共有100種屬性,而每個訂閱條件只由其中的幾種屬性組成,若用樹結(jié)構(gòu)來存儲訂閱條件,則每條從根節(jié)點(diǎn)到葉子節(jié)點(diǎn)的路徑都將會有大量的空節(jié)點(diǎn),極為浪費(fèi)空間。
[0022]表結(jié)構(gòu)匹配方法的共性是節(jié)省了空間,特別是謂詞索引算法避免了重復(fù)謂詞的冗余存儲,空間復(fù)雜度更低。同時,這兩種算法的維護(hù)成本較低,適用于大規(guī)模系統(tǒng),而它們的缺點(diǎn)在于匹配效率比不上樹形方法。
[0023]圖結(jié)構(gòu)匹配方法的優(yōu)點(diǎn)在于它不僅可以支持謂詞間的“與”操作,還可以支持謂詞間的“或”操作,而其它的匹配算法基本上都無法支持存在“或”操作的訂閱條件,只能將其轉(zhuǎn)化成多個只包含“與”操作的訂閱條件。圖結(jié)構(gòu)匹配方法的缺點(diǎn)在于相對復(fù)雜的數(shù)據(jù)結(jié)構(gòu)構(gòu)建過程,以及相對較大的對圖遍歷開銷。
[0024]在大規(guī)模分布式仿真系統(tǒng)中,通常存在大量的訂閱條件,且訂閱條件之間屬性個數(shù)跨度較大,時常會有訂閱條件被取消或有新的訂閱條件加入。由于樹結(jié)構(gòu)匹配方法和圖結(jié)構(gòu)匹配方法在空間效率、可擴(kuò)展性以及可維護(hù)性上的不足,無法適應(yīng)大規(guī)模分布式仿真系統(tǒng)的數(shù)據(jù)特點(diǎn)。
【發(fā)明內(nèi)容】
[0025]本發(fā)明技術(shù)解決問題:克服現(xiàn)有技術(shù)的不足,提供一種基于歷史經(jīng)驗(yàn)的謂詞索引匹配方法,擁有空間效率高、可擴(kuò)展性強(qiáng)和可維護(hù)性好的優(yōu)勢,能夠較好地適用于大規(guī)模仿真數(shù)據(jù)分發(fā)。
[0026]本發(fā)明技術(shù)解決方案:由于大規(guī)模分布式仿真系統(tǒng)中存在事件頻繁更新的情況,這些頻繁更新的事件之間往往存在著大量重復(fù)的信息,從構(gòu)建謂詞索引的角度來看則是存在大量重復(fù)的謂詞,而利用歷史匹配信息可避免對這些重復(fù)謂詞的二次匹配,從而提高數(shù)據(jù)匹配效率?;谝陨显颍景l(fā)明提出了基于歷史經(jīng)驗(yàn)的謂詞索引匹配算法(PredicateIndex Matching Algorithm Based on History Experience, PI HE)。
[0027]基于歷史經(jīng)驗(yàn)的謂詞索引匹配算法(PIHE算法),包括以下步驟:[0028](I)建立訂閱條件ID表,所述訂閱條件ID表用于順序存放訂閱條件的ID號;
[0029]建立謂詞數(shù)目表,所述謂詞數(shù)目表用于順序存放每個訂閱條件所包含的謂詞數(shù)目;建立謂詞表,所述謂詞表用于存放訂閱條件的謂詞,同時也存放包含該謂詞的訂閱條件ID,由于可能有多個訂閱條件包含同一個謂詞,用ID列表來存放這些訂閱條件的ID號,謂詞表中的每一行對應(yīng)同一屬性的謂詞;建立歷史經(jīng)驗(yàn)表,所述歷史經(jīng)驗(yàn)表用于存放匹配過的事件謂詞,以及與該謂詞匹配成功的訂閱條件的ID,同樣也由一個ID列表來存儲訂閱條件的ID號,表中,每一行對應(yīng)一種屬性;建立匹配謂詞數(shù)目表,所述匹配謂詞數(shù)目表用于存放每個訂閱條件匹配成功的謂詞數(shù)目,存放的位置與該訂閱條件在訂閱條件ID表中的位置一致;
[0030](2)接收到新的訂閱條件后,為其分配唯一 ID,并將該ID保存在訂閱條件ID表對應(yīng)位置;將訂閱條件謂詞數(shù)目保存在謂詞數(shù)目表的對應(yīng)位置,對于訂閱條件的每個謂詞,首先將其存入謂詞表,再將該謂詞與歷史經(jīng)驗(yàn)表中的事件謂詞進(jìn)行匹配,若匹配成功,將訂閱條件的ID存入歷史經(jīng)驗(yàn)表中匹配成功的事件謂詞對應(yīng)的ID列表;
[0031](3)接收到新的事件后,清空匹配謂詞數(shù)目表,遍歷事件中的謂詞,進(jìn)行如下處理:查詢歷史經(jīng)驗(yàn)表,若該謂詞存在,說明該謂詞已進(jìn)行過匹配,只需根據(jù)該謂詞對應(yīng)的ID列表,在匹配謂詞數(shù)目表的相應(yīng)位置加1,匹配結(jié)束,若該謂詞不存在,則將該謂詞插入歷史經(jīng)驗(yàn)表中,到謂詞表中進(jìn)行匹配;
[0032](4)根據(jù)事件謂詞的屬 性找到謂詞表中對應(yīng)的行,遍歷匹配該行的所有謂詞:若匹配成功,根據(jù)該謂詞對應(yīng)的ID列表,在匹配謂詞數(shù)目表的相應(yīng)位置加1,同時,將這些ID保存在歷史經(jīng)驗(yàn)表中該謂詞對應(yīng)的ID列表;
[0033](5)所有謂詞匹配結(jié)束后,遍歷比較謂詞數(shù)目表與匹配謂詞數(shù)目表上對應(yīng)的數(shù)值,若相等,則表明事件與此位置代表的訂閱條件匹配。
[0034]大規(guī)模仿真數(shù)據(jù)分發(fā)中,有些事件中存在某些謂詞,其屬性值一直在變,很少出現(xiàn)重復(fù)。這種謂詞在歷史經(jīng)驗(yàn)表中很難找到重復(fù)值,這種謂詞在歷史經(jīng)驗(yàn)表中很難找到重復(fù)值,到歷史經(jīng)驗(yàn)表中匹配結(jié)束后往往要到謂詞表中繼續(xù)進(jìn)行匹配,既大量占用了歷史經(jīng)驗(yàn)表中的空間,又耗費(fèi)了很多匹配的時間。為此,添加以下處理:
[0035]在歷史經(jīng)驗(yàn)表設(shè)立一個比例參數(shù)R:
n A
[0036]R=—
B
[0037]式中,A為歷次在歷史經(jīng)驗(yàn)表中匹配某屬性謂詞找到重復(fù)值的次數(shù),B為歷史經(jīng)驗(yàn)。
[0038]表中某屬性對應(yīng)的謂詞數(shù)。
[0039]在歷史經(jīng)驗(yàn)表中的匹配過程有兩種結(jié)果:找到重復(fù)值、找不到重復(fù)值而插入。若R小于等于5%,表示該屬性對應(yīng)的謂詞很少出現(xiàn)重復(fù)。當(dāng)發(fā)現(xiàn)歷史經(jīng)驗(yàn)表中某屬性對應(yīng)R值小于等于5%時,算法將不再匹配該行謂詞,而是直接轉(zhuǎn)移到謂詞表中進(jìn)行匹配,以節(jié)省時間,也不再將該事件謂詞插入歷史經(jīng)驗(yàn)表,以節(jié)省空間。
[0040]R初始可設(shè)為1,并且在某屬性對應(yīng)的謂詞達(dá)到了一定的數(shù)量之后才開始計(jì)算R值,以避免分母數(shù)值過小時計(jì)算R值波動性過大。
[0041]對于R值下限的取值,應(yīng)根據(jù)不同的應(yīng)用背景進(jìn)行調(diào)整,可利用重復(fù)試驗(yàn)找出一個合適值,例如建立一組樣本事件和樣本訂閱條件,記錄其在不同R值下的匹配時間,找出最小匹配時間對應(yīng)的R值。
[0042]本發(fā)明的優(yōu)點(diǎn)和積極效果:
[0043](I)本發(fā)明利用了歷史的匹配結(jié)果,重復(fù)出現(xiàn)的事件謂詞無需進(jìn)行二次匹配,可直接從歷史經(jīng)驗(yàn)表中取出匹配結(jié)果,有效縮短了匹配時間;
[0044](2)利用謂詞索引算法,較好地適應(yīng)了分布式仿真系統(tǒng)數(shù)據(jù)屬性個數(shù)較多的特點(diǎn),不會出現(xiàn)搜索樹算法的空間不足問題;
[0045](3)通過ID號辨識訂閱條件,重復(fù)的謂詞只需存儲一次,節(jié)省了空間和匹配時間。【專利附圖】
【附圖說明】
[0046]圖1為本發(fā)明方法的實(shí)現(xiàn)流程圖;
[0047]圖2為本發(fā)明的預(yù)處理流程圖;
[0048]圖3為本發(fā)明的匹配過程流程圖;
[0049]圖4為本發(fā)明的謂詞表數(shù)據(jù)結(jié)構(gòu)圖;
[0050]圖5為本發(fā)明的歷史經(jīng)驗(yàn)表數(shù)據(jù)結(jié)構(gòu)圖;
[0051]圖6為本發(fā)明與對比算法的匹配時間對比實(shí)驗(yàn)一結(jié)果圖;
[0052]圖7為本發(fā)明與對比算法的匹配時間對比實(shí)驗(yàn)二結(jié)果圖。
【具體實(shí)施方式】
[0053]如圖1所示,本發(fā)明具體實(shí)現(xiàn)步驟如下;
[0054]第一步,接收到新的訂閱條件后,為其分配唯一 ID,并將該ID保存在訂閱條件ID表對應(yīng)位置,將訂閱條件謂詞數(shù)目保存在謂詞數(shù)目表的對應(yīng)位置,對于訂閱條件的每個謂詞,首先將其存入謂詞表,緊接著將該謂詞與歷史經(jīng)驗(yàn)表中的事件謂詞進(jìn)行匹配,若匹配成功,將訂閱條件的ID存入歷史經(jīng)驗(yàn)表中匹配成功的事件謂詞對應(yīng)的ID列表,對應(yīng)的流程圖如圖2所示。
[0055]第二步,接收到新的事件后,清空匹配謂詞數(shù)目表,遍歷事件中的謂詞,進(jìn)行如下處理:查詢歷史經(jīng)驗(yàn)表,若該謂詞存在,說明該謂詞已進(jìn)行過匹配,只需根據(jù)該謂詞對應(yīng)的ID列表,在匹配謂詞數(shù)目表的相應(yīng)位置加1,匹配結(jié)束,若該謂詞不存在,則將該謂詞插入歷史經(jīng)驗(yàn)表中,到謂詞表中進(jìn)行匹配。
[0056]第三步,根據(jù)事件謂詞的屬性找到謂詞表中對應(yīng)的行,遍歷匹配該行的所有謂詞:
[0057]若匹配成功,根據(jù)該謂詞對應(yīng)的ID列表,在匹配謂詞數(shù)目表的相應(yīng)位置加1,同時,將這些ID保存在歷史經(jīng)驗(yàn)表中該謂詞對應(yīng)的ID列表;
[0058]第四步,所有謂詞匹配結(jié)束后,遍歷比較謂詞數(shù)目表與匹配謂詞數(shù)目表上對應(yīng)的數(shù)值,若相等,則表明事件與此位置代表的訂閱條件匹配。
[0059]第二、三、四步對應(yīng)的流程圖如圖3所示。
[0060]其中涉及到的數(shù)據(jù)結(jié)構(gòu)具體如下:
[0061]訂閱條件ID表:用于順序存放訂閱條件的ID號。
[0062]訂閱條件謂詞數(shù)目表:用于順序存放每個訂閱條件所包含的謂詞數(shù)目。[0063]匹配謂詞數(shù)目表:用于存放每個訂閱條件匹配成功的謂詞數(shù)目,存放的位置與該訂閱條件在訂閱條件ID表中的位置一致。
[0064]謂詞表:如圖4所示,用于存放訂閱條件的謂詞,同時,也存放包含該謂詞的訂閱條件ID,由于可能有多個訂閱條件包含同一個謂詞,所以用ID列表來存放這些訂閱條件的ID號,謂詞表中的每一行對應(yīng)同一屬性的謂詞。
[0065]歷史經(jīng)驗(yàn)表:如圖5所示,用于存放匹配過的事件謂詞,以及與該謂詞匹配成功的訂閱條件的ID,同樣也由一個ID列表來存儲訂閱條件的ID號,表中,每一行對應(yīng)一種屬性。
[0066]對暴力算法、謂詞索引算法與本發(fā)明基于歷史經(jīng)驗(yàn)的謂詞索引方法(即PIHE方法)
[0067]進(jìn)行了對比。實(shí)驗(yàn)是在配置為Intel (R) Core (TM) 2Duo2.93GHz處理器、2GB內(nèi)存、Windows XP SP2操作系統(tǒng)的PC機(jī)上進(jìn)行的。參照仿真數(shù)據(jù)的特點(diǎn),假設(shè)系統(tǒng)中一共有100種屬性,每一屬性均采用枚舉值來表示,訂閱條件和事件的屬性隨機(jī)從里面挑選。屬性的類型中整數(shù)類型占50%,布爾類型占20%,字符串類型占30%。每一個屬性出現(xiàn)在訂閱條件(事件)中的概率相等。其中各種類型的數(shù)值均在大小為100的相應(yīng)類型的樣本空間中隨機(jī)選取。操作符的類型有大于、等于、小于,訂閱條件的每個謂詞隨機(jī)從三種操作符中選取一種。
[0068]一共做兩組實(shí)驗(yàn),實(shí)驗(yàn)一中,每個訂閱條件或事件包含的屬性個數(shù)為3?10個,實(shí)驗(yàn)二中,每個訂閱條件或事件包含的屬性個數(shù)為3?20個。
[0069]實(shí)驗(yàn)中,訂閱條件數(shù)量固定為5000個。插入的事件數(shù)量從1000個增長到10000
個,每隔1000個取樣一次,記錄匹配所耗費(fèi)的時間。
[0070]圖6是實(shí)驗(yàn)一的匹配時間比較結(jié)果,A代表暴力算法,B代表謂詞索引算法,C代表基于歷史經(jīng)驗(yàn)的謂詞索引算法,橫軸表示時間數(shù)量,縱軸表示匹配的時間,單位是秒;圖7是實(shí)驗(yàn)二的匹配時間比較結(jié)果,A代表暴力算法,B代表謂詞索引算法,C代表基于歷史經(jīng)驗(yàn)的謂詞索引算法,橫軸表示時間數(shù)量,縱軸表示匹配的時間,單位是秒。
[0071]根據(jù)兩組實(shí)驗(yàn)結(jié)果可得,本發(fā)明在匹配時間上優(yōu)于暴力方法和謂詞索引方法。分析其原因,由于本發(fā)明利用了過去的匹配結(jié)果,避免了重復(fù)出現(xiàn)事件謂詞的二次匹配,所以在時間效率上優(yōu)于謂詞索引方法和暴力方法,此外,本發(fā)明與謂詞索引方法對于冗余訂閱條件謂詞均只存儲一次,避免了冗余訂閱條件謂詞的匹配,同時根據(jù)屬性進(jìn)行索引,所以在時間效率上優(yōu)于暴力方法。實(shí)驗(yàn)結(jié)果還表明,隨著事件數(shù)量的增加,本發(fā)明在時間上的優(yōu)勢越來越明顯。分析其原因,隨著事件數(shù)量的增加,本發(fā)明歷史經(jīng)驗(yàn)表中存儲的歷史匹配結(jié)果也隨之增加,則新來的事件能在歷史經(jīng)驗(yàn)表中找到對應(yīng)匹配結(jié)果的概率越來越大,很少再需要到謂詞表中進(jìn)行匹配,所以時間效率上的優(yōu)勢越來越明顯。
[0072]相比于暴力方法和謂詞索引方法,本發(fā)明還需另外存儲歷史的匹配結(jié)果,所以耗用的存儲空間會較大。但是,隨著歷史經(jīng)驗(yàn)表存儲的匹配結(jié)果的增加,出現(xiàn)新的事件謂詞的概率越來越小,則歷史經(jīng)驗(yàn)表的空間增長速度越來越慢,所以本發(fā)明在內(nèi)存占用上的劣勢會慢慢變小,此特點(diǎn)也剛好適用于大規(guī)模分布式仿真系統(tǒng)數(shù)據(jù)量大的情況。
[0073]提供以上實(shí)施例僅僅是為了描述本發(fā)明的目的,而并非要限制本發(fā)明的范圍。本發(fā)明的范圍由所附權(quán)利要求限定。不脫離本發(fā)明的精神和原理而做出的各種等同替換和修改,均應(yīng)涵蓋在本發(fā)明的范圍之內(nèi)。
【權(quán)利要求】
1.一種基于歷史經(jīng)驗(yàn)的謂詞索引匹配方法,其特征在于包括以下步驟: (1)建立訂閱條件ID表,所述訂閱條件ID表用于順序存放訂閱條件的ID號;建立謂詞數(shù)目表,所述謂詞數(shù)目表用于順序存放每個訂閱條件所包含的謂詞數(shù)目;建立謂詞表,所述謂詞表用于存放訂閱條件的謂詞,同時也存放包含該謂詞的訂閱條件ID,由于可能有多個訂閱條件包含同一個謂詞,用ID列表來存放這些訂閱條件的ID號,謂詞表中的每一行對應(yīng)同一屬性的謂詞;建立歷史經(jīng)驗(yàn)表,所述歷史經(jīng)驗(yàn)表用于存放匹配過的事件謂詞,以及與該謂詞匹配成功的訂閱條件的ID,同樣也由一個ID列表來存儲訂閱條件的ID號,表中,每一行對應(yīng)一種屬性;建立匹配謂詞數(shù)目表,所述匹配謂詞數(shù)目表用于存放每個訂閱條件匹配成功的謂詞數(shù)目,存放的位置與該訂閱條件在訂閱條件ID表中的位置一致; (2)接收到新的訂閱條件后,為其分配唯一ID,并將該ID保存在訂閱條件ID表對應(yīng)位置;將訂閱條件謂詞數(shù)目保存在謂詞數(shù)目表的對應(yīng)位置,對于訂閱條件的每個謂詞,首先將其存入謂詞表,再將該謂詞與歷史經(jīng)驗(yàn)表中的事件謂詞進(jìn)行匹配,若匹配成功,將訂閱條件的ID存入歷史經(jīng)驗(yàn)表中匹配成功的事件謂詞對應(yīng)的ID列表; (3)接收到新的事件后,清空匹配謂詞數(shù)目表,遍歷事件中的謂詞,進(jìn)行如下處理:查詢歷史經(jīng)驗(yàn)表,若該謂詞存在,說明該謂詞已進(jìn)行過匹配,只需根據(jù)該謂詞對應(yīng)的ID列表,在匹配謂詞數(shù)目表的相應(yīng)位置加1,匹配結(jié)束,若該謂詞不存在,則將該謂詞插入歷史經(jīng)驗(yàn)表中,到謂詞表中進(jìn)行匹配; (4)根據(jù)事件謂詞的屬性找到謂詞表中對應(yīng)的行,遍歷匹配該行的所有謂詞:若匹配成功,根據(jù)該謂詞對應(yīng)的ID列表,在匹配謂詞數(shù)目表的相應(yīng)位置加1,同時,將這些ID保存在歷史經(jīng)驗(yàn)表中該謂詞對應(yīng)的ID列表; (5)所有謂詞匹配結(jié)束后,遍歷比較謂詞數(shù)目表與匹配謂詞數(shù)目表上對應(yīng)的數(shù)值,若相等,則表明事件與此位置代表的訂閱條件匹配; (6)為避免某些特殊謂詞的多次匹配,添加以下處理:在歷史經(jīng)驗(yàn)表設(shè)立一個比例參數(shù)R:
【文檔編號】G06F17/30GK104036052SQ201410318951
【公開日】2014年9月10日 申請日期:2014年7月5日 優(yōu)先權(quán)日:2014年7月5日
【發(fā)明者】王海波, 吳昱斌, 宋俊平, 呂品 申請人:中國科學(xué)院軟件研究所