專利名稱:基于子查詢實現(xiàn)數(shù)據(jù)源xml查詢系統(tǒng)優(yōu)化的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機(jī)外部信息處理領(lǐng)域,特別涉及異構(gòu)數(shù)據(jù)源查詢技術(shù)領(lǐng)域,具體 是指一種基于子查詢實現(xiàn)數(shù)據(jù)源XML查詢系統(tǒng)優(yōu)化的方法。
背景技術(shù):
隨著企事業(yè)單位采用各種相互獨立的應(yīng)用系統(tǒng),在部分提高了效率的同時,這些 系統(tǒng)的相互獨立性也為整體管理設(shè)置了障礙,它們?nèi)狈σ粋€統(tǒng)一的界面,沒有相互連接的 信息渠道,數(shù)據(jù)通常都被封存在不同數(shù)據(jù)庫、主機(jī)、文件服務(wù)器上,只有少數(shù)有特許訪問權(quán) 的用戶能看到這些數(shù)據(jù)。這樣隨著時間的推移和技術(shù)的進(jìn)步,就形成了一系列的信息孤島,每個部門或單 位都是一個數(shù)據(jù)源,每個數(shù)據(jù)源都是異構(gòu)的,因而他們之間的信息和組織都不一樣,這就構(gòu) 成了一個巨大的異構(gòu)數(shù)據(jù)環(huán)境。但是,分散的數(shù)據(jù)之間又往往存在著千絲萬縷的聯(lián)系,數(shù)據(jù) 并非是存放在一個個毫無聯(lián)系的信息孤島上。用戶在具體應(yīng)用時,往往又需要將分散的數(shù) 據(jù)按某種需要進(jìn)行交換,以便了解整體情況。同時由于歷史的原因,各個部門在不同時期開 發(fā)的各個內(nèi)部系統(tǒng)之間存在著不可兼容性,而又不想全盤放棄造成浪費,所以如何有效的 實現(xiàn)這些異構(gòu)數(shù)據(jù)庫的信息集成共享,成了當(dāng)務(wù)之急。異構(gòu)數(shù)據(jù)庫的集成離不開當(dāng)前熱門 技術(shù)XML技術(shù),XML新技術(shù)的不斷涌現(xiàn),給數(shù)據(jù)集成注入了新的活力,異構(gòu)數(shù)據(jù)轉(zhuǎn)化為統(tǒng)一 的XML格式,通過對XML數(shù)據(jù)的查詢訪問,實現(xiàn)異構(gòu)數(shù)據(jù)庫信息共享。如何提高XML查詢訪 問速度,是異構(gòu)數(shù)據(jù)共享的關(guān)鍵問題和瓶頸。同時,為了提高XML的查詢速度效率,查詢重寫既可以在查詢的正文上實施,亦可 在句法分析樹上實施,但最方便的卻是在邏輯查詢計劃上實施。目前最常用的是視圖重寫 技術(shù),但視圖重寫技術(shù)有一些弊端。SQL語言是一個描述性的非過程化語言,用戶在寫SQL 語句的時候,不用知道要操縱的數(shù)據(jù)具體是如何存放的以及必須按照什么步驟才能進(jìn)行處 理,查詢處理器會自動完成這些工作。但是查詢語句操縱的數(shù)據(jù)庫對象除了可能是數(shù)據(jù)庫 的基本表以外,還可能是視圖,如果查詢處理器直接對視圖進(jìn)行操縱的話,查詢優(yōu)化器所能 生成的執(zhí)行計劃的唯一選擇就是先執(zhí)行視圖定義,再將視圖的查詢結(jié)果作為一個臨時表參 與查詢的其余處理,這種處理方式在絕大多數(shù)情況下效率極低。
發(fā)明內(nèi)容
本發(fā)明的目的是克服了上述現(xiàn)有技術(shù)中的缺點,提供一種能夠明顯提高XML的查 詢效率、將查詢語句的層次盡可能的減少,方便計劃優(yōu)化的處理、工作性能穩(wěn)定可靠、適用 范圍較為廣泛的基于子查詢實現(xiàn)數(shù)據(jù)源XML查詢系統(tǒng)優(yōu)化的方法。為了實現(xiàn)上述的目的,本發(fā)明的具有如下構(gòu)成該基于子查詢實現(xiàn)數(shù)據(jù)源XML查詢系統(tǒng)優(yōu)化的方法,該方法應(yīng)用于異構(gòu)數(shù)據(jù)源, 其主要特點是,所述的方法包括以下步驟(1)系統(tǒng)進(jìn)行初始化操作;
4
(2)系統(tǒng)根據(jù)用戶的輸入操作,接收到相應(yīng)的XML查詢輸入信息;(3)系統(tǒng)對所述的XML查詢輸入信息進(jìn)行詞法解析和語法解析,并驗證該XML查詢 輸入信息的正確性和有效性;(4)如果解析成功且驗證通過,則系統(tǒng)生成相應(yīng)的XML解析語法樹;(5)系統(tǒng)對所述的XML解析語法樹進(jìn)行翻譯,并將所述的XML查詢輸入信息轉(zhuǎn)換為 中間邏輯表示;(6)對所述的中間邏輯表示進(jìn)行重寫處理,并生成重寫后的目標(biāo)查詢表達(dá)式;(7)系統(tǒng)調(diào)用支持所述的目標(biāo)查詢表達(dá)式的查詢計算引擎進(jìn)行異構(gòu)數(shù)據(jù)源的查詢 計算,獲取并輸出相應(yīng)的查詢結(jié)果。該基于子查詢實現(xiàn)數(shù)據(jù)源XML查詢系統(tǒng)優(yōu)化的方法中的生成相應(yīng)的XML解析語法 樹,包括以下步驟(11)將XML查詢輸入信息進(jìn)行動態(tài)區(qū)間編碼;(12)生成目標(biāo)XML查詢輸入信息的的動態(tài)區(qū)間編碼表;(13)把XML查詢輸入信息中盡可能多的信息存儲到關(guān)系數(shù)據(jù)庫中,從而得到XML 解析語法樹。該基于子查詢實現(xiàn)數(shù)據(jù)源XML查詢系統(tǒng)優(yōu)化的方法中的將XML查詢輸入信息轉(zhuǎn)換 為中間邏輯表示,具體為分別針對所述的XML查詢輸入信息中的各個查詢成分生成相應(yīng)的關(guān)系視圖模板。該基于子查詢實現(xiàn)數(shù)據(jù)源XML查詢系統(tǒng)優(yōu)化的方法中的查詢成分包括各種操作 符、FLffOR表達(dá)式中的內(nèi)置函數(shù)、賦值表達(dá)式、條件表達(dá)式和循環(huán)表達(dá)式。該基于子查詢實現(xiàn)數(shù)據(jù)源XML查詢系統(tǒng)優(yōu)化的方法中的對中間邏輯表示進(jìn)行重 寫處理,包括子查詢合并處理操作和等價謂詞重寫轉(zhuǎn)換處理操作。該基于子查詢實現(xiàn)數(shù)據(jù)源XML查詢系統(tǒng)優(yōu)化的方法中的子查詢合并處理操作,包 括以下步驟(21)系統(tǒng)將所述的中間邏輯表示中的子查詢和外層查詢的FROM子句連接為同一 個FROM子句,并且修改相應(yīng)的運行參數(shù);(22)系統(tǒng)將所述的中間邏輯表示中的子查詢的謂詞符號作相應(yīng)修改;(23)系統(tǒng)將所述的中間邏輯表示中的子查詢的WHERE條件作為一個整體與外層 查詢的WHERE條件相合并,并用AND條件連接詞進(jìn)行連接。該基于子查詢實現(xiàn)數(shù)據(jù)源XML查詢系統(tǒng)優(yōu)化的方法中的將謂詞符號作相應(yīng)修改, 具體為將謂詞符號“ IN”修改為“=”。該基于子查詢實現(xiàn)數(shù)據(jù)源XML查詢系統(tǒng)優(yōu)化的方法中的等價謂詞重寫轉(zhuǎn)換處理 操作,包括以下步驟(31)系統(tǒng)將所述的中間邏輯表示中的多個OR連接的謂詞表達(dá)式轉(zhuǎn)化為ANY表達(dá) 式;(32)系統(tǒng)將所述的中間邏輯表示中的ANY表達(dá)式或All表達(dá)式轉(zhuǎn)化為單個值;(33)系統(tǒng)將所述的中間邏輯表示中的BETWEEN表達(dá)式轉(zhuǎn)化為AND連接的謂詞表達(dá) 式;
(34)系統(tǒng)將所述的中間邏輯表示中的IN謂詞表達(dá)式擴(kuò)展為OR連接的謂詞表達(dá)式。該基于子查詢實現(xiàn)數(shù)據(jù)源XML查詢系統(tǒng)優(yōu)化的方法中的生成重寫后的目標(biāo)查詢 表達(dá)式,具體為系統(tǒng)將所述的關(guān)系視圖模板進(jìn)行組合,并構(gòu)成與該關(guān)系視圖模板相等價的SQL查 詢表達(dá)式。該基于子查詢實現(xiàn)數(shù)據(jù)源XML查詢系統(tǒng)優(yōu)化的方法中的XML查詢輸入信息為 XQuery 文檔。該基于子查詢實現(xiàn)數(shù)據(jù)源XML查詢系統(tǒng)優(yōu)化的方法中的XML解析語法樹為XQuery 解析語法樹。采用了該發(fā)明的基于子查詢實現(xiàn)數(shù)據(jù)源XML查詢系統(tǒng)優(yōu)化的方法,由于在用戶提 供的查詢蘊含了過程性,從而可以利用查詢重寫將過程性查詢轉(zhuǎn)化為描述性的,并對視圖 進(jìn)行重寫,將對視圖的引用重寫為對視圖涉及到的基表的引用,同時優(yōu)化了子查詢,得到一 個語義上完全等價的查詢,從而方便了優(yōu)化器對其作進(jìn)一步的優(yōu)化,同時通過子查詢合并 將某些特定的子查詢重寫為等價的多個表的連接操作,從而將查詢語句的層次盡可能的減 少,方便了計劃優(yōu)化的處理,工作性能穩(wěn)定可靠,適用范圍較為廣泛。
圖1為本發(fā)明的基于子查詢實現(xiàn)數(shù)據(jù)源XML查詢系統(tǒng)優(yōu)化的方法中XML查詢處理 過程示意圖。圖2為本發(fā)明的基于子查詢實現(xiàn)數(shù)據(jù)源XML查詢系統(tǒng)優(yōu)化的方法中XML查詢重寫 處理過程示意圖。
具體實施例方式為了能夠更清楚地理解本發(fā)明的技術(shù)內(nèi)容,特舉以下實施例詳細(xì)說明。請參閱圖1和圖2所示,其中XQGM(XML Query Graph Model)為擴(kuò)展標(biāo)記語言查 詢圖表模式;異構(gòu)點元組(tuples),表示異構(gòu)數(shù)據(jù)庫信息點的元組。該基于子查詢實現(xiàn)數(shù)據(jù)源XML查詢系統(tǒng)優(yōu)化的方法,該方法應(yīng)用于異構(gòu)數(shù)據(jù)源, 其中包括以下步驟(1)系統(tǒng)進(jìn)行初始化操作;(2)系統(tǒng)根據(jù)用戶的輸入操作,接收到相應(yīng)的XML查詢輸入信息;(3)系統(tǒng)對所述的XML查詢輸入信息進(jìn)行詞法解析和語法解析,并驗證該XML查詢 輸入信息的正確性和有效性;(4)如果解析成功且驗證通過,則系統(tǒng)生成相應(yīng)的XML解析語法樹,包括以下步 驟(a)將XML查詢輸入信息進(jìn)行動態(tài)區(qū)間編碼;(b)生成目標(biāo)XML查詢輸入信息的的動態(tài)區(qū)間編碼表;(c)把XML查詢輸入信息中盡可能多的信息存儲到關(guān)系數(shù)據(jù)庫中,從而得到XML解 析語法樹;
6
(5)系統(tǒng)對所述的XML解析語法樹進(jìn)行翻譯,并將所述的XML查詢輸入信息轉(zhuǎn)換為 中間邏輯表示,具體為分別針對所述的XML查詢輸入信息中的各個查詢成分生成相應(yīng)的關(guān)系視圖模板;所述的查詢成分包括各種操作符、FLWOR表達(dá)式中的內(nèi)置函數(shù)、賦值表達(dá)式、條件 表達(dá)式和循環(huán)表達(dá)式;(6)對所述的中間邏輯表示進(jìn)行重寫處理,并生成重寫后的目標(biāo)查詢表達(dá)式;該 對中間邏輯表示進(jìn)行重寫處理,包括子查詢合并處理操作和等價謂詞重寫轉(zhuǎn)換處理操作, 其中所述的子查詢合并處理操作,包括以下步驟(a)系統(tǒng)將所述的中間邏輯表示中的子查詢和外層查詢的FROM子句連接為同一 個FROM子句,并且修改相應(yīng)的運行參數(shù);(b)系統(tǒng)將所述的中間邏輯表示中的子查詢的謂詞符號作相應(yīng)修改;將謂詞符號 作相應(yīng)修改,具體為將謂詞符號“ IN”修改為“=”;(c)系統(tǒng)將所述的中間邏輯表示中的子查詢的WHERE條件作為一個整體與外層查 詢的WHERE條件相合并,并用AND條件連接詞進(jìn)行連接;該等價謂詞重寫轉(zhuǎn)換處理操作,包括以下步驟(a)系統(tǒng)將所述的中間邏輯表示中的多個OR連接的謂詞表達(dá)式轉(zhuǎn)化為ANY表達(dá) 式;(b)系統(tǒng)將所述的中間邏輯表示中的ANY表達(dá)式或All表達(dá)式轉(zhuǎn)化為單個值;(c)系統(tǒng)將所述的中間邏輯表示中的BETWEEN表達(dá)式轉(zhuǎn)化為AND連接的謂詞表達(dá) 式;(d)系統(tǒng)將所述的中間邏輯表示中的IN謂詞表達(dá)式擴(kuò)展為OR連接的謂詞表達(dá)式; 同時,該生成重寫后的目標(biāo)查詢表達(dá)式,具體為系統(tǒng)將所述的關(guān)系視圖模板進(jìn)行組合,并構(gòu)成與該關(guān)系視圖模板相等價的SQL查 詢表達(dá)式;(7)系統(tǒng)調(diào)用支持所述的目標(biāo)查詢表達(dá)式的查詢計算引擎進(jìn)行異構(gòu)數(shù)據(jù)源的查詢 計算,獲取并輸出相應(yīng)的查詢結(jié)果。同時,該基于子查詢實現(xiàn)數(shù)據(jù)源XML查詢系統(tǒng)優(yōu)化的方法中的XML查詢輸入信息 為XQuery文檔,所述的XML解析語法樹為XQuery解析語法樹。在實際使用當(dāng)中,針對XML查詢優(yōu)化,提高XML的查詢效率,本發(fā)明主要涉及優(yōu)化 子查詢的兩種方法,第一是子查詢合并,第二是等價謂詞重寫。子查詢合并是將某些特定的 子查詢重寫為等價的多個表的連接操作。一般來講,計劃優(yōu)化只對同一層次上的查詢所生 成的計劃進(jìn)行評估和優(yōu)化,子查詢合并的作用在于將查詢語句的層次盡可能的減少,從而 方便計劃優(yōu)化的處理。在此子查詢合并應(yīng)遵循的三條原則是(1)如果外層查詢的結(jié)果沒有重復(fù),即SELECT子句中包含,則可以合并其子查詢, 并且合并后的查詢的SELECT子句前應(yīng)加上DISTINCT標(biāo)志;(2)如果外層查詢的SELECT子句中有DISTINCT標(biāo)志,那么我們可以直接進(jìn)行子查 詢合并;
7
(3)如果內(nèi)層查詢結(jié)果沒有重復(fù)元組,則可以合并。子查詢合并的具體步驟如下(1)將子查詢和外層查詢的FROM子句連接為同一個FROM子句,并且修改相應(yīng)的運 行參數(shù);(2)將子查詢的謂詞符號作相應(yīng)修改,例如將“IN”修改為“=”;(3)將子查詢的WHERE條件作為一個整體與外層查詢的WHERE條件合并,并用AND 條件連接詞連接,從而保證新生成的謂詞與原謂詞的上下文意思相同,且成為一個整體。其次是等價謂詞重寫。由于執(zhí)行引擎對各種謂詞的處理方法不同,因此把邏輯表 達(dá)式重寫成等價的且效率較高的表達(dá)式,是提高效率的有效方法。在此提出的謂詞轉(zhuǎn)換規(guī)則有(1)將多個OR連接的謂詞轉(zhuǎn)化為ANY表達(dá)式;(2)將ANY或All轉(zhuǎn)化為單個值;(3)將BETWEEN轉(zhuǎn)化為AND連接的謂詞;(4)將IN謂詞表達(dá)式擴(kuò)展為OR連接的謂詞表達(dá)式。通常,謂詞重寫對提高查詢的執(zhí)行效率是很有幫助的,特別是當(dāng)多個重寫規(guī)則均 可使用時,效率的提高往往能達(dá)到上百甚至上千倍。但另一方面對子查詢重寫的情況比較 少。事實上,子查詢重寫主要是用來將查詢轉(zhuǎn)化為單個查詢語句,盡量減少查詢嵌套的層 次,為計劃優(yōu)化階段做準(zhǔn)備的。查詢重寫目標(biāo)有兩個(1)使查詢盡可能是描述性的,用戶書寫的查詢語句表面上看是描述性的,但實際 上有些部分是過程性的,這樣會使得數(shù)據(jù)庫的查詢優(yōu)化器不能夠選出該查詢的最優(yōu)執(zhí)行計 劃。所以,查詢重寫的一個主要目標(biāo)是將過程性的查詢轉(zhuǎn)化為描述性的等價查詢。(2)完成自然的啟發(fā)式優(yōu)化一些被公認(rèn)為有價值的啟發(fā)式規(guī)則可以用查詢重寫來 完成,如低效率的謂詞轉(zhuǎn)化為效率較高的謂詞。這類規(guī)則可以顯著地提高查詢執(zhí)行的效率, 減少查詢執(zhí)行的時間。使用視圖重寫查詢是最近十幾年內(nèi)提出的專利研究成果也不是很多。對于部分物 化視圖的重寫可能是一個易于實現(xiàn)、且較為實際的思想。直觀的,這種思想是找出查詢中的 變量與視圖定義中的變量相互之間的一種映射。如果對所有的變量存在一個映射,則可將 查詢的選擇“推入”視圖定義中,然后對重寫的視圖(希望更小)進(jìn)行物化以對查詢進(jìn)行求值。使用視圖重寫查詢方法與傳統(tǒng)查詢重寫方法相比在效率上要稍差一些,因為使用 視圖重寫查詢需要視圖的部分物化且需要在其物化上執(zhí)行原始查詢;但是傳統(tǒng)查詢重寫技 術(shù)卻需要對一查詢進(jìn)行優(yōu)化(可能很大),而這有時可能是行不通的。使用視圖重寫查詢方 法的缺點是,當(dāng)在原始視圖上回答子查詢時,有時可能希望對這些視圖片段進(jìn)行重用。使用 部分物化視圖很難實現(xiàn)這一點,這甚至比在關(guān)系數(shù)據(jù)庫中使用更具有挑戰(zhàn)性。首先給出使用查詢重寫中的一些相關(guān)概念。這里使用Datalog表達(dá)形式定義查 詢,其形式如下q(X) ^Pl(Y1)M--Pn(Yn)......(1-1)式(1-1)中,.....Pn均是謂詞名稱,q代表查詢結(jié)果關(guān)系,P1.....Pn指向數(shù)據(jù)庫中的關(guān)系。q(X)稱為查詢頭,其余部分稱為查詢體,P1 (Y1).....Pn(Yn)稱為查詢體
中的基本式。元組X、Yi.....Yn僅包含變量或常量。如果ZeKU…Ui;,即出現(xiàn)在查詢頭
中的每個變量也必須出現(xiàn)在查詢體中,則稱查詢是安全的。查詢體中可以含有帶比較謂詞(<、彡、=、興、彡、>)的基本式。這種情況下,我 們要求如果一個變量X出現(xiàn)在含有比較謂詞的基本式中,它也必須出現(xiàn)在普通基本式中。 另外,在討論時通常用Q(D)表示計算對數(shù)據(jù)庫實例D的查詢得到的結(jié)果。定義1. 1 查詢包含和查詢等價。如果對于所有數(shù)據(jù)庫實例D,計算一個查詢Ql得 到的結(jié)果集都是計算另一個查詢Q2得到的結(jié)果集的子集,即QOD) 口 aOD),則稱Q1包含于 Q2,記作β [ Q2 ;如果S [02且02 [Q,則稱Q1和Q2是等價的,記作Q1 = Q20定義1.2:等價重寫、局部最小重寫、全局最小重寫和完全重寫。給定一個查詢Q和 一個視圖集V = (V1, . . .,Vm),如果一個查詢E滿足(I)E中僅包含出現(xiàn)在V中的基本式或比較謂詞;(2) E和Q是等價的,即E和Q對任何數(shù)據(jù)庫實例都產(chǎn)生相同的結(jié)果,則稱E是Q基 于V的一個等價重寫。在保證E和Q等價的前提下,如果不能再從E中消除任何基本式,則稱重寫E是局 部最小的;同樣前提下,如果E是含有基本式最少的重寫,則稱重寫E是全局最小的。例1. 1 對于給定的查詢Q和視圖V,其形式如下Q :q(X, U) -P (X,Y),p0 (Y,Z),P1 (X,W),p2 (W, U)V :v (A, B) -P (A, C),p0 (C,B),Pl (A, D)下面的查詢E是查詢Q基于視圖V的一個等價重寫E :q(X, U) :-V(X, Ζ), Pl(X,ff), p2 (W, U)如果查詢Q基于視圖集V的一個重寫E中僅包含V中基本式或內(nèi)置謂詞,則稱E 是Q的一個完全重寫。例1. 2 對于例11中的查詢Q、視圖V,當(dāng)給定如下的視圖Vl時Vl :vl(A, B) :-Pl(A,C),p2(C,B),p0(D,E)下面的查詢E是Q基于V和V1的一個完全重寫E:q(X, U) -v (Χ, Ζ) , V1 (X, U)這里需要說明的是,整個重寫過程并不是單步進(jìn)行的,即并不是先使用視圖V進(jìn) 行重寫,然后再合并V1和剛才的結(jié)果來得到最終重寫E的;使用V和V1兩個視圖進(jìn)行重寫 的過程是并行進(jìn)行的。定義1. 3 包含映射。就形式而言,一個查詢Q1到另一個查詢Q2的包含映射是指 從Q1到Q2的變量映射,以使Q1中每一個基本式能映射到Q2中每一個基本式上。實際上,為 了表明Q1包含Q2,包含映射還應(yīng)該包含從Q1查詢頭到Q2查詢頭的映射。但這里為了討論 方便,包含映射僅指從Q1查詢體到Q2查詢體的映射。包含映射多用來表示合取查詢之間的包含關(guān)系,而查詢包含又與求解一個查詢的 重寫密切相關(guān)。例1. 1中查詢重寫的正確性可由包含映射{Α- > X,B- > Ζ,C- > Y,D- > W}得到證明。當(dāng)查詢Q1和Q2中均不含內(nèi)置謂詞時,找到Q1到Q2的一個包含映射是確定Q1包含 Q2的一個充要條件,并且該問題是一個NP—完全問題,該結(jié)論對于Q2中含有內(nèi)置謂詞的情
9況也是成立的。但是當(dāng)Q1中含有內(nèi)置謂詞時,找到一個Q1到Q2的包含映射只是確定Q1包 含Q2的充分條件。下面給出幾個描述使用查詢重寫方法存在和求解的定理定理11 設(shè)查詢Q和視圖ν都是含有內(nèi)置謂詞的合取查詢,則存在一個Q基于ν
的重寫當(dāng)且僅當(dāng) /β) 口 η/「),即Q在列空集上的投影包含于ν在列空集上的投影。這
里,η/β) 口 意味著對于一個給定數(shù)據(jù)庫實例,如果ν的查詢結(jié)果是空集,則Q的查 詢結(jié)果也是空集。定理1.2:給定查詢Q如式(1-1)和視圖集V,兩者均不含內(nèi)置謂詞(1)如果E是Q基于ν的一個局部最小重寫,則E中數(shù)據(jù)庫一關(guān)系基本式集與Q的 一個基本式子集同構(gòu);(2)如果 Q 基于 ν 的一個重寫形式如 q ⑴卞(Y1),... Pn (Yn),V1 (Z1),...,vk (Zk), 則還存在Q基于ν的一個形式如下的重寫q(x) ^P1(Y1),. . .,Pn(Yn),V1(U1),. . .,Vk(Uk)。 這里{《U…U } 口 { ; U…U ;},即該重寫沒有引入任何新變量;(3)如果Q和ν中含有內(nèi)置謂詞,則存在一個類似(2)中給出的重寫,唯一不同之 處在于重寫可能是合取查詢的連接。定理1.2表明,對于一個查詢總能找到它的一個不引入新變量的重寫,所以在求 解一個查詢的重寫時,不必考慮那些含有原始查詢中未曾出現(xiàn)過的數(shù)據(jù)庫一關(guān)系基本式變 量的重寫,只考慮包含視圖基本式和原始查詢基本式子集的重寫即可。但是當(dāng)視圖中包含 內(nèi)置謂詞時,定理1.2中(2)是不成立的,舉例1.3說明。例1. 3 對于給定查詢 Q :q(X, Y,U,W) -p (X, Y),r(U, W),r(ff, U)和視圖 V :v(A, B,C,D) :-p(A,B),r (C,D),C彡D,不存在Q基于V的不引入新變量的合取查詢重寫。但是,E:q(X,Y,U,W) :_v(X,Y,C,D),r(U,W),r(W,U)是 Q 基于 V 的一個重寫。進(jìn) 一步,Q基于V的不引入新變量的析取重寫是Q' :q(X, Y, U, W) -v(X, Y, U, W), r (W, U)Q' :q(X, Y, U, w) -v(Χ, Y, U, W), r (U, W)使用視圖重寫查詢的一個重要目的是為了降低計算原始查詢的代價。因此,為了 優(yōu)化一個查詢,不僅需要找到一個查詢的重寫,還應(yīng)該求解出該查詢的最小重寫。接下來討 論有關(guān)減少重寫查詢中冗余基本式數(shù)目,求解最小重寫的方法及其復(fù)雜性問題。最后,揭示 求解最小重寫問題有兩個獨立的復(fù)雜性來源。定理1. 3 設(shè)查詢Q如式(1-1),V是一個視圖集,Q和V均不含內(nèi)置謂詞。如果Q 中有P個基本式,E是Q基于視圖集V的一個局部最小完全重寫,則E中最多有P個基本式。證明設(shè)E’是Q的一個重寫E的擴(kuò)展,E中的視圖基本式均被相應(yīng)的視圖定義替 換??紤]從Q到E’的包含映射M, Q中每個基本式L1,...,Lp被映射到E’中最多一個視圖 基本式的擴(kuò)展上。如果E中存在多于ρ個的視圖基本式,則E’中一定存在某個視圖基本式 的擴(kuò)展不和M的映像相交。若相交,在保證E與Q的等價性時,這個視圖基本式可以被消除。 因此,存在的重寫最多有P個視圖基本式。因為在V中總能找到與數(shù)據(jù)庫中關(guān)系一致的視圖,故該定理保證了 Q的任何局部 最小重寫都最多有P個基本式,并表明Q基于視圖集V的最小重寫不會增加查詢中基本式的數(shù)目。為求得一個查詢的最小重寫,需要盡最大可能消除重寫后查詢中的冗余基本式, 從而確定查詢Q的必要基本式集(查詢Q的冗余基本式集與其必要基本式集互為補(bǔ)集)。 下面介紹一下如何確定重寫后查詢中的冗余基本式。給定查詢Q形式如式(1-1),視圖定義 如下V:v(U) =T1 (W1),... ,rm(ffm)......(1-2)設(shè)h是從ν到q的一個包含映射,增加視圖V中合適的基本式到查詢Q中得到的 結(jié)果如下q(X) ^P1G1),…,pn(Yn),V(Z)......(1-3)這里Z = h(U)。用式(1-2)中的視圖定義替換式(1-3)中的視圖基本式,在替換 過程中,按如下規(guī)則重命名式(1-2)中變量出現(xiàn)在U中的每個變量T被重命名為h(T),未 曾出現(xiàn)在U中的變量被重命名為一個Pi (Yi)中沒有的新變量。結(jié)果如下q(X) ^p1(Y1), ... ,Pn(Yn)5T1 (V1)rm (Vm)......(1-4)說明,整個過程中,Z中變量是唯一既出現(xiàn)在Pi (Yi)中又出現(xiàn)在Tj(Vj)中的變量。給定映射h,存在一個從式(1-4)到式(1-1)的定義如下的自然包含映射Φ,在這 個映射Φ中,每個基本SPi(Yi)被映射到其本身,每個基本式& (^)被映射到在映射h下 映射到的式(1-1)中的同一個基本式上。這里,包含映射φ映射Z中的每個變量到其自身。式(1-1)中的每個基本Spi(Yi)在Φ下的映像都是其自身或Tj(Wj)中的一些基 本式。我們稱在Φ下映射到Pi (Yi)的基本式Spi(Yi)的關(guān)聯(lián)基本式。如果h不映 射中的兩個基本式到式(1-1)中的同一個基本式上,則每APi(Yi)最多有一個關(guān)聯(lián) 式。子查詢合并的具體步驟如下(1)將子查詢和外層查詢的FROM子句連接為同一個FROM子句,并且修改相應(yīng)的運 行參數(shù);(2)將子查詢的謂詞符號作相應(yīng)修改,例如將“IN”修改為“=”;(3)將子查詢的WHERE條件作為一個整體與外層查詢的WHERE條件合并,并用AND 條件連接詞連接,從而保證新生成的謂詞與原謂詞的上下文意思相同,且成為一個整體。等價謂詞重寫轉(zhuǎn)換規(guī)則有(1)將多個OR連接的謂詞轉(zhuǎn)化為ANY表達(dá)式;(2)將ANY或All轉(zhuǎn)化為單個值;(3)將BETWEEN轉(zhuǎn)化為AND連接的謂詞;(4)將IN謂詞表達(dá)式擴(kuò)展為OR連接的謂詞表達(dá)式。目前的查詢優(yōu)化處理通常包含兩個階段第一階段稱為查詢重寫,這一階段對查 詢的內(nèi)部表示進(jìn)行分析,并根據(jù)需要作一些等價變換,其目的是為了將查詢變換為效率更 高的形式,另一方面也為查詢優(yōu)化的第二階段提供必要的準(zhǔn)備;第二階段稱之為計劃優(yōu)化, 這是優(yōu)化的主要階段,它決定查詢執(zhí)行計劃中的連接次序和連接方法以及使用什么樣的存 取方法。查詢重寫是查詢的一種等價轉(zhuǎn)換,用來將一種邏輯查詢計劃變換成另一種不同的、 但語義上等價的邏輯查詢計劃,其首要目的是使得重寫后的邏輯查詢計劃比重寫前的查詢 計劃在執(zhí)行性能上具有更高的效率。另一方面,出于采用查詢重寫和計劃優(yōu)化相結(jié)合的原
11則來構(gòu)造查詢優(yōu)化器。XML查詢重寫是個NP問題,可以從多個方向加以研究,例如,可以討論如何高效快 速地完成重寫過程,還可以討論如何利用視圖回答盡可能多的查詢。通常,一個XML查詢重 寫的實現(xiàn)過程如圖1所示,主要經(jīng)過如下幾步處理(1)對用戶XQuery文檔進(jìn)行詞法、語法解析,驗證XQuery文檔的正確性和有效性, 產(chǎn)生一個XQuery解析語法樹;(2)對解析后的XQuery語法樹進(jìn)行翻譯,將XQuery查詢表示為一種中間邏輯表 示;(3)重寫(2)中中間邏輯表示,生成期望的重寫后的目標(biāo)查詢表達(dá)式;(4)使用支持重寫后得到的目標(biāo)查詢表達(dá)式的查詢計算引擎進(jìn)行查詢計算,得到 查詢結(jié)果。由于XML數(shù)據(jù)多為半結(jié)構(gòu)化數(shù)據(jù),其數(shù)據(jù)模型與傳統(tǒng)數(shù)據(jù)庫的數(shù)據(jù)模型不同,因 此傳統(tǒng)數(shù)據(jù)庫的有關(guān)查詢重寫技術(shù)不能直接應(yīng)用到XML查詢中。雖然傳統(tǒng)的查詢重寫方法 不能直接應(yīng)用到XML查詢重寫中,但是在研究過程中可以借鑒其中的重寫思路和已有研究 成果。例如,可以采用基于視圖的思想來重寫或回答一個XML查詢。作為本發(fā)明的一種動態(tài) 區(qū)間編碼思想,其思路是首先對一篇XML文檔進(jìn)行動態(tài)區(qū)間編碼,生成目標(biāo)XML文檔的動態(tài) 區(qū)間編碼表,從而把XML文檔中盡可能多的信息存儲到關(guān)系數(shù)據(jù)庫中;然后,對用戶XQuery 查詢中的每個查詢成分(例如各種操作符、FLWOR表達(dá)式中的內(nèi)置函數(shù)、賦值表達(dá)式、條件 表達(dá)式和循環(huán)表達(dá)式等)都生成相應(yīng)的關(guān)系視圖模板;最后組合這些模板構(gòu)成與之等價的 SQL查詢,利用關(guān)系數(shù)據(jù)庫引擎實現(xiàn)查詢。采用了上述的基于子查詢實現(xiàn)數(shù)據(jù)源XML查詢系統(tǒng)優(yōu)化的方法,由于在用戶提供 的查詢蘊含了過程性,從而可以利用查詢重寫將過程性查詢轉(zhuǎn)化為描述性的,并對視圖進(jìn) 行重寫,將對視圖的引用重寫為對視圖涉及到的基表的引用,同時優(yōu)化了子查詢,得到一個 語義上完全等價的查詢,從而方便了優(yōu)化器對其作進(jìn)一步的優(yōu)化,同時通過子查詢合并將 某些特定的子查詢重寫為等價的多個表的連接操作,從而將查詢語句的層次盡可能的減 少,方便了計劃優(yōu)化的處理,工作性能穩(wěn)定可靠,適用范圍較為廣泛。在此說明書中,本發(fā)明已參照其特定的實施例作了描述。但是,很顯然仍可以作出 各種修改和變換而不背離本發(fā)明的精神和范圍。因此,說明書和附圖應(yīng)被認(rèn)為是說明性的 而非限制性的。
1權(quán)利要求
一種基于子查詢實現(xiàn)數(shù)據(jù)源XML查詢系統(tǒng)優(yōu)化的方法,該方法應(yīng)用于異構(gòu)數(shù)據(jù)源,其特征在于,所述的方法包括以下步驟(1)系統(tǒng)進(jìn)行初始化操作;(2)系統(tǒng)根據(jù)用戶的輸入操作,接收到相應(yīng)的XML查詢輸入信息;(3)系統(tǒng)對所述的XML查詢輸入信息進(jìn)行詞法解析和語法解析,并驗證該XML查詢輸入信息的正確性和有效性;(4)如果解析成功且驗證通過,則系統(tǒng)生成相應(yīng)的XML解析語法樹;(5)系統(tǒng)對所述的XML解析語法樹進(jìn)行翻譯,并將所述的XML查詢輸入信息轉(zhuǎn)換為中間邏輯表示;(6)對所述的中間邏輯表示進(jìn)行重寫處理,并生成重寫后的目標(biāo)查詢表達(dá)式;(7)系統(tǒng)調(diào)用支持所述的目標(biāo)查詢表達(dá)式的查詢計算引擎進(jìn)行異構(gòu)數(shù)據(jù)源的查詢計算,獲取并輸出相應(yīng)的查詢結(jié)果。
2.根據(jù)權(quán)利要求1所述的基于子查詢實現(xiàn)數(shù)據(jù)源XML查詢系統(tǒng)優(yōu)化的方法,其特征在 于,所述的生成相應(yīng)的XML解析語法樹,包括以下步驟(11)將XML查詢輸入信息進(jìn)行動態(tài)區(qū)間編碼;(12)生成目標(biāo)XML查詢輸入信息的的動態(tài)區(qū)間編碼表;(13)把XML查詢輸入信息中盡可能多的信息存儲到關(guān)系數(shù)據(jù)庫中,從而得到XML解析 語法樹。
3.根據(jù)權(quán)利要求2所述的基于子查詢實現(xiàn)數(shù)據(jù)源XML查詢系統(tǒng)優(yōu)化的方法,其特征在 于,所述的將XML查詢輸入信息轉(zhuǎn)換為中間邏輯表示,具體為分別針對所述的XML查詢輸入信息中的各個查詢成分生成相應(yīng)的關(guān)系視圖模板。
4.根據(jù)權(quán)利要求3所述的基于子查詢實現(xiàn)數(shù)據(jù)源XML查詢系統(tǒng)優(yōu)化的方法,其特征在 于,所述的查詢成分包括各種操作符、FLWOR表達(dá)式中的內(nèi)置函數(shù)、賦值表達(dá)式、條件表達(dá)式 和循環(huán)表達(dá)式。
5.根據(jù)權(quán)利要求1所述的基于子查詢實現(xiàn)數(shù)據(jù)源XML查詢系統(tǒng)優(yōu)化的方法,其特征在 于,所述的對中間邏輯表示進(jìn)行重寫處理,包括子查詢合并處理操作和等價謂詞重寫轉(zhuǎn)換 處理操作。
6.根據(jù)權(quán)利要求5所述的基于子查詢實現(xiàn)數(shù)據(jù)源XML查詢系統(tǒng)優(yōu)化的方法,其特征在 于,所述的子查詢合并處理操作,包括以下步驟(21)系統(tǒng)將所述的中間邏輯表示中的子查詢和外層查詢的FROM子句連接為同一個 FROM子句,并且修改相應(yīng)的運行參數(shù);(22)系統(tǒng)將所述的中間邏輯表示中的子查詢的謂詞符號作相應(yīng)修改;(23)系統(tǒng)將所述的中間邏輯表示中的子查詢的WHERE條件作為一個整體與外層查詢 的WHERE條件相合并,并用AND條件連接詞進(jìn)行連接。
7.根據(jù)權(quán)利要求6所述的基于子查詢實現(xiàn)數(shù)據(jù)源XML查詢系統(tǒng)優(yōu)化的方法,其特征在 于,所述的將謂詞符號作相應(yīng)修改,具體為將謂詞符號“IN”修改為“=”。
8.根據(jù)權(quán)利要求5所述的基于子查詢實現(xiàn)數(shù)據(jù)源XML查詢系統(tǒng)優(yōu)化的方法,其特征在 于,所述的等價謂詞重寫轉(zhuǎn)換處理操作,包括以下步驟(31)系統(tǒng)將所述的中間邏輯表示中的多個OR連接的謂詞表達(dá)式轉(zhuǎn)化為ANY表達(dá)式;(32)系統(tǒng)將所述的中間邏輯表示中的ANY表達(dá)式或All表達(dá)式轉(zhuǎn)化為單個值;(33)系統(tǒng)將所述的中間邏輯表示中的BETWEEN表達(dá)式轉(zhuǎn)化為AND連接的謂詞表達(dá)式;(34)系統(tǒng)將所述的中間邏輯表示中的IN謂詞表達(dá)式擴(kuò)展為OR連接的謂詞表達(dá)式。
9.根據(jù)權(quán)利要求3所述的基于子查詢實現(xiàn)數(shù)據(jù)源XML查詢系統(tǒng)優(yōu)化的方法,其特征在 于,所述的生成重寫后的目標(biāo)查詢表達(dá)式,具體為系統(tǒng)將所述的關(guān)系視圖模板進(jìn)行組合,并構(gòu)成與該關(guān)系視圖模板相等價的SQL查詢表 達(dá)式。
10.根據(jù)權(quán)利要求1至9中任一項所述的基于子查詢實現(xiàn)數(shù)據(jù)源XML查詢系統(tǒng)優(yōu)化的 方法,其特征在于,所述的XML查詢輸入信息為XQuery文檔。
11.根據(jù)權(quán)利要求10所述的基于子查詢實現(xiàn)數(shù)據(jù)源XML查詢系統(tǒng)優(yōu)化的方法,其特征 在于,所述的XML解析語法樹為XQuery解析語法樹。
全文摘要
本發(fā)明涉及一種基于子查詢實現(xiàn)數(shù)據(jù)源XML查詢系統(tǒng)優(yōu)化的方法,包括接收到相應(yīng)的XML查詢輸入信息、進(jìn)行詞法解析和語法解析并驗證正確性和有效性、解析成功且驗證通過則生成XML解析語法樹、對XML解析語法樹進(jìn)行翻譯并將XML查詢輸入信息轉(zhuǎn)換為中間邏輯表示、進(jìn)行重寫處理并生成目標(biāo)查詢表達(dá)式、調(diào)用支持的查詢計算引擎進(jìn)行查詢計算并獲取輸出查詢結(jié)果。采用該種基于子查詢實現(xiàn)數(shù)據(jù)源XML查詢系統(tǒng)優(yōu)化的方法,可以利用查詢重寫將過程性查詢轉(zhuǎn)化為描述性的,優(yōu)化了子查詢,通過子查詢合并將某些特定的子查詢重寫為等價的多個表的連接操作,從而將查詢語句的層次盡可能的減少,方便了計劃優(yōu)化的處理,工作性能穩(wěn)定可靠,適用范圍較為廣泛。
文檔編號G06F17/30GK101984439SQ20101058067
公開日2011年3月9日 申請日期2010年12月9日 優(yōu)先權(quán)日2010年12月9日
發(fā)明者嚴(yán)營, 文緯, 楊昆 申請人:上海市共進(jìn)通信技術(shù)有限公司