專(zhuān)利名稱(chēng):自動(dòng)生成查詢(xún)歷程的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于自動(dòng)生成查詢(xún)歷程(query lineage)的系統(tǒng)、方法及計(jì)算機(jī)程序產(chǎn)品。
背景技術(shù):
在生成用于數(shù)據(jù)庫(kù)查詢(xún)的執(zhí)行計(jì)劃的查詢(xún)計(jì)劃及優(yōu)化階段期間,通常以某種形式的樹(shù)來(lái)表示查詢(xún)。將規(guī)則應(yīng)用于查詢(xún)樹(shù),所述規(guī)則首先確保取回正確的數(shù)據(jù),其次盡可能高效而快速地取回?cái)?shù)據(jù)。這些規(guī)則確保在應(yīng)用規(guī)則之前和之后,查詢(xún)樹(shù)的語(yǔ)義等價(jià)。在此過(guò)程期間的任何時(shí)候,可能需要能夠確定原始查詢(xún)中的構(gòu)造與在查詢(xún)樹(shù)的當(dāng)前狀態(tài)下與該構(gòu)造有關(guān)的事物之間的關(guān)系,以及類(lèi)似地確定當(dāng)前查詢(xún)樹(shù)中的構(gòu)造與原始查詢(xún)中的構(gòu)造之間的關(guān)系。此信息稱(chēng)為“歷程”且允許查詢(xún)樹(shù)內(nèi)的任何對(duì)象追溯其在原始查詢(xún)中的祖先(其“歷程”)。
發(fā)明內(nèi)容
在一個(gè)示意性實(shí)施例中,提供ー種生成查詢(xún)歷程的方法。所述方法包括在處理器上執(zhí)行;評(píng)估查詢(xún)樹(shù)信息和對(duì)查詢(xún)樹(shù)執(zhí)行的操作中的至少ー個(gè),其中所述查詢(xún)樹(shù)包括ー個(gè)或多個(gè)節(jié)點(diǎn);基于查詢(xún)樹(shù)信息和操作中的所述至少一個(gè)來(lái)識(shí)別歷程規(guī)則;以及基于所述歷程規(guī)則而生成所述查詢(xún)樹(shù)的歷程。從第一方面看,本發(fā)明提供了ー種生成查詢(xún)歷程的方法,所述方法包括在處理器上執(zhí)行;評(píng)估查詢(xún)樹(shù)信息和對(duì)查詢(xún)樹(shù)執(zhí)行的操作中的至少ー個(gè),其中所述查詢(xún)樹(shù)包括ー個(gè)或多個(gè)節(jié)點(diǎn);基于查詢(xún)樹(shù)信息和操作中的所述至少ー個(gè)來(lái)識(shí)別歷程規(guī)則;以及基于所述歷程規(guī)則而生成所述查詢(xún)樹(shù)的歷程優(yōu)選地,本發(fā)明提供了ー種方法,還包括維護(hù)存儲(chǔ)ー個(gè)或多個(gè)歷程規(guī)則的歷程規(guī)則數(shù)據(jù)儲(chǔ)存器。優(yōu)選地,本發(fā)明提供了ー種方法,其中在對(duì)所述查詢(xún)樹(shù)執(zhí)行所述操作期間執(zhí)行所述評(píng)估、所述識(shí)別以及所述生成。優(yōu)選地,本發(fā)明提供了ー種方法,還包括在所述操作是移除型操作時(shí)臨時(shí)存儲(chǔ)歷程ィ目息。優(yōu)選地,本發(fā)明提供了ー種方法,還包括在所述操作是重新插入型操作時(shí),將所述歷程信息包括在所述歷程中。優(yōu)選地,本發(fā)明提供了ー種方法,其中生成所述歷程包括執(zhí)行與所述歷程規(guī)則關(guān)聯(lián)的邏輯以生成所述查詢(xún)樹(shù)的所述歷程。優(yōu)選地,本發(fā)明提供了ー種方法,其中所述操作包括刪除、交換、新增以及移動(dòng)中的至少ー個(gè)。優(yōu)選地,本發(fā)明提供了ー種方法,其中當(dāng)所述操作是刪除時(shí),關(guān)聯(lián)的規(guī)則將來(lái)自所述查詢(xún)樹(shù)的所刪除節(jié)點(diǎn)的歷程信息復(fù)制到所述查詢(xún)樹(shù)的父代節(jié)點(diǎn)。
優(yōu)選地,本發(fā)明提供了ー種方法,其中當(dāng)所述操作是交換時(shí),關(guān)聯(lián)的規(guī)則將來(lái)自所述查詢(xún)樹(shù)的目標(biāo)節(jié)點(diǎn)的歷程信息復(fù)制到所述查詢(xún)樹(shù)的正在被交換的節(jié)點(diǎn)。優(yōu)選地,本發(fā)明提供了ー種方法,其中當(dāng)所述操作是移動(dòng)時(shí),判定所述查詢(xún)樹(shù)的節(jié)點(diǎn)是否與子代節(jié)點(diǎn)關(guān)聯(lián),并且其中如果該節(jié)點(diǎn)與子代節(jié)點(diǎn)關(guān)聯(lián),則關(guān)聯(lián)的規(guī)則將來(lái)自該節(jié)點(diǎn)的歷程信息復(fù)制到所述子代節(jié)點(diǎn)。從第二方面看,本發(fā)明提供了一種用于生成查詢(xún)歷程的系統(tǒng),所述系統(tǒng)包括計(jì)算機(jī)可讀介質(zhì),其包括歷程規(guī)則數(shù)據(jù)儲(chǔ)存器,其存儲(chǔ)至少ー個(gè)歷程規(guī)則;歷程服務(wù),其評(píng)估對(duì)查詢(xún)樹(shù)執(zhí)行的操作和查詢(xún)樹(shù)信息中的至少ー個(gè),其中所述查詢(xún)樹(shù)包括ー個(gè)或多個(gè)節(jié)點(diǎn),并且所述歷程服務(wù)基于操作和查詢(xún)樹(shù)信息中的所述至少一個(gè)以及來(lái)自所述歷程規(guī)則數(shù)據(jù)儲(chǔ)存器的歷程規(guī)則而生成所述查詢(xún)樹(shù)的歷程。優(yōu)選地,本發(fā)明提供了一種系統(tǒng),其中在對(duì)所述查詢(xún)樹(shù)執(zhí)行 所述操作期間,所述歷程服務(wù)執(zhí)行所述生成。優(yōu)選地,本發(fā)明提供了一種系統(tǒng),其中當(dāng)所述操作是移除型操作時(shí),所述歷程服務(wù)臨時(shí)存儲(chǔ)歷程信息。優(yōu)選地,本發(fā)明提供了一種系統(tǒng),其中當(dāng)所述操作是重新插入型操作時(shí),所述歷程服務(wù)將所述歷程信息包括在所述歷程中。優(yōu)選地,本發(fā)明提供了一種系統(tǒng),其中所述歷程服務(wù)通過(guò)執(zhí)行與所述歷程規(guī)則關(guān)聯(lián)的邏輯以生成所述查詢(xún)樹(shù)的所述歷程而生成所述歷程。優(yōu)選地,本發(fā)明提供了一種系統(tǒng),其中所述操作包括刪除、交換、新增以及移動(dòng)中的至少ー個(gè)。優(yōu)選地,本發(fā)明提供了一種系統(tǒng),其中當(dāng)所述操作是刪除時(shí),關(guān)聯(lián)的規(guī)則將來(lái)自所述查詢(xún)樹(shù)的所刪除節(jié)點(diǎn)的歷程信息復(fù)制到所述查詢(xún)樹(shù)的父代節(jié)點(diǎn)。優(yōu)選地,本發(fā)明提供了一種系統(tǒng),其中當(dāng)所述操作是交換時(shí),關(guān)聯(lián)的規(guī)則將來(lái)自所述查詢(xún)樹(shù)的目標(biāo)節(jié)點(diǎn)的歷程信息復(fù)制到所述查詢(xún)樹(shù)的正在被交換的節(jié)點(diǎn)。優(yōu)選地,本發(fā)明提供了一種系統(tǒng),其中當(dāng)所述操作是移動(dòng)時(shí),所述歷程服務(wù)判定所述查詢(xún)樹(shù)的節(jié)點(diǎn)是否與子代節(jié)點(diǎn)關(guān)聯(lián),并且其中如果該節(jié)點(diǎn)與子代節(jié)點(diǎn)關(guān)聯(lián),則關(guān)聯(lián)的規(guī)則將來(lái)自該節(jié)點(diǎn)的歷程信息復(fù)制到所述子代節(jié)點(diǎn)。從第三方面看,本發(fā)明提供了ー種包括計(jì)算機(jī)程序代碼的計(jì)算機(jī)程序,當(dāng)所述計(jì)算機(jī)程序代碼被載入計(jì)算機(jī)系統(tǒng)并執(zhí)行時(shí),所述程序執(zhí)行上述方法的所有步驟。
現(xiàn)在將僅通過(guò)實(shí)例的方式參考附圖描述本發(fā)明的各實(shí)施例,這些附圖是圖I是示出根據(jù)ー個(gè)示意性實(shí)施例的包括歷程生成系統(tǒng)的計(jì)算系統(tǒng)的方塊圖;圖2和圖3是示出根據(jù)ー個(gè)示意性實(shí)施例的圖I的歷程生成系統(tǒng)的數(shù)據(jù)流圖;圖4A-圖4C示出根據(jù)ー個(gè)示意性實(shí)施例的基于各種操作而從圖I的歷程生成系統(tǒng)產(chǎn)生的各種查詢(xún)樹(shù)及歷程;以及圖5是示出根據(jù)ー個(gè)示意性實(shí)施例的一種歷程生成方法的流程圖。
具體實(shí)施方式
根據(jù)本發(fā)明的一個(gè)示意性實(shí)施例,提供一種使數(shù)據(jù)庫(kù)查詢(xún)樹(shù)的歷程的生成自動(dòng)化的歷程生成系統(tǒng)。如可了解,以下描述在本質(zhì)上只是示意性的且并非g在限制本發(fā)明、應(yīng)用或使用。應(yīng)理解,在全部附圖中,對(duì)應(yīng)的參考數(shù)字指示相似或?qū)?yīng)的部分及特征?,F(xiàn)轉(zhuǎn)至圖1,方塊圖示出包括根據(jù)本發(fā)明的歷程生成系統(tǒng)(LGS)的示意性計(jì)算系統(tǒng)100。計(jì)算系統(tǒng)100示為包括計(jì)算機(jī)101。如可了解,計(jì)算系統(tǒng)100可包括任何計(jì)算設(shè)備,包括(但不限干)桌上型計(jì)算機(jī)、膝上型計(jì)算機(jī)、服務(wù)器、便攜手持設(shè)備或任何其它電子設(shè)備。為了論述的容易,將在計(jì)算機(jī)101的上下文中論述本發(fā)明。計(jì)算機(jī)101示為包括處理器102、耦合至存儲(chǔ)器控制器106的存儲(chǔ)器104、經(jīng)由本地輸入/輸出控制器112而通信地耦合的一個(gè)或多個(gè)輸入和/或輸出(I/O)設(shè)備108、110(或外圍設(shè)備)以及耦合至顯示器116的顯示控制器114。在一個(gè)示意性實(shí)施例中,常 規(guī)鍵盤(pán)122及鼠標(biāo)124可耦合至輸入/輸出控制器112。在一個(gè)示意性實(shí)施例中,計(jì)算系統(tǒng)100還可包括用于耦合至網(wǎng)絡(luò)120的網(wǎng)絡(luò)接ロ 118。網(wǎng)絡(luò)120在計(jì)算機(jī)101及外部系統(tǒng)(諸如類(lèi)似地包括本發(fā)明的歷程生成系統(tǒng)的其它計(jì)算系統(tǒng)(未示出))之間傳輸及接收數(shù)據(jù)。在各種實(shí)施例中,存儲(chǔ)器104存儲(chǔ)可由處理器102執(zhí)行的指令。存儲(chǔ)在存儲(chǔ)器104中的指令可包括ー個(gè)或多個(gè)獨(dú)立程序,這些程序中的每ー個(gè)包括用于實(shí)現(xiàn)邏輯功能的可執(zhí)行指令的有序列表。在圖I的實(shí)例中,存儲(chǔ)在存儲(chǔ)器104中的指令包括合適的操作系統(tǒng)
(OS)126。操作系統(tǒng)126實(shí)質(zhì)上控制其它計(jì)算機(jī)程序的執(zhí)行,并且提供調(diào)度、輸入-輸出控制、文件及數(shù)據(jù)管理、存儲(chǔ)器管理及通信控制以及相關(guān)服務(wù)。當(dāng)計(jì)算機(jī)101處于操作中時(shí),處理器102被配置為執(zhí)行存儲(chǔ)在存儲(chǔ)器104內(nèi)的指令、將數(shù)據(jù)傳送至存儲(chǔ)器104和自存儲(chǔ)器104傳送數(shù)據(jù),以及根據(jù)指令來(lái)總體上控制計(jì)算機(jī)101的操作。處理器102可為任何定制或市售處理器、中央處理單元(CPU)、在與計(jì)算機(jī)101關(guān)聯(lián)的若干處理器當(dāng)中的輔助處理器、基于半導(dǎo)體的微處理器(呈微芯片或芯片組的形式)、宏處理器或總體上用于執(zhí)行指令的任何器件。處理器102執(zhí)行本發(fā)明的歷程生成系統(tǒng)128的指令。在各種實(shí)施例中,本發(fā)明的歷程生成系統(tǒng)128嵌入某種形式的計(jì)算機(jī)可讀介質(zhì)中,例如,歷程生成系統(tǒng)128存儲(chǔ)在存儲(chǔ)器104(如所示)中、從便攜存儲(chǔ)設(shè)備(例如,CD-ROM、軟盤(pán)、閃速驅(qū)動(dòng)器等)(未示出)執(zhí)行和/或從遠(yuǎn)程位置(如從中央服務(wù)器(未圖示))執(zhí)行。一般而言,歷程生成系統(tǒng)128生成對(duì)(例如)數(shù)據(jù)庫(kù)執(zhí)行的查詢(xún)的歷程。在各種實(shí)施例中,可在新的或現(xiàn)有查詢(xún)計(jì)劃或優(yōu)化引擎內(nèi)提供歷程生成系統(tǒng)128。在各種其它實(shí)施例中,可將歷程生成系統(tǒng)128實(shí)施為如可應(yīng)用及根據(jù)本發(fā)明的獨(dú)立應(yīng)用、插件應(yīng)用和/或任何其它類(lèi)型的應(yīng)用。歷程生成系統(tǒng)128生成信息,所述信息可用于系統(tǒng)128內(nèi)或由其它應(yīng)用用作(例如)錯(cuò)誤消息的上下文信息或用作為了分析目的而寫(xiě)入至日志文件的數(shù)據(jù)。日志文件可用于生成歷程接ロ 130,以便(例如)使歷程信息可視化。在各種實(shí)施例中,歷程生成系統(tǒng)128利用樹(shù)操縱例程(例如,新增、刪除、移動(dòng)等)和/或查詢(xún)計(jì)劃或優(yōu)化引擎內(nèi)存在的樹(shù)信息。因此,可以以對(duì)查詢(xún)的作者透明的方式來(lái)提供查詢(xún)歷程信息?,F(xiàn)轉(zhuǎn)至圖2,更詳細(xì)地示出根據(jù)ー個(gè)示意性實(shí)施例的歷程生成系統(tǒng)128。歷程生成系統(tǒng)128包括一個(gè)或多個(gè)子模塊和數(shù)據(jù)儲(chǔ)存器。如可了解,可將子模塊實(shí)施為軟件、硬件、固件、它們的組合和/或提供所描述的功能性的其它合適組件。如可了解,子模塊和數(shù)據(jù)儲(chǔ)存器可駐留于一個(gè)或多個(gè)計(jì)算機(jī)系統(tǒng)上。如可進(jìn)ー步了解,圖2中所示的子模塊可被組合和/或被進(jìn)ー步分割以類(lèi)似地生成歷程。在此實(shí)例中,歷程生成系統(tǒng)128包括歷程服務(wù)模塊140和規(guī)則數(shù)據(jù)儲(chǔ)存器142歷程服務(wù)模塊140接收操作144a作為輸入??苫陂_(kāi)發(fā)者與查詢(xún)計(jì)劃或優(yōu)化引擎(未示出)的交互而生成操作144a。在一個(gè)實(shí)例中,所述操作指示新的查詢(xún)樹(shù)145的構(gòu)造?;诓僮?44a,歷程服務(wù)模塊140啟動(dòng)歷程服務(wù)146且將歷程服務(wù)146與特定查詢(xún)樹(shù)145的計(jì)劃關(guān)聯(lián)。歷程服務(wù)146監(jiān)視對(duì)查詢(xún)樹(shù)145執(zhí)行的與查詢(xún)關(guān)聯(lián)的未來(lái)操作144b、查詢(xún)樹(shù)信息147和/或操作狀態(tài)148。基于操作144b、查詢(xún)樹(shù)信息147和/或操作狀態(tài)148,歷程服務(wù)146與規(guī)則數(shù)據(jù)儲(chǔ)存器142建立接ロ以開(kāi)發(fā)查詢(xún)歷程150。規(guī)則數(shù)據(jù)儲(chǔ)存器142存儲(chǔ)ー個(gè)或多個(gè)歷程規(guī)則152。每ー歷程規(guī)則152可與特定操作144b和/或查詢(xún)樹(shù)信息147關(guān)聯(lián)。歷程規(guī)則152可包括這樣的邏輯,所述邏輯捕獲在任何時(shí)間點(diǎn)保留于查詢(xún)樹(shù)145中的節(jié)點(diǎn)與原始查詢(xún)樹(shù)145中的節(jié)點(diǎn)的關(guān)系并且反之亦然。在一些狀況下,歷程信息可能丟失(一些信息實(shí)際上在最終查詢(xún)中可以是不重要的),而在許多狀況下,在查詢(xún)樹(shù)的當(dāng)前狀態(tài)下的節(jié)點(diǎn)與初始查詢(xún)樹(shù)145中的節(jié)點(diǎn)之間存在多對(duì)多關(guān)系O現(xiàn)轉(zhuǎn)至圖3,歷程服務(wù)146包括(例如)歷程初始化模塊154及操作監(jiān)視模塊156。歷程初始化模塊154接收初始操作144a和初始查詢(xún)樹(shù)145作為輸入?;诔跏疾僮?44a及查詢(xún)樹(shù)145,歷程初始化模塊154向查詢(xún)樹(shù)145中的每ー節(jié)點(diǎn)指派初始?xì)v程160。例如,姆ー節(jié)點(diǎn)的歷程包括節(jié)點(diǎn)的容器(container),節(jié)點(diǎn)的存在依存于該容器,且最初是對(duì)其自身的引用(作為對(duì)初始查詢(xún)樹(shù)的副本內(nèi)的節(jié)點(diǎn)的引用/指針,或作為唯一標(biāo)識(shí)符,所述引用/指針及所述唯一標(biāo)識(shí)符之一被指派給初始查詢(xún)樹(shù)中的姆ー節(jié)點(diǎn),及被指派給隨后在計(jì)劃過(guò)程期間所生成的每ー節(jié)點(diǎn))。在各種實(shí)施例中,當(dāng)歷程服務(wù)146跨越個(gè)體查詢(xún)樹(shù)操縱操作144b保留信息時(shí),對(duì)歷程服務(wù)146的引用被保留在查詢(xún)樹(shù)155中的每ー節(jié)點(diǎn)內(nèi)。操作監(jiān)視模塊156接著監(jiān)視對(duì)該特定查詢(xún)樹(shù)145執(zhí)行且表示查詢(xún)樹(shù)145的變換或操縱的進(jìn)一歩操作144b。操作144b可包括(但不限于)(例如)新增、刪除及移動(dòng)。通常在將姆ー變換或操縱應(yīng)用于查詢(xún)樹(shù)145的開(kāi)始時(shí)生成操作通知144b。在將操作144b應(yīng)用于查詢(xún)樹(shù)145 (例如,新增節(jié)點(diǎn)、刪除節(jié)點(diǎn)、移動(dòng)節(jié)點(diǎn)等)之時(shí)或之后,歷程服務(wù)模塊140基于操作144b和/或查詢(xún)數(shù)信息147且進(jìn)ー步基于存儲(chǔ)在規(guī)則數(shù)據(jù)儲(chǔ)存器142中的ー個(gè)或多個(gè)規(guī)則152來(lái)更新與ー個(gè)或多個(gè)節(jié)點(diǎn)關(guān)聯(lián)的歷程150。例如,操作監(jiān)視模塊156將ー個(gè)或多個(gè)操作144b和/或查詢(xún)樹(shù)信息147與特定規(guī)則152關(guān)聯(lián)。從規(guī)則數(shù)據(jù)儲(chǔ)存器142取回規(guī)則152和/或?qū)嵤┮?guī)則152的邏輯。接著執(zhí)行規(guī)則152和/或所述邏輯以確定適當(dāng)?shù)臍v程150。在一個(gè)實(shí)例中,當(dāng)操作144b指示變換(諸如(但不限于)刪除、交換、新增和/或移動(dòng))時(shí),可定義以下規(guī)則152。與刪除操作關(guān)聯(lián)的規(guī)則152將所刪除節(jié)點(diǎn)的歷程轉(zhuǎn)移至所刪除節(jié)點(diǎn)的父代的歷程。與交換操作關(guān)聯(lián)的規(guī)則152將目標(biāo)節(jié)點(diǎn)的歷程復(fù)制到正在被移動(dòng)的節(jié)點(diǎn)。與新增操作關(guān)聯(lián)的規(guī)則152不提供對(duì)歷程的影響。與移動(dòng)操作關(guān)聯(lián)的規(guī)則152不提供對(duì)歷程的影響。與移動(dòng)子代操作關(guān)聯(lián)的規(guī)則152在移動(dòng)子代節(jié)點(diǎn)之前將父代節(jié)點(diǎn)的歷程轉(zhuǎn)移至子代節(jié)點(diǎn)。如果不存在子代,則將節(jié)點(diǎn)的歷程移至父代節(jié)點(diǎn)。
在各種實(shí)施例中,ー些操作144b導(dǎo)致歷程的立即轉(zhuǎn)移,而其它操作則具有延遲的影響。在操作指示節(jié)點(diǎn)自查詢(xún)樹(shù)145的某一形式的移除(例如,分離、交換、提取、刪除等)的情況下,在同一變換內(nèi),該節(jié)點(diǎn)可被重新插入至查詢(xún)樹(shù)145中。因此,歷程150的完成被延遲直至節(jié)點(diǎn)重新插入為止。例如,當(dāng)操作144b指定節(jié)點(diǎn)自查詢(xún)樹(shù)145的某一形式的移除或刪除時(shí),在各種實(shí)施例中,應(yīng)用規(guī)則152以確定所移除或所刪除節(jié)點(diǎn)的歷程150的可能接受者。操作監(jiān)視模塊156接著臨時(shí)存儲(chǔ)所移除節(jié)點(diǎn)的此信息,直至該節(jié)點(diǎn)被重新插入至查詢(xún)樹(shù)145中或該節(jié)點(diǎn)被永久地刪除為止。在變換完成之后,經(jīng)由操作狀態(tài)148通知操作監(jiān)視模塊156變換已完成。操作監(jiān)視模塊156接著基于臨時(shí)存儲(chǔ)的信息而完 成與變換關(guān)聯(lián)的歷程操縱。操作監(jiān)視模塊156判定操作144b中的任一操作是否將任何被移除的節(jié)點(diǎn)重新插入回至查詢(xún)樹(shù)145中。在此狀況下,規(guī)則152規(guī)定歷程150屬于被重新插入的節(jié)點(diǎn)。另ー方面,節(jié)點(diǎn)未被重新插入至查詢(xún)樹(shù)145中是可能的。在此狀況下,規(guī)則152規(guī)定對(duì)應(yīng)的歷程150被轉(zhuǎn)移至查詢(xún)樹(shù)中的其它節(jié)點(diǎn)和/或應(yīng)被刪除。例如,如果所移除的節(jié)點(diǎn)具有父代節(jié)點(diǎn),則規(guī)則152將所移除的節(jié)點(diǎn)的歷程150復(fù)制到父代節(jié)點(diǎn)。否則,如果所移除的節(jié)點(diǎn)沒(méi)有父代,則刪除歷程150。在各種實(shí)施例中,規(guī)則152可基于查詢(xún)樹(shù)信息而非操作144b。例如,規(guī)則152可基于節(jié)點(diǎn)的類(lèi)型或關(guān)于節(jié)點(diǎn)相對(duì)于其自身的信息。在上述實(shí)例中,在查詢(xún)樹(shù)155內(nèi)移動(dòng)節(jié)點(diǎn)對(duì)該節(jié)點(diǎn)的歷程沒(méi)有影響;歷程簡(jiǎn)單地與節(jié)點(diǎn)一起轉(zhuǎn)移。然而,在另ー實(shí)例中,可以是這樣的情況將節(jié)點(diǎn)從查詢(xún)樹(shù)155的ー個(gè)區(qū)域移至另一區(qū)域可具有界限(在該界限中不再可應(yīng)用此行為)。例如,如果類(lèi)型“ X”的節(jié)點(diǎn)總是作為類(lèi)型“ Z”的另ー節(jié)點(diǎn)的后代(直接或以其它方式)而存在,則ー種特定實(shí)施方式可應(yīng)用用于查詢(xún)歷程的缺省“移動(dòng)”語(yǔ)義(如果類(lèi)型“ Z”的祖先不改變)。關(guān)聯(lián)的規(guī)則152可以是如果類(lèi)型“Z”的祖先由于移動(dòng)操作的緣故而應(yīng)改變,則將節(jié)點(diǎn)的歷程轉(zhuǎn)移至(例如)父代。在此實(shí)例中,用于執(zhí)行歷程轉(zhuǎn)移的規(guī)則152不只是簡(jiǎn)單地基于正在執(zhí)行的操作144b且并不限于節(jié)點(diǎn)或節(jié)點(diǎn)所存在的查詢(xún)樹(shù)155。如可了解,可修改上述規(guī)則152以適應(yīng)查詢(xún)計(jì)劃或優(yōu)化引擎的各種實(shí)施方式。例如,可將類(lèi)似的規(guī)則應(yīng)用于不同操作或不同查詢(xún)樹(shù)信息。圖4A至圖4B示出由對(duì)各種查詢(xún)樹(shù)執(zhí)行的特定操作而產(chǎn)生的示意性歷程。如可了解,可基于查詢(xún)樹(shù)信息和/或與查詢(xún)樹(shù)關(guān)聯(lián)的操作而生成類(lèi)似歷程。圖4A示出包括節(jié)點(diǎn)I至8的第一查詢(xún)樹(shù)200。操作202指示節(jié)點(diǎn)4被刪除且節(jié)點(diǎn)5被重新附加至節(jié)點(diǎn)8。所得到的歷程206包括正被復(fù)制到父代節(jié)點(diǎn)2的所刪除的節(jié)點(diǎn)的歷程。所刪除的節(jié)點(diǎn)208因此包括節(jié)點(diǎn)4及節(jié)點(diǎn)6。圖4B示出第二查詢(xún)樹(shù)210的歷程,該第二查詢(xún)樹(shù)210包括節(jié)點(diǎn)I至6及節(jié)點(diǎn)8。操作212指示節(jié)點(diǎn)4與一新節(jié)點(diǎn)交換且節(jié)點(diǎn)6被附加至節(jié)點(diǎn)8。所得到的歷程214包括正被復(fù)制到新節(jié)點(diǎn)的所刪除的節(jié)點(diǎn)4及5的歷程。所刪除的節(jié)點(diǎn)216因此包括節(jié)點(diǎn)5。圖4C示出第三查詢(xún)樹(shù)220的歷程,該第三查詢(xún)樹(shù)220包括節(jié)點(diǎn)I至6、節(jié)點(diǎn)8及節(jié)點(diǎn)10。操作222指示節(jié)點(diǎn)4被提取且未被重新附加。所得到的歷程224包括正被復(fù)制到子代節(jié)點(diǎn)5、6及10的節(jié)點(diǎn)4的歷程。所刪除的節(jié)點(diǎn)226因此包括節(jié)點(diǎn)5。
現(xiàn)轉(zhuǎn)至圖5且繼續(xù)參考 圖2及圖3,流程圖示出根據(jù)ー個(gè)示意性實(shí)施例的可由圖2及圖3的歷程生成系統(tǒng)128執(zhí)行的歷程生成方法。如鑒于本公開(kāi)而可理解的,所述方法內(nèi)的操作的次序不限于如圖5中所示出的順序執(zhí)行,而是可以以可應(yīng)用及根據(jù)本發(fā)明的ー種或多種變化的次序執(zhí)行。如可了解,可新增或從所述方法刪除ー個(gè)或多個(gè)步驟而不更改所述方法的精神。在一個(gè)實(shí)例中,所述方法可在300處開(kāi)始。在310處監(jiān)視來(lái)自(例如)查詢(xún)計(jì)劃或優(yōu)化引擎的操作144a。在310處,如果操作144a指示構(gòu)造新的查詢(xún)樹(shù)145,則在320處啟動(dòng)歷程服務(wù)146且將其與新的查詢(xún)樹(shù)145關(guān)聯(lián)。然而,如果在310處未構(gòu)造新的查詢(xún)樹(shù)145,則所述方法繼續(xù)監(jiān)視操作144a直至在310處構(gòu)造新的查詢(xún)樹(shù)145為止。一旦啟動(dòng),歷程服務(wù)146就接著在330-350處監(jiān)視關(guān)于關(guān)聯(lián)的查詢(xún)樹(shù)145和/或查詢(xún)樹(shù)信息147的所有未來(lái)操作144b。例如,如果操作144b在330處指示移除操作,則在360處將歷程150從所移除的節(jié)點(diǎn)復(fù)制到父代節(jié)點(diǎn)。接著在370處臨時(shí)存儲(chǔ)用于所移除的節(jié)點(diǎn)的歷程信息及節(jié)點(diǎn)信息以用于隨后的評(píng)估。然而,如果操作144b在340處指示交換操作,則在380處將目標(biāo)節(jié)點(diǎn)的歷程150復(fù)制到正被移動(dòng)的節(jié)點(diǎn)。如果操作在350處指示移動(dòng)操作,則在390處判定節(jié)點(diǎn)是否具有子代。如果在390處節(jié)點(diǎn)具有子代,則在400處將父代節(jié)點(diǎn)的歷程150復(fù)制到每一子代節(jié)點(diǎn)的歷程150。如果在390處節(jié)點(diǎn)不具有任何子代,則在410處將節(jié)點(diǎn)的歷程150移至父代節(jié)點(diǎn)。然而,如果在330-350處操作未指示移除操作、交換操作或移動(dòng)操作,則在360處評(píng)估操作狀態(tài)148。如果在360處操作狀態(tài)148指示變換完成,則在420處判定所移除節(jié)點(diǎn)中的任一節(jié)點(diǎn)是否已被重新插入。如果在420處所移除的節(jié)點(diǎn)已被重新插入至查詢(xún)樹(shù)145中,則在430處將節(jié)點(diǎn)的臨時(shí)存儲(chǔ)的信息(包括歷程150)復(fù)制到重新插入的節(jié)點(diǎn)。其后,所述方法可在440處結(jié)束。如可理解的,附圖中的流程圖和框圖,圖示了按照本發(fā)明各種實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個(gè)方框可以代表一個(gè)模塊、程序段、或代碼的一部分,所述模塊、程序段、或代碼的一部分包含一個(gè)或多個(gè)用于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實(shí)現(xiàn)中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個(gè)接連地表示的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時(shí)也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個(gè)方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專(zhuān)用的基于硬件的系統(tǒng)來(lái)實(shí)現(xiàn),或者可以用專(zhuān)用硬件與計(jì)算機(jī)指令的組合來(lái)實(shí)現(xiàn)。作為ー個(gè)實(shí)例,本發(fā)明的ー個(gè)或多個(gè)方面可包括在具有(例如)計(jì)算機(jī)可用介質(zhì)的制品(例如,一個(gè)或多個(gè)計(jì)算機(jī)程序產(chǎn)品)中。所述介質(zhì)中包含例如用于提供且促進(jìn)本發(fā)明的能力的計(jì)算機(jī)可讀程序代碼構(gòu)件。所述制品可包括為計(jì)算機(jī)系統(tǒng)的一部分或單獨(dú)提供。另外,可提供可由機(jī)器讀取、有形地體現(xiàn)可由機(jī)器執(zhí)行以執(zhí)行本發(fā)明的能力的指令的至少ー個(gè)程序的至少ー個(gè)程序存儲(chǔ)設(shè)備。用于執(zhí)行本發(fā)明的操作的計(jì)算機(jī)程序碼,可以以ー種或多種程序設(shè)計(jì)語(yǔ)言的任何組合來(lái)編寫(xiě),所述程序設(shè)計(jì)語(yǔ)言包括面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,還包括常規(guī)的過(guò)程式程序設(shè)計(jì)語(yǔ)言,如”C”程序設(shè)計(jì)語(yǔ)言或類(lèi)似的程序設(shè)計(jì)語(yǔ)言。程序碼可以完全地在用戶(hù)的計(jì)算上執(zhí)行、部分地在用戶(hù)的計(jì)算機(jī)上執(zhí)行、作為ー個(gè)獨(dú)立的軟件包執(zhí)行、部分在用戶(hù)的計(jì)算機(jī)上部分在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行、或者完全在遠(yuǎn)程計(jì)算機(jī)或服務(wù)器上執(zhí)行。在后一種情形中,遠(yuǎn)程計(jì)算機(jī)可以通過(guò)任何種類(lèi)的網(wǎng)絡(luò)ー包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN) —連接到用戶(hù)的計(jì)算機(jī),或者,可以(例如利用因特網(wǎng)服務(wù)提供商來(lái)通過(guò)因特網(wǎng))連接到外部計(jì)算機(jī)。盡管已描述了ー個(gè)優(yōu)選實(shí)施例,但應(yīng)了解,在現(xiàn)在及將來(lái),本領(lǐng)域技術(shù)人員可做出落入以下權(quán)利要求的范圍內(nèi)的各種改進(jìn)和增強(qiáng)。這些權(quán)利要求應(yīng)理解為維持對(duì)最初描述的本發(fā)明的恰當(dāng)保護(hù)。本文中所用的術(shù)語(yǔ),僅僅是為了描述特定的實(shí)施例,而不意圖限定本發(fā)明。本文中所用的単數(shù)形式的“一”和“該”,_在也包括復(fù)數(shù)形式,除非上下文中明確地另行指出。以下的權(quán)利要求中的對(duì)應(yīng)結(jié)構(gòu)、特征、材料、操作以及所有功能性限定的裝置(means)或步驟的等同替換,g在包括任何用干與在權(quán)利要求中具體指出的其它單元相組合地執(zhí)行該功能的結(jié)構(gòu)、材料或操作。所給出的描述其目的在于示意和描述,并非是窮盡性的,也并非是要 把本發(fā)明限定到所表述的形式。對(duì)于所屬技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不偏離本發(fā)明范圍的情況下,顯然可以作出許多修改和變型。對(duì)實(shí)施例的選擇和說(shuō)明,是為了最好地解釋本發(fā)明的原理和實(shí)際應(yīng)用,使所屬技術(shù)領(lǐng)域的普通技術(shù)人員能夠明了,本發(fā)明可以有適合所要的特定用途的具有各種改變的各種實(shí)施方式。
權(quán)利要求
1.一種生成查詢(xún)歷程的方法,所述方法包括 在處理器上執(zhí)行; 評(píng)估查詢(xún)樹(shù)信息和對(duì)查詢(xún)樹(shù)執(zhí)行的操作中的至少一個(gè),其中所述查詢(xún)樹(shù)包括一個(gè)或多個(gè)節(jié)點(diǎn); 基于查詢(xún)樹(shù)信息和操作中的所述至少一個(gè)來(lái)識(shí)別歷程規(guī)則;以及 基于所述歷程規(guī)則而生成所述查詢(xún)樹(shù)的歷程。
2.如權(quán)利要求I的方法,還包括維護(hù)存儲(chǔ)一個(gè)或多個(gè)歷程規(guī)則的歷程規(guī)則數(shù)據(jù)儲(chǔ)存器。
3.如權(quán)利要求I的方法,其中在對(duì)所述查詢(xún)樹(shù)執(zhí)行所述操作期間執(zhí)行所述評(píng)估、所述識(shí)別以及所述生成。
4.如權(quán)利要求I的方法,還包括在所述操作是移除型操作時(shí)臨時(shí)存儲(chǔ)歷程信息。
5.如權(quán)利要求4的方法,還包括在所述操作是重新插入型操作時(shí),將所述歷程信息包括在所述歷程中。
6.如權(quán)利要求I的方法,其中生成所述歷程包括執(zhí)行與所述歷程規(guī)則關(guān)聯(lián)的邏輯以生成所述查詢(xún)樹(shù)的所述歷程。
7.如權(quán)利要求I的方法,其中所述操作包括刪除、交換、新增以及移動(dòng)中的至少一個(gè)。
8.如權(quán)利要求7的方法,其中當(dāng)所述操作是刪除時(shí),關(guān)聯(lián)的規(guī)則將來(lái)自所述查詢(xún)樹(shù)的所刪除節(jié)點(diǎn)的歷程信息復(fù)制到所述查詢(xún)樹(shù)的父代節(jié)點(diǎn)。
9.如權(quán)利要求7的方法,其中當(dāng)所述操作是交換時(shí),關(guān)聯(lián)的規(guī)則將來(lái)自所述查詢(xún)樹(shù)的目標(biāo)節(jié)點(diǎn)的歷程信息復(fù)制到所述查詢(xún)樹(shù)的正在被交換的節(jié)點(diǎn)。
10.如權(quán)利要求7的方法,其中當(dāng)所述操作是移動(dòng)時(shí),判定所述查詢(xún)樹(shù)的節(jié)點(diǎn)是否與子代節(jié)點(diǎn)關(guān)聯(lián),并且其中如果該節(jié)點(diǎn)與子代節(jié)點(diǎn)關(guān)聯(lián),則關(guān)聯(lián)的規(guī)則將來(lái)自該節(jié)點(diǎn)的歷程信息復(fù)制到所述子代節(jié)點(diǎn)。
11.一種用于生成查詢(xún)歷程的系統(tǒng),所述系統(tǒng)包括 計(jì)算機(jī)可讀介質(zhì),其包括 歷程規(guī)則數(shù)據(jù)儲(chǔ)存器,其存儲(chǔ)至少一個(gè)歷程規(guī)則; 歷程服務(wù),其評(píng)估對(duì)查詢(xún)樹(shù)執(zhí)行的操作和查詢(xún)樹(shù)信息中的至少一個(gè),其中所述查詢(xún)樹(shù)包括一個(gè)或多個(gè)節(jié)點(diǎn),并且所述歷程服務(wù)基于操作和查詢(xún)樹(shù)信息中的所述至少一個(gè)以及來(lái)自所述歷程規(guī)則數(shù)據(jù)儲(chǔ)存器的歷程規(guī)則而生成所述查詢(xún)樹(shù)的歷程。
12.如權(quán)利要求11的系統(tǒng),其中在對(duì)所述查詢(xún)樹(shù)執(zhí)行所述操作期間,所述歷程服務(wù)執(zhí)行所述生成。
13.如權(quán)利要求11的系統(tǒng),其中當(dāng)所述操作是移除型操作時(shí),所述歷程服務(wù)臨時(shí)存儲(chǔ)歷程信息。
14.如權(quán)利要求13的系統(tǒng),其中當(dāng)所述操作是重新插入型操作時(shí),所述歷程服務(wù)將所述歷程信息包括在所述歷程中。
15.如權(quán)利要求11的系統(tǒng),其中所述歷程服務(wù)通過(guò)執(zhí)行與所述歷程規(guī)則關(guān)聯(lián)的邏輯以生成所述查詢(xún)樹(shù)的所述歷程而生成所述歷程。
16.如權(quán)利要求11的系統(tǒng),其中所述操作包括刪除、交換、新增以及移動(dòng)中的至少一個(gè)。
17.如權(quán)利要求16的系統(tǒng),其中當(dāng)所述操作是刪除時(shí),關(guān)聯(lián)的規(guī)則將來(lái)自所述查詢(xún)樹(shù)的所刪除節(jié)點(diǎn)的歷程信息復(fù)制到所述查詢(xún)樹(shù)的父代節(jié)點(diǎn)。
18.如權(quán)利要求16的系統(tǒng),其中當(dāng)所述操作是交換時(shí),關(guān)聯(lián)的規(guī)則將來(lái)自所述查詢(xún)樹(shù)的目標(biāo)節(jié)點(diǎn)的歷程信息復(fù)制到所述查詢(xún)樹(shù)的正在被交換的節(jié)點(diǎn)。
19.如權(quán)利要求16的系統(tǒng),其中當(dāng)所述操作是移動(dòng)時(shí),所述歷程服務(wù)判定所述查詢(xún)樹(shù)的節(jié)點(diǎn)是否與子代節(jié)點(diǎn)關(guān)聯(lián),并且其中如果該節(jié)點(diǎn)與子代節(jié)點(diǎn)關(guān)聯(lián),則關(guān)聯(lián)的規(guī)則將來(lái)自該節(jié)點(diǎn)的歷程信息復(fù)制到所述子代節(jié)點(diǎn)。
20.一種包括計(jì)算機(jī)程序代碼的計(jì)算機(jī)程序,當(dāng)所述計(jì)算機(jī)程序代碼被載入計(jì)算機(jī)系統(tǒng)并執(zhí)行時(shí),所述程序執(zhí)行如權(quán)利要求I至10中的任一權(quán)利要求的方法的所有步驟。
全文摘要
提供一種生成查詢(xún)歷程的方法。所述方法包括在處理器上執(zhí)行;評(píng)估查詢(xún)樹(shù)信息和對(duì)查詢(xún)樹(shù)執(zhí)行的操作中的至少一個(gè),其中所述查詢(xún)樹(shù)包括一個(gè)或多個(gè)節(jié)點(diǎn);基于查詢(xún)樹(shù)信息和操作中的所述至少一個(gè)來(lái)識(shí)別歷程規(guī)則;以及基于所述歷程規(guī)則而生成所述查詢(xún)樹(shù)的歷程。
文檔編號(hào)G06F17/30GK102640150SQ201080054544
公開(kāi)日2012年8月15日 申請(qǐng)日期2010年11月9日 優(yōu)先權(quán)日2009年12月7日
發(fā)明者D·B·庫(kù)欣, M·珀蒂克勒克 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司