專利名稱:移動設(shè)備的數(shù)據(jù)緩存方法及其系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種數(shù)據(jù)緩存技術(shù),特別涉及一種在移動計算設(shè)備中通過將查詢結(jié)果和相關(guān)語義信息進(jìn)行緩存、并利用語義為查詢提供解答的移動設(shè)備的數(shù)據(jù)緩存方法及其系統(tǒng)。
背景技術(shù):
緩存技術(shù)是一項能較好解決移動環(huán)境下數(shù)據(jù)訪問性能的技術(shù),通過對數(shù)據(jù)進(jìn)行緩存,可以降低移動計算設(shè)備訪問網(wǎng)絡(luò)的延遲以及帶寬消耗。傳統(tǒng)的客戶端緩存主要包括頁面緩存、元組緩存,兩者的緩存技術(shù)都采用基于數(shù)據(jù)導(dǎo)航的訪問模式,而對于關(guān)聯(lián)訪問的支持是很有限的,為了解決基于關(guān)系型數(shù)據(jù)庫的緩存,可采用語義緩存的方式。語義緩存技術(shù)是一種基于語義描述及其結(jié)果集的緩存技術(shù),相對傳統(tǒng)的頁緩存和元組緩存技術(shù),它具備明顯優(yōu)勢節(jié)約網(wǎng)絡(luò)開銷,節(jié)省緩存容量,支持并發(fā)處理,支持網(wǎng)絡(luò)斷接.這使得語義緩存技術(shù)在移動計算環(huán)境下有非常廣闊的應(yīng)用前景;因為移動設(shè)備資源有限,語義緩存只能緩存被用戶頻繁訪問的那部分?jǐn)?shù)據(jù)集。當(dāng)用戶發(fā)出查詢請求時,查詢所要求的結(jié)果集可能只有部分或完全沒有被緩存包含。因此,語義緩存需要對用戶查詢請求進(jìn)行裁剪以獲得本地緩存可以處理的探測查詢(probe query)和必須送服務(wù)器處理的剩余查詢(remainderquery)。查詢裁剪快速執(zhí)行和裁剪結(jié)果簡單是語義緩存具有實用價值的關(guān)鍵條件。如果查詢裁剪過程過于復(fù)雜或者裁剪出的探測查詢和剩余查詢復(fù)雜度太高,都會使得查詢處理的執(zhí)行效率大大降低。現(xiàn)有的語義緩存查詢處理機制在時空效率和裁剪結(jié)果復(fù)雜度兩方面存在很大的局限性。給出的查詢處理算法都只是利用邏輯與運算和邏輯差運算裁剪出探測查詢和剩余查詢,它們都沒有對與運算和差運算的時空復(fù)雜性進(jìn)行充分的考慮。雖然利用這些算法可以求得探測查詢和剩余查詢,但是查詢處理算法的時空效率很低。在語義緩存合并策略方面,雖然給出了幾個典型的合并策略,但是沒有分情況進(jìn)行討論,而且對于某些復(fù)雜的查詢,典型的合并策略并不是最優(yōu)化的。因此,對于語義緩存的查詢處理,需要有更好的優(yōu)化機制來簡化其裁剪過程,使得查詢處理的時空復(fù)雜度盡量小,并且要降低查詢處理時空消耗的快速遞增趨勢。
發(fā)明內(nèi)容
本發(fā)明的首要目的在于克服現(xiàn)有技術(shù)的缺點與不足,提供一種移動設(shè)備的數(shù)據(jù)緩存方法,該方法大大減小了裁剪過程中謂詞的數(shù)目,具有裁剪效率高,降低了查詢處理時空消耗快速遞增的趨勢的特點。本發(fā)明的另一目的在于克服現(xiàn)有技術(shù)的缺點與不足,提供一種移動設(shè)備的數(shù)據(jù)緩存系統(tǒng)。該系統(tǒng)能夠增加緩存管理的效率和重復(fù)利用率,實用性強。本發(fā)明的首要目的通過下述技術(shù)方案實現(xiàn)移動設(shè)備的數(shù)據(jù)緩存方法,包括查詢解析與分類,對用戶發(fā)出的查詢進(jìn)行解析得到查詢的內(nèi)存表示形式,并把查詢分為簡單查詢和復(fù)雜查詢這兩種類型;
查詢匹配,將解析后的查詢與語義緩存進(jìn)行查詢匹配,得到待裁剪的緩存段,將待裁剪的緩存段組合成一個帶謂詞析取式的緩存;謂詞化簡,判斷緩存是否由簡單查詢構(gòu)成,如果緩存是由簡單查詢構(gòu)成,則進(jìn)行謂詞析取式化簡;否則,則進(jìn)行謂詞合取式化簡;剩余查詢裁剪,化簡后的緩存與查詢進(jìn)行裁剪,得到剩余查詢;數(shù)據(jù)通信,將剩余查詢發(fā)往服務(wù)端,并接收服務(wù)端返回的剩余查詢的查詢結(jié)果;服務(wù)端,接收剩余查詢,并返回剩余查詢的查詢結(jié)果;緩存更新,根據(jù)服務(wù)端返回的剩余查詢的查詢結(jié)果對緩存進(jìn)行更新;數(shù)據(jù)存儲,將查詢結(jié)果與查詢進(jìn)行存儲;其中,簡單查詢包括關(guān)系表,屬性集合,簡單謂詞集合和查詢被提交的時間;簡單謂詞集合又包括簡單查詢謂詞、簡單查詢操作和簡單查詢值;簡單謂詞集合限定每個簡單查詢謂詞的名稱相同,簡單查詢操作限定為數(shù)值比較操作,所述數(shù)值比較操作為大于、小于、等于、大于等于或小于等于,簡單查詢值為數(shù)值型,所述數(shù)值型為整形、浮點型或雙精度浮點型;復(fù)雜查詢包括關(guān)系表,屬性集合,復(fù)雜謂詞集合和查詢被提交的時間;復(fù)雜謂詞集合又包括復(fù)雜查詢謂詞、復(fù)雜查詢操作和復(fù)雜查詢值;復(fù)雜謂詞集合中復(fù)雜查詢謂詞的類型不限,復(fù)雜查詢操作為包含、不包含、大于、小于、等于、大于等于或小于等于,復(fù)雜查詢的類型為字符串型、整型、浮點型或雙精度浮點型。緩存合并,針對簡單查詢進(jìn)行緩存全合并,針對復(fù)雜查詢進(jìn)行基于謂詞復(fù)雜度的動態(tài)合并。界面顯示,與用戶進(jìn)行人機交互。本發(fā)明的另一目的通過下述技術(shù)方案實現(xiàn)移動設(shè)備的數(shù)據(jù)緩存系統(tǒng),包括查詢解析與分類模塊,用于對用戶發(fā)出的查詢進(jìn)行解析得到查詢的內(nèi)存表示形式,并把查詢分為簡單查詢和復(fù)雜查詢這兩種類型;查詢匹配模塊,用于將解析后的查詢與語義緩存進(jìn)行查詢匹配,得到待裁剪的緩存段,將待裁剪的緩存段組合成一個帶謂詞析取式的緩存;謂詞化簡模塊,用于判斷緩存是否由簡單查詢構(gòu)成,如果緩存是由簡單查詢構(gòu)成,則進(jìn)行謂詞析取式化簡;否則,則進(jìn)行謂詞合取式化簡;剩余查詢裁剪模塊,用于將化簡后的緩存與查詢進(jìn)行裁剪,得到剩余查詢;數(shù)據(jù)通信模塊,用于將剩余查詢發(fā)往服務(wù)端,并接收服務(wù)端返回的剩余查詢的查詢結(jié)果;服務(wù)端模塊,用于接收剩余查詢,并返回剩余查詢的查詢結(jié)果;緩存更新模塊,用于根據(jù)服務(wù)端返回的剩余查詢的查詢結(jié)果對緩存進(jìn)行更新;數(shù)據(jù)存儲模塊,用于將查詢結(jié)果與查詢進(jìn)行存儲;緩存合并模塊,用于針對簡單查詢進(jìn)行緩存全合并,針對復(fù)雜查詢進(jìn)行基于謂詞復(fù)雜度的動態(tài)合并。界面顯示模塊,用于與用戶進(jìn)行人機交互。本發(fā)明的作用原理本發(fā)明實施例提供移動計算設(shè)備數(shù)據(jù)緩存方法及其系統(tǒng),能夠在移動設(shè)備端緩存查詢的語義和對應(yīng)的查詢結(jié)果數(shù)據(jù),并對用戶發(fā)出的查詢提供解答對查詢進(jìn)行解析,將解析后的查詢與緩存進(jìn)行匹配、裁剪和謂詞化簡;查詢解析與分類模塊、查詢匹配模塊、謂詞化簡模塊、剩余查詢裁剪模塊、數(shù)據(jù)通信模塊、緩存更新模塊、數(shù)據(jù)存儲模塊、緩存合并模塊和界面顯示模塊作為一個整體用于移動計算設(shè)備上數(shù)據(jù)的緩存,緩存的方式是利用本地緩存的語義信息進(jìn)行推理,從而確定客戶查詢是否可在本地被完全解答或部分解答,語義緩存的理論基礎(chǔ)是利用用戶查詢的語義局部性,即用戶查詢之間的語義相關(guān)性來重用緩存數(shù)據(jù),實現(xiàn)了用戶從查詢輸入到查詢結(jié)果的顯示,并且還與服務(wù)端模塊進(jìn)行數(shù)據(jù)通信實現(xiàn)剩余查詢,然后對查詢和緩存進(jìn)行合并,最后根據(jù)服務(wù)端模塊返回的剩余查詢的查詢結(jié)果對緩存進(jìn)行更新,并且對更新后的緩存進(jìn)行存儲。本發(fā)明相對于現(xiàn)有技術(shù)具有如下的優(yōu)點及效果(I)裁剪效率高,降低了查詢處理時空消耗快速遞增的趨勢;本發(fā)明采用了一系列優(yōu)化規(guī)則和一種基于謂詞復(fù)雜度的查詢化簡策略,謂詞復(fù)雜度由緩存中謂詞的數(shù)目決定;基于謂詞復(fù)雜度,對語義緩存的查詢進(jìn)行分類,分為簡單查詢和復(fù)雜查詢;對于簡單查詢,提出了優(yōu)化的邏輯規(guī)則進(jìn)行優(yōu)化查詢裁剪,大大減小了裁剪過程中謂詞的數(shù)目,提高了裁剪效率;對于復(fù)雜查詢,提出了基于謂詞復(fù)雜度的語義緩存動態(tài)合并策略,能根據(jù)緩存與裁剪語句的謂詞數(shù)目來決定緩存的合并,降低了查詢處理時空消耗快速遞增的趨勢。(2)緩存管理的效率和重復(fù)利用率高,實用性高;本發(fā)明利用用戶查詢的語義局部性,即用戶查詢之間的語義相關(guān)性來重用緩存數(shù)據(jù),對語義緩存進(jìn)行分類,提供了一種較佳的語義緩存查詢處理流程,該流程相比其他語義緩存查詢處理方法,有明顯的優(yōu)勢,通過將用戶查詢分類,不同的查詢類型執(zhí)行不同的謂詞優(yōu)化方法,使得查詢的謂詞復(fù)雜度大大降低,另外,不同的查詢類型執(zhí)行不同的緩存合并策略,能夠增加緩存管理的效率和重復(fù)利用率,兩種優(yōu)化方法相結(jié)合能夠大幅提高此種緩存方法的有效性和實用性。
圖1是本發(fā)明實施例的移動計算設(shè)備數(shù)據(jù)緩存方法流程圖。圖2是本發(fā)明實施例的移動計算設(shè)備數(shù)據(jù)緩存系統(tǒng)結(jié)構(gòu)框圖。
具體實施例方式下面結(jié)合實施例及附圖對本發(fā)明作進(jìn)一步詳細(xì)的描述,但本發(fā)明的實施方式不限于此。實施例為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清晰,下面結(jié)合附圖作進(jìn)一步的詳細(xì)說明。如圖1所示,移動設(shè)備的數(shù)據(jù)緩存方法,包括查詢解析與分類,對用戶發(fā)出的查詢進(jìn)行解析得到查詢的內(nèi)存表示形式,并把查詢分為簡單查詢和復(fù)雜查詢這兩種類型;查詢匹配,將解析后的查詢與語義緩存進(jìn)行查詢匹配,得到待裁剪的緩存段,將待裁剪的緩存段組合成一個帶謂詞析取式的緩存;謂詞化簡,判斷緩存是否由簡單查詢構(gòu)成,如果緩存是由簡單查詢構(gòu)成,則進(jìn)行謂詞析取式化簡;否則,則進(jìn)行謂詞合取式化簡;
剩余查詢裁剪,化簡后的緩存與查詢進(jìn)行裁剪,得到剩余查詢;數(shù)據(jù)通信,將剩余查詢發(fā)往服務(wù)端,并接收服務(wù)端返回的剩余查詢的查詢結(jié)果;服務(wù)端,接收剩余查詢,并返回剩余查詢的查詢結(jié)果;緩存更新,根據(jù)服務(wù)端返回的剩余查詢的查詢結(jié)果對緩存進(jìn)行更新;數(shù)據(jù)存儲,將查詢結(jié)果與查詢進(jìn)行存儲;其中,簡單查詢包括關(guān)系表,屬性集合,簡單謂詞集合和查詢被提交的時間;簡單謂詞集合又包括簡單查詢謂詞、簡單查詢操作和簡單查詢值;簡單謂詞集合限定每個簡單查詢謂詞的名稱相同,簡單查詢操作限定為數(shù)值比較操作,所述數(shù)值比較操作為大于、小于、等于、大于等于或小于等于,簡單查詢值為數(shù)值型,所述數(shù)值型為整形、浮點型或雙精度浮點型;復(fù)雜查詢包括關(guān)系表,屬性集合,復(fù)雜謂詞集合和查詢被提交的時間;復(fù)雜謂詞集合又包括復(fù)雜查詢謂詞、復(fù)雜查詢操作和復(fù)雜查詢值;復(fù)雜謂詞集合中復(fù)雜查詢謂詞的類型不限,復(fù)雜查詢操作為包含、不包含、大于、小于、等于、大于等于或小于等于,復(fù)雜查詢的類型為字符串型、整型、浮點型或雙精度浮點型。緩存合并,針對簡單查詢進(jìn)行緩存全合并,針對復(fù)雜查詢進(jìn)行基于謂詞復(fù)雜度的動態(tài)合并。界面顯示,與用戶進(jìn)行人機交互。下面對本發(fā)明實施例提供的移動計算設(shè)備數(shù)據(jù)緩存的方法做詳細(xì)說明首先,對本發(fā)明實 施例提供的方法和系統(tǒng)中所涉及到的相關(guān)術(shù)語,我們給出如下定義定義I查詢Q= < Qe, Qa, Qp, Qt >。其中Qk為查詢對應(yīng)的關(guān)系表,Qa是查詢對應(yīng)的屬性集合,Qp是查詢對應(yīng)的謂詞集合,Qt是該查詢被提交的時間。其中,Qp是原子查詢謂詞P,定義為{Attribute, Operation, Data},其中 Attribute 為關(guān)系中對應(yīng)屬性,Operation取值{ =,< , > , ^ , ^ , like, Not like},Data 取值{String, Integer, Float, Double}定義2謂詞合取式Cp :〈卩>,表示形式為(1^1八?2八?3八一 卜1八?1八?1+1"*八?11·Pi為一個原子查詢謂詞定義3 謂詞析取式 DP:〈CP>,表示形式為 Dp=C1 V C2 V C3 V …C^1 V Ci V Ci+1···VCn. Ci為謂詞的合取式形式定義4簡單查詢Qs,為一種形式的查詢Q,其中QP=CP。且Vi,Pi (Attribute) =Pi+1 (Attribute), Pi (Operation)取值{ =,< , > , ^ , ^ = }, Data 為數(shù)值類型,取值{Integer, Float, Double}定義5復(fù)雜查詢Q。,為一種形式的查詢Q,其中Qp=Dp定義6移動語義緩存SCM,表示形式為SCM=〈SQ,SL, Sc>,其中Sq = {Qs, Qj,Sl為緩存的位置特征或?qū)傩裕琒c是緩存片段[3]的集合定義7謂詞復(fù)雜度(Predicate Complexity)為查詢Q或者Scm包含的所有謂詞數(shù)目的總和.如圖1所示,該流程包括以下步驟步驟101 :對查詢請求Q進(jìn)行解析。本步驟中,在移動設(shè)備端,用戶發(fā)出的查詢請求格式是字符串格式的SQL語句,我們對該SQL語句進(jìn)行查詢解析,采用面向?qū)ο蟮姆绞竭M(jìn)行查詢類的封裝,將SQL語句的查詢解析成Q= < Qe, Qa, Qp, Qt >的形式,并封裝到各個類中,為接下來的查詢處理做準(zhǔn)備。步驟102 :將解析后的對象與語義緩存進(jìn)行查詢匹配,得到待裁剪的緩存段。本步驟中,我們將解析后的對象與移動設(shè)備端已有的緩存對象(或稱緩存段)集合進(jìn)行逐一匹配,得到能與查詢進(jìn)行裁剪的緩存段集合。查詢與緩存進(jìn)行匹配的標(biāo)準(zhǔn)是緩存S中的關(guān)系表Qk等于查詢Q中的關(guān)系表QK,且緩存中的屬性集合Qa等于查詢Q中的屬性集合Qa。步驟103 :將一個或多個待裁剪的緩存段組合成一個帶謂詞析取式形式的緩存。本步驟中,在得到待裁剪的緩存段集合后,因為每個緩存段的關(guān)系表Qk和屬性集合Qa都相同,那么可以將緩存段集合組合成一個緩存段的形式,其中Qk和Qa保持不變,而謂詞集合Qp則以連接詞OR進(jìn)行連接,將一個或多個待裁剪的緩存段集合組合成一個緩存段的好處是可以進(jìn)行緩存的謂詞集合的化簡。步驟104 :緩存是否由簡單查詢構(gòu)成。
本步驟中,我們將緩存分為兩類簡單查詢Qs和復(fù)雜查詢Q。,兩種不同類型的緩存采取的謂詞化簡方式是不同的,簡單查詢Qs和復(fù)雜查詢Q。的不同之處在于,謂詞集合Qp中謂詞的屬性是否相同,操作Operation以及數(shù)值Data是否針對數(shù)值類型。步驟105 :執(zhí)行簡單查詢下的謂詞析取式化簡。本步驟中,我們對簡單查詢進(jìn)行謂詞的化簡,因為任何的查詢的條件表達(dá)式都可以化簡為析取范式的形式,因此,我們對析取范式進(jìn)行優(yōu)化處理,我們假設(shè)的析取范式的形式如下C=P1 Λ P2 Λ P3 Λ …Ph Λ Pi Λ Pi+1-A Pn, Pi 為一個謂詞表達(dá)式D=C1 V C2 V C3 V …Ch V Ci V CyV Cn我們針對謂詞析取式的優(yōu)化算法和邏輯蘊涵規(guī)則,提出全面且豐富的邏輯規(guī)則,它們具有以下形式規(guī)則1.如果3Pi=false,那么 C=false.規(guī)則2.如果VPi=true,那么 C=true.規(guī)則3.如果3Pi=true,那么 C=P1 Λ P2 Λ P3 Λ …Ph Λ Pi+1 …Λ Pn.規(guī)則4·如果彐Cftrue,那么 D=true.規(guī)則5.如果VCi二false,那么 D=false.規(guī)則6 如果3Ci二false,那么 D=C1 V C2 V C3 V…Ch V Ci+1 …V Cn.規(guī)則7.如果BCftrue,那么 D=C1 V C2 V C3 V …Ch V Ci+1 …V Cn.規(guī)則8.如果 Pi — Pj,那么Pi APj ^ Pi規(guī)則9.如果Pi — P」,那么Pi VPj G Pj規(guī)則10.如果 C,d 為常數(shù),且 c>d,貝歸A ( A >=c ΛΑ〈二 d) false.規(guī)則11.如果 c,d 為常數(shù),且 c>=d,貝歸A ( A >c ΛΑ < = d) ^false.規(guī)則12.如果 C,d 為常數(shù),且 c>=d,貝歸A ( A >=c ΛΑ < d) <^false.規(guī)則13.如果 C,d,e 為常數(shù),且 c〈e〈d,貝丨J3A ( A >cAA < 八A Ce)
(A c AA < e).規(guī)則14.如果 c,d,e 為常數(shù),且 c〈e〈d,貝U3A ( A >cAA <dAA >e) <-^3A(A >e ΛΑ < d).規(guī)則15.如果 c, d, e 為常數(shù),c〈e〈d,貝歸A ( A >cAA <dAA =e) 0彐A
(A =e) ·規(guī)則16 如果 c, d, e, f 為常數(shù),c<e<d<f,則3A (c<A<d ¥ e<A<f) G
c<A<f規(guī)則17 如果 c’ d, e, f 為常數(shù),且 e=d,則3A (c〈A〈=d ¥ e〈A〈f) e C<A<f規(guī)則18 如果 c, d 為常數(shù),且 c〈d,貝歸A (A>c V A<d) true規(guī)則19 如果 c, d 為常數(shù),且 c〈=d,則3A (A>=c V A<d) true規(guī)則20.如果 A 為布爾型,且 C!=d,貝歸A ( A =c ΛΑ = d) <^false.規(guī)則21.如果A為布爾型,且C=d,貝歸A ( A !=C ΛΑ = d) ^false.規(guī)則22.如果A為字符型,且c!=d,貝歸A ( A =C ΛΑ = d) Gfalse.規(guī)則23.如果 A 為字符型,且 C=d,貝歸A ( A !=C ΛΑ = d) —>false. 規(guī)則24.如果A為字符型,且C是d的子串,貝歸A ( A like ‘%c%’ ΛΑ like
‘%d%’ ) g3A ( A like ‘%d%’ ).在簡單查詢的條件下,謂詞合取式中的謂詞屬性為數(shù)值類型且屬性名稱相同,根據(jù)優(yōu)化規(guī)則1-5,8,10-15,我們可以把合取式中的謂詞進(jìn)行化簡,得到一個相與后的數(shù)值范圍區(qū)間。而當(dāng)我們把待裁剪的緩存組合成析取式形式的查詢時,我們可以根據(jù)優(yōu)化規(guī)則6,7,9,16-19,對謂詞的析取式進(jìn)行化簡,最終得到一個大幅度簡化的謂詞析取式形式的查詢,簡單查詢下的謂詞化簡算法如下所示Dis_0ptimize (Dp) //簡單查詢下的謂詞化簡算法輸入=Dp=C1V C2 V C3 V…Ch V Ci V Ci+1...V Cn 其中 Ci 為謂詞合取式Ci=P1 Λ P2 Λ P3 Λ …Λ Pn; Pi 為比較謂詞。輸出優(yōu)化后的謂詞析取式(I)//對Dp根據(jù)每個謂詞的屬性名稱進(jìn)行分組,產(chǎn)生分組集合Ts(2)Ts —group (Dp)(3) For (each Di in Ts) {//對分組后的每個析取式(4) Il對分組后的每個合取式,得出一個相交后的范圍(5) For (each Ci in Di) {(6)For(each Predicate(x op c)in Ti){(7) Find the range of x, rx= (a, b);(8) Case op of(9) <: (a, b) = (a, min (b, c));(10) >: (a, b) = (max (a, , c), b);(11) = : (a, b) = [c, c];(12) End of case(13) If (a>b)break;
(14)}(15) RangeList. add(rx)(16)}(17)//對RangeList按照范圍的左邊界從小到大進(jìn)行排序(18) RangeList. sort ();(19)For (each range in RangeList){(20)//如果范圍不相交,直接添加(21) If (rangeOne. getRight () <rangeTwo. getLeft ())(22) ResultList. add (range);(23) //如果范圍相交,對范圍進(jìn)行或運算(24) else(25)RangeTwo=new Range(rangeOne. getLeftO , rangeTwo. getRi ght());(26)//如果范圍無窮大,則跳過(27)If (RangeTwo==INFINITY)(28) continue;(29)}(30)//將優(yōu)化后的結(jié)果轉(zhuǎn)化為謂詞析取式(31)Dp=ResultList. transformDisjuction();(32) Return Dp(33)}步驟106 :執(zhí)行復(fù)雜查詢下的謂詞合取式化簡。本步驟中,對于復(fù)雜查詢,因為其包含不同屬性,我們不能進(jìn)行析取式形式上的謂詞化簡。但是,我們同樣可以進(jìn)行謂詞合取式形式上的謂詞化簡,根據(jù)優(yōu)化規(guī)則1-5,8,10-15,我們可以得到一個相與后的數(shù)值范圍區(qū)間,因此,對于復(fù)雜查詢,我們也可以根據(jù)優(yōu)化的邏輯規(guī)則進(jìn)行合取式的化簡。復(fù)雜查詢下的謂詞化簡算法如下所示
Conjunction_0pt (P) //復(fù)雜查詢下的謂詞化簡算法輸入=P=P1Λ P2 Λ P3 Λ …Λ Pn; Pi 為比較謂詞。輸出可滿足,則輸出True,并返回優(yōu)化的謂詞結(jié)果P ;(I)Ts — group (P)對P根據(jù)每個謂詞的屬性名稱進(jìn)行分組,產(chǎn)生分組集合Ts(2) For (each Ti in Ts) {(3)If (the Attribute of Ti is numeric)(4) For (each Predicate (x op c) in Ti) {(5) Find the range of x, rx= (a, b);(6) Case op of(7) <: (a, b) = (a, min (b, c));(8) >: (a, b) = (max (a, , c), b);(9) = : (a, b) = [c, c];(IO)End of case(11) If (a>b) return false;
(12)}(13) If (the Attribute of Ti is boolean)(14) If (3 (Predicate (x op c) and Predicate (x opr v) in Ti)) {(15) If (op=opr and v!=c)(16)return false;(17) If (op!=opr and v=c)(18)return false;(19) If (op=opr and v=c)(20) discard Predicate (x op v);(21)}(22) If (the Attribute of Ti is string)(23) If (3 (Predicate (x op c) and Predicate (x opr v) in Ti)) {(24) If (op=opr and op is ‘ = ’ and v!=c)(25)return false;
(26) If (op=opr and op is iIike, and neither c nor v(27) is substring of each other)(28)return false;(29) If (op!=opr and op is ‘ = ’ and opr is ‘!=,and v=c)(30)return false;(31) If (op!=opr and op is ‘!=’ and opr is ‘ = ’ and v=c)(32)return false;(33) If (op=opr and op is iIike, and c is substring of v)(34) discard Predicate (x op v);(35) If (op=opr and v=c)(36) discard Predicate (x op v);(37)}(38)}(39) Return True步驟107 :將化簡后的緩存與查詢Q進(jìn)行裁剪,得到剩余查詢RQ。本步驟中,假設(shè)化簡后的語義緩存為S,用戶發(fā)出查詢?yōu)镼,則剩余查詢?yōu)榍蠼?SA Q的過程。對謂詞的求補操作,可根據(jù)謂詞的類型分為如下三種求補操作,如表I (數(shù)值型謂詞求補)、表2 (布爾型謂詞求補)和表3 (字符串型謂詞求補)所示。數(shù)值類型謂詞操作符舉例__求補運算_
權(quán)利要求
1.移動設(shè)備的數(shù)據(jù)緩存方法,其特征在于,包括 查詢解析與分類,對用戶發(fā)出的查詢進(jìn)行解析得到查詢的內(nèi)存表示形式,并把查詢分為簡單查詢和復(fù)雜查詢這兩種類型; 查詢匹配,將解析后的查詢與語義緩存進(jìn)行查詢匹配,得到待裁剪的緩存段,將待裁剪的緩存段組合成一個帶謂詞析取式的緩存; 謂詞化簡,判斷緩存是否由簡單查詢構(gòu)成,如果緩存是由簡單查詢構(gòu)成,則進(jìn)行謂詞析取式化簡;否則,則進(jìn)行謂詞合取式化簡; 剩余查詢裁剪,化簡后的緩存與查詢進(jìn)行裁剪,得到剩余查詢; 數(shù)據(jù)通信,將剩余查詢發(fā)往服務(wù)端,并接收服務(wù)端返回的剩余查詢的查詢結(jié)果; 服務(wù)端,接收剩余查詢,并返回剩余查詢的查詢結(jié)果; 緩存更新,根據(jù)服務(wù)端返回的剩余查詢的查詢結(jié)果對緩存進(jìn)行更新; 數(shù)據(jù)存儲,將查詢結(jié)果與查詢進(jìn)行存儲; 其中,簡單查詢包括關(guān)系表,屬性集合,簡單謂詞集合和查詢被提交的時間;簡單謂詞集合又包括簡單查詢謂詞、簡單查詢操作和簡單查詢值;簡單謂詞集合限定每個簡單查詢謂詞的名稱相同,簡單查詢操作限定為數(shù)值比較操作,所述數(shù)值比較操作為大于、小于、等于、大于等于或小于等于,簡單查詢值為數(shù)值型,所述數(shù)值型為整形、浮點型或雙精度浮點型; 復(fù)雜查詢包括關(guān)系表,屬性集合,復(fù)雜謂詞集合和查詢被提交的時間;復(fù)雜謂詞集合又包括復(fù)雜查詢謂詞、復(fù)雜查詢操作和復(fù)雜查詢值;復(fù)雜謂詞集合中復(fù)雜查詢謂詞的類型不限,復(fù)雜查詢操作為包含、不包含、大于、小于、等于、大于等于或小于等于,復(fù)雜查詢的類型為字符串型、整型、浮點型或雙精度浮點型。
2.根據(jù)權(quán)利要求1所述的移動設(shè)備的數(shù)據(jù)緩存方法,其特征在于,還包括 緩存合并,針對簡單查詢進(jìn)行緩存全合并,針對復(fù)雜查詢進(jìn)行基于謂詞復(fù)雜度的動態(tài)合并。
3.根據(jù)權(quán)利要求1所述的移動設(shè)備的數(shù)據(jù)緩存方法,其特征在于,還包括 界面顯示,與用戶進(jìn)行人機交互。
4.移動設(shè)備的數(shù)據(jù)緩存系統(tǒng),其特征在于,包括 查詢解析與分類模塊,用于對用戶發(fā)出的查詢進(jìn)行解析得到查詢的內(nèi)存表示形式,并把查詢分為簡單查詢和復(fù)雜查詢這兩種類型; 查詢匹配模塊,用于將解析后的查詢與語義緩存進(jìn)行查詢匹配,得到待裁剪的緩存段,將待裁剪的緩存段組合成一個帶謂詞析取式的緩存; 謂詞化簡模塊,用于判斷緩存是否由簡單查詢構(gòu)成,如果緩存是由簡單查詢構(gòu)成,則進(jìn)行謂詞析取式化簡;否則,則進(jìn)行謂詞合取式化簡; 剩余查詢裁剪模塊,用于將化簡后的緩存與查詢進(jìn)行裁剪,得到剩余查詢; 數(shù)據(jù)通信模塊,用于將剩余查詢發(fā)往服務(wù)端,并接收服務(wù)端返回的剩余查詢的查詢結(jié)果; 服務(wù)端模塊,用于接收剩余查詢,并返回剩余查詢的查詢結(jié)果; 緩存更新模塊,用于根據(jù)服務(wù)端返回的剩余查詢的查詢結(jié)果對緩存進(jìn)行更新; 數(shù)據(jù)存儲模塊,用于將查詢結(jié)果與查詢進(jìn)行存儲;其中,簡單查詢包括關(guān)系表,屬性集合,簡單謂詞集合和查詢被提交的時間;簡單謂詞集合又包括簡單查詢謂詞、簡單查詢操作和簡單查詢值;簡單謂詞集合限定每個簡單查詢謂詞的名稱相同,簡單查詢操作限定為數(shù)值比較操作,所述數(shù)值比較操作為大于、小于、等于、大于等于或小于等于,簡單查詢值為數(shù)值型,所述數(shù)值型為整形、浮點型或雙精度浮點型; 復(fù)雜查詢包括關(guān)系表,屬性集合,復(fù)雜謂詞集合和查詢被提交的時間;復(fù)雜謂詞集合又包括復(fù)雜查詢謂詞、復(fù)雜查詢操作和復(fù)雜查詢值;復(fù)雜謂詞集合中復(fù)雜查詢謂詞的類型不限,復(fù)雜查詢操作為包含、不包含、大于、小于、等于、大于等于或小于等于,復(fù)雜查詢的類型為字符串型、整型、浮點型或雙精度浮點型。
5.根據(jù)權(quán)利要求3所述的移動設(shè)備的數(shù)據(jù)緩存系統(tǒng),其特征在于,還包括 緩存合并模塊,用于針對簡單查詢進(jìn)行緩存全合并,針對復(fù)雜查詢進(jìn)行基于謂詞復(fù)雜度的動態(tài)合并。
6.根據(jù)權(quán)利要求3所述的移動設(shè)備的數(shù)據(jù)緩存系統(tǒng),其特征在于,還包括 界面顯示模塊,用于與用戶進(jìn)行人機交互。
全文摘要
移動設(shè)備的數(shù)據(jù)緩存方法,包括查詢解析與分類,查詢匹配,謂詞化簡,判斷緩存是否由簡單查詢構(gòu)成,如果緩存是由簡單查詢構(gòu)成,則進(jìn)行謂詞析取式化簡;否則,則進(jìn)行謂詞合取式化簡;剩余查詢裁剪,數(shù)據(jù)通信,服務(wù)端,緩存更新和數(shù)據(jù)存儲。移動設(shè)備的數(shù)據(jù)緩存系統(tǒng),包括查詢解析與分類模塊,查詢匹配模塊,謂詞化簡模塊,剩余查詢裁剪模塊,數(shù)據(jù)通信模塊,服務(wù)端模塊,緩存更新模塊,數(shù)據(jù)存儲模塊。具有裁剪效率高、降低了查詢處理時空消耗快速遞增的趨勢和緩存管理的效率與重復(fù)利用率高等優(yōu)點。
文檔編號G06F17/30GK103049506SQ20121053662
公開日2013年4月17日 申請日期2012年12月12日 優(yōu)先權(quán)日2012年12月12日
發(fā)明者李 東, 陳銳, 徐楊 申請人:華南理工大學(xué)