專利名稱:一種文檔庫系統(tǒng)及其實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及電子文檔處理系統(tǒng),特別涉及一種文檔庫系統(tǒng)及其實(shí)現(xiàn)方法。
技術(shù)背景文檔庫系統(tǒng)提供對(duì)大量文檔的組織、管理、安全、展示、存儲(chǔ)等諸方面的功能。在本申請(qǐng)人在先提交的申請(qǐng)?zhí)枮镃N200510131072.0的基礎(chǔ)專利申請(qǐng) 說明書中提供了一種包括文檔庫系統(tǒng)、存儲(chǔ)器、應(yīng)用軟件的文檔處理系統(tǒng), 其中,文檔庫的數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器中,文檔庫系統(tǒng)和應(yīng)用軟件通過一種標(biāo)準(zhǔn) 調(diào)用接口連接起來,該標(biāo)準(zhǔn)調(diào)用接口根據(jù)預(yù)先定義的動(dòng)作和對(duì)象而定義。應(yīng) 用軟件對(duì)文檔的操作都統(tǒng)一成對(duì)一種預(yù)定義的通用文檔模型進(jìn)行的操作,并 通過該標(biāo)準(zhǔn)調(diào)用接口向文檔庫系統(tǒng)發(fā)出指令,文檔庫系統(tǒng)按照應(yīng)用軟件的指 令,對(duì)存儲(chǔ)在存儲(chǔ)器中的文檔庫執(zhí)行相應(yīng)的操作。由于文檔庫系統(tǒng)涉及了大量的邏輯概念和操作,需要對(duì)大量功能提供支 持,所以一般情況下,文檔庫系統(tǒng)要做到好的可擴(kuò)展、可伸縮和可維護(hù)性是 相當(dāng)困難的。如果不從架構(gòu)上解決該問題,那最后實(shí)現(xiàn)的文檔庫系統(tǒng),無法 作到較好的可擴(kuò)展、可伸縮和可維護(hù)性。 發(fā)明內(nèi)容本發(fā)明的目的在于提供一種文檔庫系統(tǒng),該系統(tǒng)具有可擴(kuò)展、可伸縮和 可維護(hù)性。本發(fā)明提供的一種文檔庫系統(tǒng),包括解釋器、計(jì)劃器、執(zhí)行器和存儲(chǔ)模 塊,其中,解釋器用于接收應(yīng)用程序調(diào)用并將其解析為由通用文檔模型的對(duì)象或操 作構(gòu)成的中間形式;計(jì)劃器用于接收中間形式并將其解析為由對(duì)物理存儲(chǔ)的操作構(gòu)成的執(zhí)行 計(jì)劃;執(zhí)行器用于調(diào)度執(zhí)行計(jì)劃中對(duì)物理存儲(chǔ)的操作的執(zhí)行;
存儲(chǔ)模塊用于執(zhí)行構(gòu)成執(zhí)行計(jì)劃的對(duì)物理存儲(chǔ)的操作。本發(fā)明提供的文檔庫系統(tǒng)還進(jìn)一步包括優(yōu)化器,用于從計(jì)劃器生成的執(zhí) 行計(jì)劃中根據(jù)判斷條件選擇最優(yōu)執(zhí)行計(jì)劃。更進(jìn)一步,本發(fā)明提供的文檔庫系統(tǒng)中的優(yōu)化器用于對(duì)計(jì)劃器生成的執(zhí) 行計(jì)劃進(jìn)行執(zhí)行計(jì)劃空間搜索,并根據(jù)上述判斷條件獲得優(yōu)化的執(zhí)行計(jì)劃。其中,上述的應(yīng)用程序調(diào)用為XML形式或者符合LALR語法的自定義 形式。上述的的中間形式為語法樹或文檔對(duì)象模型樹。上述的存儲(chǔ)模塊支持對(duì)邏輯分區(qū)或物理磁盤或虛擬存儲(chǔ)或內(nèi)存的物理存 儲(chǔ)操作。而虛擬存儲(chǔ)為遠(yuǎn)程存儲(chǔ)或網(wǎng)絡(luò)存儲(chǔ)。遠(yuǎn)程存儲(chǔ)包括網(wǎng)絡(luò)文件系統(tǒng)或 分布式文件系統(tǒng),網(wǎng)絡(luò)存儲(chǔ)包括存儲(chǔ)區(qū)域網(wǎng)絡(luò)或網(wǎng)格或?qū)Φ确绞降拇鎯?chǔ)。上述的判斷條件為經(jīng)驗(yàn)規(guī)則、執(zhí)行計(jì)劃的時(shí)間成本或空間成本或時(shí)間和 空間成本的結(jié)合。從上述技術(shù)方案可以看出,本發(fā)明將文檔庫系統(tǒng)的實(shí)現(xiàn)分為多層。由于 不同層的實(shí)現(xiàn)可以相對(duì)獨(dú)立,從而使本發(fā)明提供的文檔庫系統(tǒng)具有可擴(kuò)展、 可伸縮和可維護(hù)性。通過本發(fā)明提供的優(yōu)化器,可以從多個(gè)執(zhí)行計(jì)劃中選出 一個(gè)最優(yōu)的執(zhí)行計(jì)劃,提高執(zhí)行的性能,從而使整個(gè)文檔庫系統(tǒng)的性能提高。 而對(duì)初始執(zhí)行計(jì)劃的局部優(yōu)化,使選出的最優(yōu)執(zhí)行計(jì)劃成本更低,從而進(jìn)一 步提高整個(gè)文檔庫系統(tǒng)的性能。本發(fā)明的另一目的在于提供一種文檔庫系統(tǒng)的實(shí)現(xiàn)方法,使通過該方法 實(shí)現(xiàn)的系統(tǒng)具有可擴(kuò)展、可伸縮和可維護(hù)性。本發(fā)明提供的一種文檔庫系統(tǒng)的實(shí)現(xiàn)方法,包括如下步驟步驟1,將應(yīng)用程序調(diào)用解析為由通用文檔模型的對(duì)象或操作構(gòu)成的中 間形式;步驟2,將中間形式解析為由對(duì)物理存儲(chǔ)的操作構(gòu)成的執(zhí)行計(jì)劃;步驟3,調(diào)度執(zhí)行執(zhí)行計(jì)劃。其中步驟2包含如下步驟步驟21,將由通用文檔模型的對(duì)象或操作構(gòu)成的中間形式解析為對(duì)應(yīng)的 多個(gè)執(zhí)行計(jì)劃;步驟23,從多個(gè)執(zhí)行計(jì)劃中根據(jù)判斷條件選擇一個(gè)最優(yōu)的執(zhí)行計(jì)劃。進(jìn)一步,在步驟21和步驟23之間包含如下步驟對(duì)生成的執(zhí)行計(jì)劃進(jìn)行執(zhí)行計(jì)劃空間搜索,并根據(jù)所述判斷條件獲得優(yōu) 化的執(zhí)行計(jì)劃。其中,采用的搜索算法為遺傳算法、演化算法、模擬退火算 法、分支定界算法、爬山算法、啟發(fā)式算法、人工神經(jīng)網(wǎng)絡(luò)算法或動(dòng)態(tài)編程 算法。 ,其中上述的應(yīng)用程序調(diào)用為XML形式或者符合LALR語法的自定義形 式。中間形式為語法樹或文檔對(duì)象模型樹。判斷條件為經(jīng)驗(yàn)規(guī)則、執(zhí)行計(jì)劃 的時(shí)間成本或空間成本或時(shí)間和空間成本的結(jié)合。而步驟23中選擇最優(yōu)執(zhí)行計(jì)劃的算法包括基于經(jīng)驗(yàn)規(guī)則優(yōu)先級(jí)的算法 或基于經(jīng)驗(yàn)規(guī)則賦權(quán)的算法。從上述技術(shù)方案可以看出,通過上述方法實(shí)現(xiàn)的文檔庫系統(tǒng),在各個(gè)步 驟間的接口滿足標(biāo)準(zhǔn)接口規(guī)范條件下,各個(gè)步驟的具體實(shí)現(xiàn)相互獨(dú)立,從而 使整個(gè)文檔庫系統(tǒng)的實(shí)現(xiàn)具有很強(qiáng)的可擴(kuò)展、可伸縮和可維護(hù)性。通過生成 多個(gè)執(zhí)行計(jì)劃并選擇最優(yōu)執(zhí)行計(jì)劃的步驟,使選出的最優(yōu)執(zhí)行計(jì)劃的成本較 低,從而使實(shí)現(xiàn)的文檔庫系統(tǒng)具有較高的性能。通過對(duì)計(jì)劃器生成的多個(gè)執(zhí) 行計(jì)劃進(jìn)行局部優(yōu)化的步驟,使選出的最優(yōu)執(zhí)行計(jì)劃成本更低,從而進(jìn)一步 提高整個(gè)文檔庫系統(tǒng)的性能。
圖1所示為本發(fā)明的文檔庫系統(tǒng)的分層示意圖; 圖2所示為本發(fā)明的文檔庫系統(tǒng)示意圖; 圖3所示為本發(fā)明的文檔庫系統(tǒng)實(shí)現(xiàn)方法的流程圖。
具體實(shí)施方式
本發(fā)明的基本思想是,為了實(shí)現(xiàn)文檔庫系統(tǒng)較好的可擴(kuò)展、可伸縮和可 維護(hù)性,將文檔庫系統(tǒng)的實(shí)現(xiàn)分為幾個(gè)層,并對(duì)相鄰層之間的接口定義標(biāo)準(zhǔn) 規(guī)范。這樣,在各個(gè)層的輸出結(jié)果符合標(biāo)準(zhǔn)接口規(guī)范的條件下,各個(gè)層的具 體實(shí)現(xiàn)可以分別有多種選擇,從而實(shí)現(xiàn)文檔庫系統(tǒng)具有較好的可擴(kuò)展、可伸 縮和可維護(hù)性。如圖1所示,本發(fā)明將文檔庫系統(tǒng)的實(shí)現(xiàn)分為如圖所示的幾個(gè)層將應(yīng) 用程序調(diào)用轉(zhuǎn)換為邏輯操作構(gòu)成的中間形式,將邏輯操作構(gòu)成的中間形式轉(zhuǎn) 換為物理操作構(gòu)成的執(zhí)行計(jì)劃,執(zhí)行執(zhí)行計(jì)劃。本發(fā)明的一個(gè)文檔庫系統(tǒng)如圖2所示,包括解釋器、計(jì)劃器、執(zhí)行器和 存儲(chǔ)模塊。其中,解釋器的輸入為應(yīng)用程序調(diào)用,輸出為符合標(biāo)準(zhǔn)接口規(guī)范的由通 用文檔模型的對(duì)象或操作構(gòu)成的中間形式。中間形式可以具體表現(xiàn)為語法樹 或文檔對(duì)象模型(DOM, Document Object Model)樹。應(yīng)用程序?qū)ξ臋n 庫系統(tǒng)標(biāo)準(zhǔn)接口的調(diào)用,首先由解釋器進(jìn)行處理。所謂標(biāo)準(zhǔn)接口,可以是文 檔庫系統(tǒng)基礎(chǔ)專利文檔中所說明的可擴(kuò)展置標(biāo)語言(XML, Extensible Markup Language)形式的UOML接口,也可以是命令串的形式,或者是其它的形式, 但都需要符合基礎(chǔ)專利文檔處理系統(tǒng)中所描述的通用文檔模型。應(yīng)用程序調(diào) 用通過解釋器進(jìn)行詞法、語法解析后,生成符合標(biāo)準(zhǔn)接口規(guī)范的由通用文檔 模型的對(duì)象或操作構(gòu)成的中間形式。對(duì)XML形式,可以使用XML解析器, 生成DOM樹。對(duì)于命令串形式,使用的命令串一般符合LALR(l)(Lookahead Left to Right Parsing)語法。在給出語法定義的情況下,可使用lex (Lexical compiler)禾口 yacc (Yet another compiler compiler)生成的詞法禾口語法解析器 來解析命令串。Lex是一種生成掃描器的工具,即生成詞法分析器的工具。 Yacc (Yet Another CompilerCompiler)是一種LALR(l)分析器的自動(dòng)生成工具,它 的第1版于70年代初發(fā)表,是美國貝爾實(shí)驗(yàn)室的軟件產(chǎn)品(作者為S.C.Johnson)。 這兩個(gè)工具目前在UNIX, DOS等系統(tǒng)平臺(tái)上廣泛流行。具體的XML解析以 及l(fā)ex、 yacc解析為現(xiàn)有技術(shù)。下面舉例具體說明XML形式的標(biāo)準(zhǔn)接口調(diào)用的解析<call><stringVal val-"AppendLine" name="MethodName7> <stringVal val="0xabcdl234" name="PathObj'7> 〈compoundVal name="LineObj"> <line><start xCod=" 1000.23" yCod="2193.3247〉 <end xCod="3233.234" yCod="2342.2347> </line> </compoundVal> </call>上述代碼表示的是一個(gè)XML形式的標(biāo)準(zhǔn)接口調(diào)用,接口方法的名稱為 AppendLine,該方法完成的任務(wù)是向句柄為0xabcdl234的路徑對(duì)象附加一條 線段,該線段的兩個(gè)端點(diǎn)位置分別是(1000.23, 2193.324)和(3233.234, 2342.234)。解釋器對(duì)上述的XML形式的標(biāo)準(zhǔn)接口調(diào)用進(jìn)行解析,解析后的結(jié)果表 現(xiàn)為DOM樹,該DOM樹的結(jié)構(gòu)是根元素為call, call有三個(gè)子元素,分 另ij是兩個(gè)stringVal禾口一個(gè)compoundVal 即如下的形式-callstringVal stringVal compoundVal下面是符合LALR(1)語法的自定義語言對(duì)文檔庫系統(tǒng)標(biāo)準(zhǔn)接口的調(diào)用 call with name=AppendLine, params=(PathObj=,,0xabcdl234,,, LineObj=(StartPt=( 1000.23, 2193.324), EndPt=(3233.234, 2342.234)));解釋器對(duì)上述的自定義形式的應(yīng)用程序調(diào)用,通過對(duì)應(yīng)的詞法和語法解 析器解析后生成語法樹。上述詞法和語法解析器可以通過預(yù)先調(diào)用lex或者yacc定義了自定義語言的詞法和語法后生成。語法樹可以通過下述C結(jié)構(gòu)表不struct SyntaxTree struct Node * pRoot;};struct Nodestruct Node *pLeft; struct Node *pRight;具體的樹形結(jié)構(gòu)與上述示例的DOM樹類似。解釋器輸出的是由邏輯操作構(gòu)成的中間形式,這些邏輯操作對(duì)應(yīng)于通用 文檔模型的對(duì)象或操作。這些與通用文檔模型對(duì)應(yīng)的邏輯操作需要轉(zhuǎn)換為對(duì) 物理存儲(chǔ)的操作。計(jì)劃器就是用來實(shí)現(xiàn)從通用文檔模型的對(duì)象或操作到對(duì)物 理存儲(chǔ)的操作的轉(zhuǎn)換。計(jì)劃器的輸入是由通用文檔模型的對(duì)象或操作構(gòu)成的 中間形式,其輸出就是由對(duì)物理存儲(chǔ)的操作構(gòu)成的執(zhí)行計(jì)劃。構(gòu)成中間形式 的邏輯操作是比較高層次的概念, 一個(gè)邏輯操作可能映射到單個(gè)物理操作, 也可能映射到由多個(gè)物理操作組成的序列,而且滿足條件的映射可能是多個(gè)。 所以單個(gè)中間形式,可能對(duì)應(yīng)多個(gè)執(zhí)行計(jì)劃。對(duì)同一個(gè)中間形式,每次調(diào)用 計(jì)劃器轉(zhuǎn)換后得到的執(zhí)行計(jì)劃,可能是不同的,但這些執(zhí)行計(jì)劃之間是等價(jià) 的。下面以語法樹為中間形式為例,說明計(jì)劃器對(duì)邏輯操作向物理操作轉(zhuǎn)換 的實(shí)現(xiàn)枚舉語法樹中的每一個(gè)邏輯操作L一OP,這里的邏輯操作,也可以是一組 邏輯操作的序列;獲得L—OP對(duì)應(yīng)的物理操作集合(P—OPl、 P_OP2、……、P一OPm),這 里的各個(gè)物理操作P—OPj也可以是一組物理操作的序列; 為L一OP選擇一個(gè)物理操作,假定為P—OPi;將語法樹中所有的邏輯操作都按照上述步驟,選擇對(duì)應(yīng)的物理操作,當(dāng) 語法樹中所有的邏輯操作都由對(duì)應(yīng)的物理操作所替換時(shí),則生成了執(zhí)行計(jì)劃。 對(duì)DOM樹和其它中間形式的轉(zhuǎn)換與上述實(shí)現(xiàn)類似。 對(duì)上述例子中以DOM數(shù)為例的中間形式經(jīng)過計(jì)劃器轉(zhuǎn)換后生成的執(zhí)行 計(jì)劃如下所示 AppendLine PathObj CreateLine StartPt EndPt其中,執(zhí)行計(jì)劃的根結(jié)點(diǎn)AppendLine是操作,其第一個(gè)子結(jié)點(diǎn)PathObj 是Path對(duì)象的句柄,而第二個(gè)子結(jié)點(diǎn)是CreateLine操作,用于創(chuàng)建線段對(duì)象, CreateLine的兩個(gè)子結(jié)點(diǎn)分別是創(chuàng)建線段的起始點(diǎn)和結(jié)束點(diǎn)。CreateLine的執(zhí)行結(jié)果,會(huì)生成對(duì)應(yīng)的線段對(duì)象,而AppendLine操作, 則會(huì)將該線段對(duì)象添加到Path對(duì)象中。執(zhí)行器用于調(diào)度執(zhí)行計(jì)劃。執(zhí)行計(jì)劃一般是由對(duì)物理存儲(chǔ)的操作構(gòu)成的 樹,執(zhí)行器自執(zhí)行計(jì)劃對(duì)應(yīng)樹的根結(jié)點(diǎn)開始,自頂向下遞歸,從樹最末端的 結(jié)點(diǎn)自底向上通過存儲(chǔ)模塊執(zhí)行實(shí)際的操作,逐步完成整個(gè)執(zhí)行計(jì)劃。 例如執(zhí)行器執(zhí)行下述的執(zhí)行計(jì)劃 0P1 Paral Para2 OP2 Para3 Para4 OP3 Para5 Para6其中OPl、 OP2和OP3為三個(gè)操作,Paral-Para6為六個(gè)對(duì)應(yīng)操作的參數(shù)。執(zhí)行器執(zhí)行上述執(zhí)行計(jì)劃的過程順序如下 執(zhí)行OP3 (Pam5, Para6),結(jié)果為res3; 執(zhí)行OP2 (Para3, Para4), res3),結(jié)果為res2; 執(zhí)行OPl (Paral, Para2, res2),結(jié)果為resl。存儲(chǔ)模塊可以建構(gòu)在各種物理或虛擬的物理存儲(chǔ)層上,有不同的性能、 規(guī)模方面的約束。在系統(tǒng)的實(shí)現(xiàn)中,物理存儲(chǔ)層提供的接口會(huì)影響到構(gòu)成執(zhí) 行計(jì)劃的物理操作的構(gòu)成;例如,如果物理存儲(chǔ)層只提供了二進(jìn)制流的讀取/ 寫入,則構(gòu)成執(zhí)行計(jì)劃的物理操作可能只包含讀取/寫入兩種物理操作,如果 物理存儲(chǔ)層提供了更多操作,比如創(chuàng)建文檔庫、創(chuàng)建文檔集合等,則構(gòu)成執(zhí) 行計(jì)劃的物理操作就會(huì)多。物理存儲(chǔ)層需要提供的基本對(duì)象包括文檔庫、文 檔集合、文檔等還需要提供分配、回收、讀寫物理存儲(chǔ)的功能。在使用邏輯分區(qū)、物理磁盤、虛擬存儲(chǔ)、內(nèi)存等等媒介時(shí),存儲(chǔ)模塊的 實(shí)現(xiàn)都是類似的。存儲(chǔ)模塊可以在如下的基礎(chǔ)上構(gòu)建操作系統(tǒng)提供的文件 系統(tǒng),或操作系統(tǒng)提供的邏輯分區(qū),或操作系統(tǒng)提供的訪問物理磁盤的接口, 或繞過操作系統(tǒng)訪問物理磁盤的接口 ,或操作系統(tǒng)提供的訪問虛擬內(nèi)存或物 理內(nèi)存的接口,或繞過操作系統(tǒng)之間訪問物理內(nèi)存的接口,或虛擬存儲(chǔ)設(shè)備。 并在此基礎(chǔ)上實(shí)現(xiàn)文檔庫、文檔集合、文檔等物理存儲(chǔ)層對(duì)象其中,虛擬存儲(chǔ)可以使用遠(yuǎn)程存儲(chǔ),即實(shí)際的物理存儲(chǔ)在另一計(jì)算設(shè)備上。如網(wǎng)絡(luò)文件系統(tǒng)(NFS)、分布式文件系統(tǒng)(DFS)。虛擬存儲(chǔ)也可以使用 網(wǎng)絡(luò)存儲(chǔ),即實(shí)際的網(wǎng)絡(luò)存儲(chǔ)由一個(gè)網(wǎng)絡(luò)提供。如存儲(chǔ)區(qū)域網(wǎng)絡(luò)(SAN, Storage AreaNetwork)、網(wǎng)格(GRID)、對(duì)等(P2P, PEER-to-PEER)方式的存儲(chǔ)等。以文件系統(tǒng)為例,存儲(chǔ)模塊執(zhí)行如下操作設(shè)定某個(gè)目錄為文檔庫;在文檔庫目錄下,建立一個(gè)或多個(gè)文檔集合目錄; 在文檔集合目錄下,建立一個(gè)或多個(gè)文件作為文檔; 在文檔中,可以建立頁、層、頁面流等等。最后的目錄結(jié)構(gòu)可能如下所示,其中文檔以文件形式出現(xiàn),放置在dodist 目錄下-/……docbase/ doclist/ doclist/上述是本發(fā)明的文檔庫系統(tǒng)的各個(gè)模塊的具體實(shí)現(xiàn)。從上面的描述可以 看出,不同的模塊之間具有標(biāo)準(zhǔn)的接口規(guī)范。在輸入輸出符合標(biāo)準(zhǔn)接口規(guī)范 的條件下,各個(gè)模塊的具體實(shí)現(xiàn)可以采用不同的方案,從而使整個(gè)文檔庫系 統(tǒng)的實(shí)現(xiàn)具有可擴(kuò)展、可伸縮和可維護(hù)性的特性。
本發(fā)明的文檔庫系統(tǒng)可以進(jìn)一步包含優(yōu)化器。在上述計(jì)劃器的描述中, 指出了對(duì)同一個(gè)中間形式,每次調(diào)用計(jì)劃器轉(zhuǎn)換后得到的執(zhí)行計(jì)劃可能是不 同的。雖然這些執(zhí)行計(jì)劃之間是等價(jià)的,但是不同執(zhí)行計(jì)劃在執(zhí)行時(shí)所耗費(fèi) 的時(shí)間和占用的空間卻經(jīng)常相差甚遠(yuǎn),所以從對(duì)應(yīng)執(zhí)行計(jì)劃集合中確定的執(zhí) 行計(jì)劃是否是優(yōu)選的,對(duì)文檔庫系統(tǒng)的性能會(huì)有很大的影響。優(yōu)化器就是用 于從與中間形式對(duì)應(yīng)的執(zhí)行計(jì)劃集合中,按照確定的判斷規(guī)則,挑選出優(yōu)選 的執(zhí)行計(jì)劃。一種優(yōu)化器的實(shí)現(xiàn)是,由計(jì)劃器生成一定數(shù)目的執(zhí)行計(jì)劃,例如計(jì)劃器 可以隨機(jī)生成一定數(shù)目的執(zhí)行計(jì)劃;然后由優(yōu)化器根據(jù)判斷條件從生成的執(zhí) 行計(jì)劃集合中選出最優(yōu)的執(zhí)行計(jì)劃。需要指出的,所謂的最優(yōu)是從判斷條件 或者實(shí)際需求的意義上來說的,例如,在要求執(zhí)行時(shí)間最少的判斷條件下選 出的最優(yōu)執(zhí)行計(jì)劃,可能執(zhí)行需要的最大空間很大,從而該執(zhí)行計(jì)劃在執(zhí)行 的最大空間要求最小的判斷條件下,并不是最優(yōu)的執(zhí)行計(jì)劃。上述的判斷條 件可以是經(jīng)驗(yàn)規(guī)則,或者是基于執(zhí)行計(jì)劃成本的比較,即基于執(zhí)行計(jì)劃的時(shí) 間成本、空間成本或者時(shí)間與空間成本的結(jié)合的比較。以下舉例說明一種優(yōu)化器基于經(jīng)驗(yàn)規(guī)則優(yōu)先級(jí)選擇最優(yōu)執(zhí)行計(jì)劃的實(shí)現(xiàn)。假定優(yōu)化器 設(shè)有L條規(guī)則,分別為Rl, R2,……RL,不失一般性,假定規(guī)則的優(yōu)先 級(jí)為R1〉R2〉……>RL,優(yōu)化器執(zhí)行如下操作-al,設(shè)定執(zhí)行計(jì)劃集合為生成的所有執(zhí)行計(jì)劃,設(shè)定當(dāng)前用于判斷的經(jīng)驗(yàn)規(guī)則為Ri, i=l; a2,對(duì)執(zhí)行計(jì)劃集合中的所有執(zhí)行計(jì)劃,依次判斷是否符合規(guī)則Ri, 如果一個(gè)執(zhí)行計(jì)劃不符合規(guī)則Ri,則標(biāo)記該執(zhí)行計(jì)劃,并將該執(zhí)行 計(jì)劃從執(zhí)行計(jì)劃集合中去除; a3,如果執(zhí)行計(jì)劃集合為空,則將a2中標(biāo)記的執(zhí)行計(jì)劃放入執(zhí)行計(jì)劃 集合,并執(zhí)行下面的操作;如果i等于L,則執(zhí)行下面的操作;否則, 將i加1,重復(fù)執(zhí)行a2; a4,從執(zhí)行計(jì)劃集合中任意挑選一個(gè)執(zhí)行計(jì)劃,作為基于經(jīng)驗(yàn)規(guī)則優(yōu)先級(jí)選擇的最優(yōu)執(zhí)行計(jì)劃。 一種優(yōu)化器基于經(jīng)驗(yàn)規(guī)則賦權(quán)的選擇最優(yōu)執(zhí)行計(jì)劃的實(shí)現(xiàn)。假定優(yōu)化器
設(shè)有L條規(guī)則,分別為R1, R2,……RL,不失一般性,假定規(guī)則Ri的權(quán) 值為PRi;優(yōu)化器執(zhí)行如下操作對(duì)所有的執(zhí)行計(jì)劃,將其權(quán)值初始化為O;對(duì)每個(gè)執(zhí)行計(jì)劃,判斷其是否符合規(guī)則Ri (i=l,......,L);如果符合,則將該執(zhí)行計(jì)劃的權(quán)值增加PRi;根據(jù)各個(gè)執(zhí)行計(jì)劃的權(quán)值,挑選出權(quán)值最大的執(zhí)行計(jì)劃,作為基于經(jīng)驗(yàn) 規(guī)則賦權(quán)的選擇的最優(yōu)執(zhí)行計(jì)劃。如果符合條件的最優(yōu)執(zhí)行計(jì)劃有多個(gè),可 以任意選出一個(gè)。上面描述的是基于經(jīng)驗(yàn)規(guī)則的優(yōu)化器選擇最優(yōu)執(zhí)行計(jì)劃的兩種實(shí)現(xiàn),下 面介紹基于執(zhí)行計(jì)劃成本的優(yōu)化器選擇最優(yōu)執(zhí)行計(jì)劃的實(shí)現(xiàn)。執(zhí)行計(jì)劃的成本,包括時(shí)間成本和空間成本。時(shí)間成本是指執(zhí)行整個(gè)執(zhí) 行計(jì)劃所花費(fèi)的時(shí)間,而空間成本則指整個(gè)執(zhí)行過程中,最后的結(jié)果和中間 結(jié)果可能占據(jù)的最大空間。由于這種執(zhí)行涉及的磁盤I/O時(shí)間是時(shí)間成本的主要部分,對(duì)時(shí)間成本的計(jì)算也主要是計(jì)算磁盤I/0時(shí)間;對(duì)空間成本而言,涉及到內(nèi)存和磁盤兩方面的占用。一) 計(jì)算執(zhí)行計(jì)劃的時(shí)間成本對(duì)具體的執(zhí)行計(jì)劃而言,優(yōu)化器預(yù)先精確計(jì)算其執(zhí)行時(shí)間實(shí)際上不可能, 只能將執(zhí)行計(jì)劃拆解為一些基本操作,以各個(gè)基本操作花費(fèi)的時(shí)間為基準(zhǔn), 按照各個(gè)基本操作實(shí)際執(zhí)行次數(shù)進(jìn)行累加,最后估算出執(zhí)行計(jì)劃總共花費(fèi)的 時(shí)間。通常的方法是優(yōu)化器按照遞歸的執(zhí)行次序遍歷整個(gè)執(zhí)行計(jì)劃,獲得各 個(gè)基本操作的執(zhí)行次數(shù),然后計(jì)算出整個(gè)執(zhí)行計(jì)劃花費(fèi)的時(shí)間。二) 計(jì)算執(zhí)行計(jì)劃的空間成本和執(zhí)行計(jì)劃的時(shí)間成本不同的是,執(zhí)行計(jì)劃的空間成本通常指的是執(zhí)行 過程中的空間的最大值。計(jì)算的方法是優(yōu)化器按遞歸次序,自底向上計(jì)算, 并將當(dāng)前的執(zhí)行需要的空間和當(dāng)前最大的空間值進(jìn)行比較,如果大于當(dāng)前最 大空間值,則用當(dāng)前的執(zhí)行空間替換當(dāng)前的最大空間,當(dāng)執(zhí)行計(jì)劃計(jì)算結(jié)束 后,就可以得到執(zhí)行計(jì)劃的最大空間,即該執(zhí)行計(jì)劃的空間成本。下面分別舉例說明執(zhí)行計(jì)劃時(shí)間成本和空間成本的計(jì)算方法。一種計(jì)算執(zhí)行計(jì)劃的時(shí)間成本的方法。假定執(zhí)行計(jì)劃是樹形結(jié)構(gòu),基本操作包括(OPl、 OP2、……OPn),假定計(jì)算執(zhí)行計(jì)劃的時(shí)間成本函數(shù)為 TIME—CALC(NODE node),以下是TIME—CALC的實(shí)現(xiàn) 初始化執(zhí)行時(shí)間變量T為O;對(duì)node的子結(jié)點(diǎn)(SUB1、 SUB2......SUBm),執(zhí)行T = T + ETIME—CALC(SUBi),啞元i的范圍從l到m; 計(jì)算node涉及的各個(gè)基本操作的數(shù)量,其中OPi的數(shù)量簡記為Ci, OPi 本身需要的時(shí)間簡記為OTi;T-T+ i:CPOTi,此處啞元i的范圍是,從l到n; 將T作為TIME—CALC的結(jié)果返回。一種計(jì)算執(zhí)行計(jì)劃的時(shí)間成本的方法。假定執(zhí)行計(jì)劃是樹形結(jié)構(gòu),基本 操作包括(OPl、 OP2、……OPn),假定計(jì)算執(zhí)行空間的函數(shù)為 SPACE—CALC(NODE node),以下是SPACE—CALC的實(shí)現(xiàn)初始化執(zhí)行空間變量S為O;對(duì)node的子結(jié)點(diǎn)(SUB1、 SUB2 SUBm),執(zhí)行-S = S + MAX(SPACE—CALC(SUBi)),啞元i的范圍從l到m; 計(jì)算node涉及的各個(gè)基本操作的數(shù)量,其中OPi的數(shù)量簡記為Ci, OPi 本身需要的時(shí)間簡記為OTi;S = S + MAX(C"OTi),此處啞元i的范圍是,從1到n; 將S作為SPACE—CALC的結(jié)果返回。從上面的描述可以看出,優(yōu)化器從多個(gè)執(zhí)行計(jì)劃中按照判斷條件挑選出 最優(yōu)的執(zhí)行計(jì)劃,優(yōu)選出的執(zhí)行計(jì)劃往往具有較低的時(shí)間或者空間成本,從 而提高了整個(gè)文檔庫系統(tǒng)的性能。優(yōu)化器可以直接從由計(jì)劃器生成的執(zhí)行計(jì)劃中選擇最優(yōu)的執(zhí)行計(jì)劃,也 可以首先利用例如遺傳算法、人工神經(jīng)網(wǎng)絡(luò)等人工智能算法對(duì)由計(jì)劃器生成 的執(zhí)行計(jì)劃進(jìn)行優(yōu)化,并從改進(jìn)后的執(zhí)行計(jì)劃中選擇最優(yōu)的執(zhí)行計(jì)劃。上述對(duì)執(zhí)行計(jì)劃的優(yōu)化,其根本是將執(zhí)行計(jì)劃的成本,或其它度量值, 作為一個(gè)度量函數(shù)與智能算法中的度量值,如遺傳算法中的適應(yīng)度和模擬退 火算法中的能量,關(guān)聯(lián)起來,通過這些算法對(duì)執(zhí)行計(jì)劃空間進(jìn)行搜索,從而 得到局部優(yōu)化的執(zhí)行計(jì)劃。 下面介紹幾種對(duì)執(zhí)行計(jì)劃進(jìn)行優(yōu)化的實(shí)現(xiàn)方法。 一種使用遺傳算法改進(jìn)初始執(zhí)行計(jì)劃的方法,包括如下步驟-將執(zhí)行計(jì)劃樹編碼為串,形成一個(gè)串的集合,即遺傳算法所使用初始種群;以執(zhí)行的時(shí)間或空間作為適應(yīng)度的度量函數(shù),對(duì)初始種群進(jìn)行演化;在演化到預(yù)定數(shù)目的后代之后停止演化,然后將最后得到的種群解碼為執(zhí)行計(jì)劃。需要指出的是,上面所述的適應(yīng)度度量函數(shù),除對(duì)應(yīng)于執(zhí)行的時(shí)間空間 之外,還可以選擇其他度量,例如對(duì)文檔執(zhí)行獲取頁面位圖操作次數(shù)。 一種使用模擬退火算法改進(jìn)初始執(zhí)行計(jì)劃的方法,對(duì)初始執(zhí)行計(jì)劃集合中的每一個(gè)執(zhí)行計(jì)劃,都執(zhí)行下述操作dl,當(dāng)前執(zhí)行計(jì)劃為C,改進(jìn)后的執(zhí)行計(jì)劃為B,將B初始化為C; d2,初始化當(dāng)前溫度T;d3,初始化溫度降低因子ALPHA為0到1之間的值;d4, T大于設(shè)定的停止溫度FT時(shí),循環(huán)執(zhí)行下述操作序列-4.1)在當(dāng)前溫度下,執(zhí)行次數(shù)小于設(shè)定的COUNT時(shí),循環(huán)執(zhí)行以下 操作4丄1)將當(dāng)前執(zhí)行計(jì)劃C,復(fù)制到臨時(shí)執(zhí)行計(jì)劃W;4丄2)對(duì)W進(jìn)行隨機(jī)的微調(diào),但要保證W與C的等價(jià)性; 4丄3)分別計(jì)算C和W的能量(即執(zhí)行成本)Ec和Ew; 4丄4)如果EOEw,則將W復(fù)制到C和B; 4丄5)如果Ec〈二Ew,則執(zhí)行下述計(jì)算初始化TEST為0到1之間的隨機(jī)值; DELTA-Ew — Ec; RESULT = EXP(-DELTA / T); 如果RESULT大于TEST,則將W復(fù)制到C; 4.2)降低當(dāng)前溫度,T = T* ALPHA; d5,將執(zhí)行計(jì)劃B復(fù)制到C。 除了上述的介紹的兩種算法,還可以采用演化計(jì)算、啟發(fā)式算法、分支
定界算法、爬山算法、人工神經(jīng)網(wǎng)絡(luò)或動(dòng)態(tài)編程等技術(shù)領(lǐng)域內(nèi)的算法,對(duì)執(zhí) 行計(jì)劃進(jìn)行優(yōu)化。對(duì)于其他算法改進(jìn)初始執(zhí)行計(jì)劃的方法,其策略與上述兩 種方法是類似的。通過對(duì)初始的執(zhí)行計(jì)劃進(jìn)行局部優(yōu)化,可以使優(yōu)化器選出的最優(yōu)執(zhí)行計(jì) 劃成本更低,從而進(jìn)一步提高整個(gè)文檔庫系統(tǒng)的性能。需要指出的是,本發(fā)明所述的解釋器、計(jì)劃器、優(yōu)化器、執(zhí)行器和存儲(chǔ) 模塊,其中的一個(gè)或者幾個(gè)模塊都可以作為獨(dú)立的模塊實(shí)現(xiàn)。例如,在Windows系統(tǒng)下,各個(gè)模塊可以分別實(shí)現(xiàn)為單獨(dú)的DLL,也可以將所有的模 塊實(shí)現(xiàn)為一個(gè)DLL。在liniix系統(tǒng)下,各個(gè)模塊可以分別實(shí)現(xiàn)為一個(gè)so文件, 也可以將所有的模塊實(shí)現(xiàn)為一個(gè)so文件。在java環(huán)境下,各個(gè)模塊的可以分 別實(shí)現(xiàn)為一個(gè).class文件,也可以將所有的模塊實(shí)現(xiàn)為一個(gè).class文件。而各個(gè)模塊的實(shí)現(xiàn),可以使用C、C++、Java、Python、Ruby、Perl、SmallTalk、 Ada、 Simula、 Pascal、 Haskell等語言開發(fā)。如圖3所示, 一種文檔庫系統(tǒng)的實(shí)現(xiàn)方法,包括如下步驟 步驟1,將應(yīng)用程序調(diào)用解析為由通用文檔模型的對(duì)象或操作構(gòu)成的中 間形式。應(yīng)用程序?qū)ξ臋n庫系統(tǒng)標(biāo)準(zhǔn)接口的調(diào)用,可以是文檔庫系統(tǒng)基礎(chǔ)專利文 檔中所說明的UOML,也可以是命令串的形式,但都需要符合文檔庫系統(tǒng)基 礎(chǔ)專利中所指出的通用文檔模型。對(duì)應(yīng)用程序調(diào)用進(jìn)行詞法、語法解析后, 生成符合標(biāo)準(zhǔn)接口規(guī)范的由通用文檔模型的對(duì)象或者操作構(gòu)成的中間形式。 對(duì)XML,可以使用XML解析器,生成DOM樹。對(duì)于命令串形式,使用的 命令串一般符合LALR(1)語法,在給出語法定義的情況下,可使用lex和yacc 生成的詞法和語法解析器解析命令串。步驟2,將中間形式解析為由對(duì)物理存儲(chǔ)的操作構(gòu)成的執(zhí)行計(jì)劃。 構(gòu)成中間形式的通用文檔模型的對(duì)象或者操作是邏輯操作,這些邏輯操 作是比較高層次的概念, 一個(gè)邏輯操作可能映射到單個(gè)對(duì)物理存儲(chǔ)的操作, 也可能映射到由多個(gè)對(duì)物理存儲(chǔ)的操作組成的序列,而且滿足條件的映射可 能是多個(gè)。所以單個(gè)中間形式,可能對(duì)應(yīng)多個(gè)執(zhí)行計(jì)劃。對(duì)同一個(gè)中間形式, 每次轉(zhuǎn)換后的執(zhí)行計(jì)劃,可能是不同的。 一種將語法樹表示的中間形式轉(zhuǎn)換為執(zhí)行計(jì)劃的方法包括如下步驟-枚舉語法樹中的每一個(gè)邏輯操作L—OP,這里的邏輯操作,也可以是一組 邏輯操作的序列;獲得L一OP對(duì)應(yīng)的物理操作集合(P一0P1、 P一OP2、 、 P一OPm),這里的各個(gè)物理操作P_OPj也可以是一組物理操作的序列; 為L—OP選擇一個(gè)物理操作,假定為P—OPi;將語法樹中所有的邏輯操作都按照上述步驟,選擇對(duì)應(yīng)的物理操作,當(dāng) 語法樹中所有的邏輯操作都由對(duì)應(yīng)的物理操作所替換時(shí),則生成了執(zhí)行計(jì)劃。 對(duì)DOM樹和其它中間形式的轉(zhuǎn)換與上述實(shí)現(xiàn)類似。 步驟3,調(diào)度并執(zhí)行執(zhí)行計(jì)劃。自執(zhí)行計(jì)劃對(duì)應(yīng)樹的根結(jié)點(diǎn)開始,自頂向下遞歸,到達(dá)樹的最末端結(jié)點(diǎn) 后自底向上執(zhí)行實(shí)際的操作,逐步完成整個(gè)執(zhí)行計(jì)劃。通過上述方法實(shí)現(xiàn)的文檔庫系統(tǒng),在各個(gè)步驟間的接口滿足標(biāo)準(zhǔn)接口規(guī) 范條件下,各個(gè)步驟的具體實(shí)現(xiàn)相互獨(dú)立,從而使整個(gè)文檔庫系統(tǒng)的實(shí)現(xiàn)具 有很強(qiáng)的可擴(kuò)展、可伸縮和可維護(hù)性。進(jìn)一步,步驟2包含如下的步驟步驟21,將由通用文檔模型的對(duì)象或操作構(gòu)成的中間形式解析為對(duì)應(yīng)的 多個(gè)執(zhí)行計(jì)劃;構(gòu)成中間形式的通用文檔模型的對(duì)象或操作是邏輯操作,這些邏輯操作 是比較高層次的概念, 一個(gè)邏輯操作可能映射到單個(gè)物理操作,也可能映射 到由多個(gè)物理操作組成的序列,而且滿足條件的映射可能是多個(gè)。所以單個(gè) 中間形式,可能對(duì)應(yīng)多個(gè)執(zhí)行計(jì)劃??梢愿鶕?jù)由邏輯操作構(gòu)成的中間形式, 隨機(jī)生成對(duì)應(yīng)的多個(gè)執(zhí)行計(jì)劃。步驟23,從多個(gè)執(zhí)行計(jì)劃中根據(jù)判斷條件選擇一個(gè)最優(yōu)的執(zhí)行計(jì)劃。 可以根據(jù)判斷條件從生成的執(zhí)行計(jì)劃集合中選出最優(yōu)的執(zhí)行計(jì)劃。需要 指出的,所謂的最優(yōu)是從判斷條件或者實(shí)際需求的意義上來說的,例如,在 要求執(zhí)行時(shí)間最少的判斷條件下選出的最優(yōu)執(zhí)行計(jì)劃,可能執(zhí)行需要的最大 空間很大,從而該執(zhí)行計(jì)劃在執(zhí)行的最大空間要求最小的判斷條件下,并不 是最優(yōu)的執(zhí)行計(jì)劃。上述的判斷條件可以是經(jīng)驗(yàn)規(guī)則,或者是基于執(zhí)行計(jì)劃
成本的比較,即基于執(zhí)行計(jì)劃的時(shí)間成本、空間成本或者時(shí)間與空間成本的 結(jié)合的比較。一種基于經(jīng)驗(yàn)規(guī)則優(yōu)先級(jí)選擇最優(yōu)執(zhí)行計(jì)劃的方法。假定有L條規(guī)則,分別為R1, R2,……RL,不失一般性,假定規(guī)則的優(yōu)先級(jí)為R1〉R2〉…… >RL,包括如下步驟bl,設(shè)定執(zhí)行計(jì)劃集合為生成的所有執(zhí)行計(jì)劃,設(shè)定當(dāng)前用于判斷的經(jīng)驗(yàn)規(guī)則為Ri, i=l; b2,對(duì)執(zhí)行計(jì)劃集合中的所有執(zhí)行計(jì)劃,依次判斷是否符合規(guī)則Ri, 如果一個(gè)執(zhí)行計(jì)劃不符合規(guī)則Ri,則標(biāo)記該執(zhí)行計(jì)劃,并將該執(zhí)行計(jì) 劃從執(zhí)行計(jì)劃集合中去除; b3,如果執(zhí)行計(jì)劃集合為空,則將b2中標(biāo)記的執(zhí)行計(jì)劃放入執(zhí)行計(jì)劃 集合,并執(zhí)行下面的步驟;如果i等于L,則執(zhí)行下面的步驟;否則, 將i加1,重復(fù)執(zhí)行b2; b4,從執(zhí)行計(jì)劃集合中任意挑選一個(gè)執(zhí)行計(jì)劃,作為基于經(jīng)驗(yàn)規(guī)則優(yōu)先級(jí)選擇的最優(yōu)執(zhí)行計(jì)劃。 一種基于經(jīng)驗(yàn)規(guī)則賦權(quán)的選擇最優(yōu)執(zhí)行計(jì)劃的方法。假定有L條規(guī)則, 分別為R1, R2,……RL,不失一般性,假定規(guī)則Ri的權(quán)值為PRh包括 如下步驟對(duì)所有的執(zhí)行計(jì)劃,將其權(quán)值初始化為0;對(duì)每個(gè)執(zhí)行計(jì)劃,判斷其是否符合規(guī)則Ri (i=l,......,L);如果符合,則將該執(zhí)行計(jì)劃的權(quán)值增加PRi;根據(jù)各個(gè)執(zhí)行計(jì)劃的權(quán)值,挑選出權(quán)值最大的執(zhí)行計(jì)劃,作為基于經(jīng)驗(yàn) 規(guī)則賦權(quán)的選擇的最優(yōu)執(zhí)行計(jì)劃。如果權(quán)值最大的執(zhí)行計(jì)劃有多個(gè),可以任意選出一個(gè)。上面描述的是基于經(jīng)驗(yàn)規(guī)則的選擇最優(yōu)執(zhí)行計(jì)劃的兩種方法,下面介紹 基于執(zhí)行計(jì)劃成本的選擇最優(yōu)執(zhí)行計(jì)劃的方法。執(zhí)行計(jì)劃的成本,包括時(shí)間成本和空間成本。時(shí)間成本是指執(zhí)行整個(gè)執(zhí) 行計(jì)劃所花費(fèi)的時(shí)間,而空間成本則指整個(gè)執(zhí)行過程中,最后的結(jié)果和中間 結(jié)果可能占據(jù)的最大空間。由于這種執(zhí)行涉及的磁盤I/O時(shí)間是時(shí)間成本的
主要部分,對(duì)時(shí)間成本的計(jì)算也主要是計(jì)算磁盤I/0時(shí)間;對(duì)空間成本而言, 涉及到內(nèi)存和磁盤兩方面的占用。關(guān)于執(zhí)行計(jì)劃的時(shí)間成本和空間成本的計(jì)算方法,可以參見上面優(yōu)化器 實(shí)現(xiàn)部分的相應(yīng)內(nèi)容。通過上述生成多個(gè)執(zhí)行計(jì)劃并選擇最優(yōu)執(zhí)行計(jì)劃的步驟,使選出的最優(yōu) 執(zhí)行計(jì)劃的成本較低,從而使整個(gè)文檔庫系統(tǒng)的實(shí)現(xiàn)方法具有較高的性能。進(jìn)一步,在步驟21和步驟23之間還包括如下步驟 步驟22,優(yōu)化對(duì)應(yīng)的多個(gè)執(zhí)行計(jì)劃獲得它們的局部優(yōu)化的執(zhí)行計(jì)劃。 與步驟22相對(duì)應(yīng),步驟23從優(yōu)化后的多個(gè)執(zhí)行計(jì)劃中選擇一個(gè)最優(yōu)的 執(zhí)行計(jì)劃。上述步驟22中對(duì)執(zhí)行計(jì)劃的優(yōu)化,其根本是將執(zhí)行計(jì)劃的成本或其它度 量值,作為一個(gè)度量函數(shù)與智能算法中的度量值,如遺傳算法中的適應(yīng)度和 模擬退火算法中的能量,關(guān)聯(lián)起來,通過這些算法對(duì)執(zhí)行計(jì)劃空間進(jìn)行搜索, 從而得到局部優(yōu)化的執(zhí)行計(jì)劃。執(zhí)行計(jì)劃進(jìn)行優(yōu)化的方法包括遺傳算法、模擬退火算法等,這兩種方法 的具體步驟參見優(yōu)化器部分相應(yīng)內(nèi)容的描述。除了上述的介紹的兩種算法,,還可以采用演化計(jì)算、啟發(fā)式算法、分支 定界算法、爬山算法、人工神經(jīng)網(wǎng)絡(luò)或動(dòng)態(tài)編程等技術(shù)領(lǐng)域內(nèi)的算法,對(duì)執(zhí) 行計(jì)劃進(jìn)行優(yōu)化。對(duì)于其他算法改進(jìn)初始執(zhí)行計(jì)劃的方法,其策略與上述兩 種方法是類似的。通過對(duì)初始的執(zhí)行計(jì)劃進(jìn)行局部優(yōu)化的步驟,使選出的最優(yōu)執(zhí)行計(jì)劃成 本更低,從而進(jìn)一步提高整個(gè)文檔庫系統(tǒng)的性能。綜上所述,本發(fā)明提供的文檔庫系統(tǒng)及其實(shí)現(xiàn)方法,將文檔庫系統(tǒng)的實(shí) 現(xiàn)分為多層。由于不同層的實(shí)現(xiàn)可以相對(duì)獨(dú)立,從而使本發(fā)明提供的文檔庫 系統(tǒng)具有可擴(kuò)展、可伸縮和可維護(hù)性。通過本發(fā)明提供的優(yōu)化器和相應(yīng)的優(yōu) 化算法,可以從多個(gè)執(zhí)行計(jì)劃中選出一個(gè)最優(yōu)的執(zhí)行計(jì)劃,提高執(zhí)行的性能, 從而使整個(gè)文檔庫系統(tǒng)的性能提高。而對(duì)初始執(zhí)行計(jì)劃的局部優(yōu)化,可以使 選出的最優(yōu)執(zhí)行計(jì)劃成本更低,從而進(jìn)一步提高整個(gè)文檔庫系統(tǒng)的性能,使 整個(gè)文檔庫系統(tǒng)的實(shí)現(xiàn)具有高性能。
以上所述,僅為本發(fā)明較佳的具體實(shí)施方式
,但本發(fā)明的保護(hù)范圍并不 局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可 輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明 的保護(hù)范圍應(yīng)該以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
1.一種文檔庫系統(tǒng),其特征在于,包括解釋器、計(jì)劃器、執(zhí)行器和存儲(chǔ)模塊,其中,解釋器用于接收應(yīng)用程序調(diào)用并將其解析為由通用文檔模型的對(duì)象或操作構(gòu)成的中間形式;計(jì)劃器用于接收中間形式并將其解析為由對(duì)物理存儲(chǔ)的操作構(gòu)成的執(zhí)行計(jì)劃;執(zhí)行器用于調(diào)度執(zhí)行計(jì)劃中對(duì)物理存儲(chǔ)的操作的執(zhí)行;存儲(chǔ)模塊用于執(zhí)行構(gòu)成執(zhí)行計(jì)劃的對(duì)物理存儲(chǔ)的操作。
2. 如權(quán)利要求1所述的文檔庫系統(tǒng),其特征在于,還包括優(yōu)化器,用于 從計(jì)劃器生成的執(zhí)行計(jì)劃中根據(jù)判斷條件選擇最優(yōu)執(zhí)行計(jì)劃。
3. 如權(quán)利要求2所述的文檔庫系統(tǒng),其特征在于,優(yōu)化器用于對(duì)計(jì)劃器 生成的執(zhí)行計(jì)劃進(jìn)行執(zhí)行計(jì)劃空間搜索,并根據(jù)所述判斷條件獲得優(yōu)化的執(zhí) 行計(jì)劃。
4. 如權(quán)利要求1或2或3所述的文檔庫系統(tǒng),其特征在于,所述的應(yīng)用 程序調(diào)用為XML形式或者符合LALR語法的自定義形式。
5. 如權(quán)利要求1或2或3所述的文檔庫系統(tǒng),其特征在于,所述的中間形式為語法樹或文檔對(duì)象模型樹。
6. 如權(quán)利要求1或2或3所述的文檔庫系統(tǒng),其特征在于,所述存儲(chǔ)模 塊支持對(duì)邏輯分區(qū)、物理磁盤、虛擬存儲(chǔ)、內(nèi)存中的一種或多種的物理存儲(chǔ) 操作。
7. 如權(quán)利要求6所述的文檔庫系統(tǒng),其特征在于,所述的虛擬存儲(chǔ)為遠(yuǎn) 程存儲(chǔ)或網(wǎng)絡(luò)存儲(chǔ),所述遠(yuǎn)程存儲(chǔ)包括網(wǎng)絡(luò)文件系統(tǒng)或分布式文件系統(tǒng),所 述網(wǎng)絡(luò)存儲(chǔ)包括存儲(chǔ)區(qū)域網(wǎng)絡(luò)或網(wǎng)格或?qū)Φ确绞降拇鎯?chǔ)。
8. 如權(quán)利要求3所述的文檔庫系統(tǒng),其特征在于,實(shí)現(xiàn)所述執(zhí)行計(jì)劃優(yōu)化的算法為遺傳算法、演化算法、模擬退火算法、分支定界算法、爬山算 法、啟發(fā)式算法、人工神經(jīng)網(wǎng)絡(luò)算法或動(dòng)態(tài)編程算法。
9. 如權(quán)利要求2或3所述的文檔庫系統(tǒng),其特征在于,所述的判斷條件 為經(jīng)驗(yàn)規(guī)則,或者執(zhí)行計(jì)劃的時(shí)間成本或空間成本或時(shí)間和空間成本的結(jié)合。
10. —種文檔庫系統(tǒng)的實(shí)現(xiàn)方法,其特征在于,包括如下步驟步驟1,將應(yīng)用程序調(diào)用解析為由通用文檔模型的對(duì)象或操作構(gòu)成的中 間形式;步驟2,將中間形式解析為由對(duì)物理存儲(chǔ)的操作構(gòu)成的執(zhí)行計(jì)劃; 步驟3,調(diào)度并執(zhí)行執(zhí)行計(jì)劃。
11. 如權(quán)利要求IO所述的方法,其特征在于,步驟2包含如下步驟步驟21,將由通用文檔模型的對(duì)象或操作構(gòu)成的中間形式解析為對(duì)應(yīng)的 多個(gè)執(zhí)行計(jì)劃;步驟23,從多個(gè)執(zhí)行計(jì)劃中根據(jù)判斷條件選擇一個(gè)最優(yōu)的執(zhí)行計(jì)劃。
12. 如權(quán)利要求11所述的方法,其特征在于,在步驟21和步驟23之間 包含如下步驟對(duì)生成的執(zhí)行計(jì)劃進(jìn)行執(zhí)行計(jì)劃空間搜索,并根據(jù)所述判斷條件獲得優(yōu) 化的執(zhí)行計(jì)劃。
13. 如權(quán)利要求10或11或12所述的方法,其特征在于,所述的應(yīng)用程 序調(diào)用為XML形式或者符合LALR語法的自定義形式。
14. 如權(quán)利要求10或11或12所述的方法,其特征在于,所述的中間形 式為語法樹或文檔對(duì)象模型樹。
15. 如權(quán)利要求11或12所述的方法,其特征在于,所述的判斷條件為 經(jīng)驗(yàn)規(guī)則,或者執(zhí)行計(jì)劃的時(shí)間成本或空間成本或時(shí)間和空間成本的結(jié)合。
16. 如權(quán)利要求11或12所述的方法,其特征在于,步驟23中選擇最優(yōu)執(zhí)行計(jì)劃的算法包括基于經(jīng)驗(yàn)規(guī)則優(yōu)先級(jí)的算法或基于經(jīng)驗(yàn)規(guī)則賦權(quán)的算 法。
17. 如權(quán)利要求12所述的方法,其特征在于,步驟22中采用的優(yōu)化算 法為遺傳算法、演化算法、模擬退火算法、分支定界算法、爬山算法、啟發(fā) 式算法、人工神經(jīng)網(wǎng)絡(luò)算法或動(dòng)態(tài)編程算法。
全文摘要
本發(fā)明公開了一種文檔庫系統(tǒng),包括解釋器、計(jì)劃器、優(yōu)化器、執(zhí)行器和存儲(chǔ)模塊。其中解釋器將應(yīng)用程序調(diào)用轉(zhuǎn)換為中間形式,計(jì)劃器將中間形式轉(zhuǎn)換為執(zhí)行計(jì)劃,優(yōu)化器負(fù)責(zé)從計(jì)劃器生成的執(zhí)行計(jì)劃集合中選擇一個(gè)最優(yōu)執(zhí)行計(jì)劃,而執(zhí)行器負(fù)責(zé)選中執(zhí)行計(jì)劃的執(zhí)行調(diào)度,存儲(chǔ)模塊負(fù)責(zé)執(zhí)行對(duì)物理存儲(chǔ)的操作。由于本發(fā)明的文檔庫系統(tǒng)不同層的實(shí)現(xiàn)可以相對(duì)獨(dú)立,從而使其具有可擴(kuò)展、可伸縮和可維護(hù)性。而優(yōu)化器可以從多個(gè)執(zhí)行計(jì)劃中選出一個(gè)最優(yōu)的執(zhí)行計(jì)劃,從而使整個(gè)文檔庫系統(tǒng)具有高性能。
文檔編號(hào)G06F9/44GK101131695SQ200610126538
公開日2008年2月27日 申請(qǐng)日期2006年8月25日 優(yōu)先權(quán)日2006年8月25日
發(fā)明者王東臨, 旭 郭 申請(qǐng)人:北京書生國際信息技術(shù)有限公司