專利名稱:用于處理數(shù)據(jù)庫的設(shè)備和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于處理用來處理具有分級結(jié)構(gòu)的結(jié)構(gòu)化文檔的數(shù)據(jù)庫的設(shè)備和方法。
背景技術(shù):
近年來,由于結(jié)構(gòu)化文檔,如XML文檔的逐漸流行,在其中儲存結(jié)構(gòu)化文檔的數(shù)據(jù) 庫(例如,XML數(shù)據(jù)庫)越來越流行。作為能用來對此種數(shù)據(jù)庫進(jìn)行査詢的語言的實例, 提出了 XQuery。
XQuery是能用來進(jìn)行XML査詢的功能型語言,其特征在于具有FLWR語法。FLWR 語法表示包括FOR子句,LET子句,WHERE子句,和RETURN子句的語法。使用XQuery 的處理實例在M. Fernandez, J. Simeon, B. Choi, A. Marian, G. Sur, Implementing XQuery 1.0: The Galax Experience , VLDB 2003中有所說明。
在XQuery的FLWR語法中,F(xiàn)OR子句將序列中的項目結(jié)合到變量。另一方面,LET 子句將整個序列結(jié)合到變量。通過組合FOR子句和LET子句,可以進(jìn)行適合于XML的 高級査詢。(不用LET子句則無法表達(dá)XML重構(gòu)和聚合)。
在XQuery中,通過使用LET子句,還可以調(diào)用具有嵌套結(jié)構(gòu)的查詢,在該結(jié)構(gòu)中使 用了多個FOR子句。
在當(dāng)前可得的數(shù)據(jù)庫產(chǎn)品中,經(jīng)常執(zhí)行LET子句,從而與用于功能型語言的處理系統(tǒng) 兼容。在執(zhí)行過程(implementation)與用于功能型語言的處理系統(tǒng)兼容的情形中,當(dāng)如上 所述對嵌套結(jié)構(gòu)進(jìn)行查詢時,要考慮嵌套結(jié)構(gòu)中外XQuery數(shù)據(jù)與內(nèi)XQuery數(shù)據(jù)之間存在 輸入輸出關(guān)系。因此,當(dāng)己經(jīng)完成外XQuery數(shù)據(jù)的處理時,要將處理的各結(jié)果,作為變 量,轉(zhuǎn)發(fā)到內(nèi)XQuery數(shù)據(jù)以致能處理內(nèi)XQuery數(shù)據(jù)。
為了使用XQuery進(jìn)行高級査詢,如上所述的嵌套結(jié)構(gòu)不可或缺;然而,問題在于, 在執(zhí)行過程與用于功能型語言的處理系統(tǒng)兼容的情形中,具有雙重或更多嵌套結(jié)構(gòu)所需的 計算量很大。
具體說來,因為用于功能型語言的處理系統(tǒng)是在已經(jīng)處理外部的多重循環(huán)之后再處理 內(nèi)部,內(nèi)XQuery數(shù)據(jù)的處理將調(diào)用與多重循環(huán)中的循環(huán)數(shù)量相同的次數(shù)。因此,即使嵌 套結(jié)構(gòu)中的嵌套數(shù)量僅增加一,計算量也會大量增加。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的一個方面,數(shù)據(jù)庫處理設(shè)備包括接收單元,其從另一部分語法樹接收請 求獲取與結(jié)構(gòu)化數(shù)據(jù)庫中所包含的部分語法樹中儲存的各個元素(element)相同的元素對 應(yīng)的信息的處理的獲取請求,該處理是執(zhí)行嵌套結(jié)構(gòu)中多重循環(huán)的處理,并且每一個元素 在多重循環(huán)的每一個中被當(dāng)作變量使用;識別符賦值單元,其將唯一識別符賦值到元素表 中儲存的每一個記錄,每一個元素表是為多重循環(huán)中的每一個循環(huán)創(chuàng)建的;結(jié)合單元,其 通過對已經(jīng)賦值有識別符的元素表執(zhí)行叉積結(jié)合處理來創(chuàng)建叉積結(jié)合表,在該叉積結(jié)合表 中將多個識別符賦值給每一個記錄;信息獲取單元,其基于每一個元素表中包括的元素, 獲取在獲取請求中指定為被獲取目標(biāo)的信息;單次循環(huán)表創(chuàng)建單元,其對每一個循環(huán)創(chuàng)建 儲存記錄的單次循環(huán)表,在該記錄中所獲取的信息,識別符,和元素互相對應(yīng);結(jié)合表創(chuàng) 建單元,其通過將對每一個循環(huán)分別創(chuàng)建的單次循環(huán)表結(jié)合來創(chuàng)建賦值有多個識別符的循 環(huán)間結(jié)合表;以及對應(yīng)控制單元,其基于賦值給叉積結(jié)合表的多個識別符和賦值給循環(huán)間 結(jié)合表的多個識別符,控制叉積結(jié)合表中的記錄與循環(huán)間結(jié)合表中的記錄之間的對應(yīng)。
根據(jù)本發(fā)明的另一方面,數(shù)據(jù)庫處理方法包括從另一部分語法樹接收獲取請求獲取與 結(jié)構(gòu)化數(shù)據(jù)庫中所含部分語法樹中儲存的各元素相同的元素項對應(yīng)的信息的處理請求,該 處理是執(zhí)行嵌套結(jié)構(gòu)中多重循環(huán)的處理,并且每一個元素用作每一個多重循環(huán)中的變量; 將唯一的識別符賦值到元素表中儲存的每一個記錄,每一個元素表是為多重循環(huán)中的循環(huán) 的每一個創(chuàng)建的;通過對已經(jīng)賦值有識別符的元素表執(zhí)行叉積結(jié)合處理來創(chuàng)建叉積結(jié)合 表,在叉積結(jié)合表中將多個識別符賦值給每一個記錄;基于每一個元素表中包括的元素, 獲取在獲取請求中指定為獲取目標(biāo)的信息;對每一個循環(huán)創(chuàng)建儲存記錄的單次循環(huán)表,在 該記錄中所獲取的信息,識別符,和元素互相對應(yīng);通過結(jié)合對各循環(huán)分別創(chuàng)建的單次循 環(huán)表,創(chuàng)建賦值有多個識別符的循環(huán)間結(jié)合表;以及基于賦值給叉積結(jié)合表的多個識別符 和賦值給循環(huán)間結(jié)合表的多個識別符,控制叉積結(jié)合表中的記錄與循環(huán)間結(jié)合表中的記錄 之間的對應(yīng)。
圖1是說明本發(fā)明第一實施例所對應(yīng)的數(shù)據(jù)庫處理設(shè)備的總體配置的示意圖; 圖2是說明代表具有分層結(jié)構(gòu)的結(jié)構(gòu)化文檔的XML數(shù)據(jù)的實例的示意圖; 圖3是說明圖2所示的XML數(shù)據(jù),使用樹結(jié)構(gòu)表示的概念圖,; 圖4是說明XQuery數(shù)據(jù)的第一實例的示意圖5是說明代表通過處理圖4所示的XQuery數(shù)據(jù)獲得的結(jié)果的XML數(shù)據(jù)的實例的示 意圖6A是用來解釋在其中對圖4所示XQuery數(shù)據(jù)的輸入執(zhí)行傳統(tǒng)的處理程序的第一實 例的示意圖6B是用來解釋在其中對圖4所示XQuery數(shù)據(jù)的輸入執(zhí)行傳統(tǒng)的處理程序的第二實 例的示意圖7是由數(shù)據(jù)庫處理設(shè)備執(zhí)行的總體處理程序的流程圖8是由嵌套XQuery計劃創(chuàng)建單元和單次XQuery計劃創(chuàng)建單元執(zhí)行的計劃創(chuàng)建程序 的流程圖9是說明通過分解圖4所示的XQuery數(shù)據(jù)所獲得的單次XQuery數(shù)據(jù)的第一實例的 示意圖10是說明通過分解圖4所示的XQuery數(shù)據(jù)所獲得的單次XQuery數(shù)據(jù)的第二實例 的示意圖11是實現(xiàn)嵌套XQuery計劃的計劃創(chuàng)建程序的流程圖,;
圖12是用來解釋由XQuery計劃執(zhí)行單元執(zhí)行的計劃執(zhí)行處理的第一實例,連同所創(chuàng) 建表的示意圖13是鏈接更新操作單元執(zhí)行的鏈接更新處理中的程序的流程圖; 圖14是說明XQuery數(shù)據(jù)的第二實例的示意圖15是用來解釋XQuery計劃執(zhí)行單元執(zhí)行的計劃執(zhí)行處理的第二實例,連同所創(chuàng)建 表的示意圖16是說明XQuery數(shù)據(jù)的第三實例的示意圖n是說明通過分解圖16所示的XQuery數(shù)據(jù)所獲得的單次XQuery數(shù)據(jù)的第一實例 的示意圖18是說明通過分解圖16所示的XQueiy數(shù)據(jù)所獲得的單次XQuery數(shù)據(jù)的第二實例 的示意圖19是說明通過分解圖16所示的XQuery數(shù)據(jù)所獲得的單次XQuery數(shù)據(jù)的第三實例 的示意圖20是用來解釋在創(chuàng)建根據(jù)對應(yīng)于圖17中所示單次XQuery數(shù)據(jù)的計劃的表的處理 中的程序的示意圖21是用來解釋在創(chuàng)建根據(jù)對應(yīng)于圖18中所示單次XQuery數(shù)據(jù)的計劃的表的處理 中的程序的示意圖22是用來解釋在創(chuàng)建根據(jù)對應(yīng)于圖19中所示單次XQuery數(shù)據(jù)的計劃的表的處理 中的程序的圖示;
圖23是用來解釋通過對圖20到22所示處理中創(chuàng)建的表,執(zhí)行叉積結(jié)合處理,自然 結(jié)合處理,和鏈接更新處理從圖16所示的XQuery數(shù)據(jù)獲取處理結(jié)果的處理的程序的圖示;
圖24是說明根據(jù)第三變型實例的數(shù)據(jù)庫處理設(shè)備所創(chuàng)建的與圖16中所示的XQuery 數(shù)據(jù)相對應(yīng)的表的圖示;以及
圖25是說明數(shù)據(jù)庫處理設(shè)備的硬件配置的圖示。
具體實施例方式
如圖1所示,本發(fā)明第一實施例所對應(yīng)的數(shù)據(jù)庫處理設(shè)備IOO包括査詢接收單元101; 嵌套XQuery計劃創(chuàng)建單元102;單次XQuery計劃創(chuàng)建單元103; XQuery計劃執(zhí)行單元
104;叉積結(jié)合操作單元105;自然結(jié)合操作單元106;鏈接更新操作單元107;測試操作 單元108;數(shù)據(jù)獲取操作單元109;索引(index)獲取操作單元110;輸出單元112;分層 表存儲單元lll;和XML數(shù)據(jù)庫113。
XML數(shù)據(jù)庫113是在其中儲存有代表具有多個分層等級結(jié)構(gòu)的結(jié)構(gòu)化文檔的XML數(shù) 據(jù)的數(shù)據(jù)庫。在XML數(shù)據(jù)中,組成結(jié)構(gòu)化文檔的每一個個體部分被稱為"元素"。通過使 用標(biāo)簽(tag)將各個元素寫入。具體說來,各元素的表示是通過在兩個標(biāo)簽之間放置數(shù)據(jù), 即指示元素開始的標(biāo)簽(以下稱為"開始標(biāo)簽")和指示元素結(jié)束的標(biāo)簽(以下稱為"結(jié)束標(biāo) 簽")。在各個元素中,放置在丌始標(biāo)簽和結(jié)束標(biāo)簽之間的文本數(shù)據(jù),稱為元素中包含的文 本元素(即,文本節(jié)點)。
在圖2所示實例中,數(shù)據(jù)由多段放置在開始標(biāo)簽<1100丁〉和結(jié)束標(biāo)簽</11001>之間的 部分XML數(shù)據(jù)構(gòu)成。這些部分XML數(shù)據(jù)包括放置在開始標(biāo)簽〈DEPARTMENT DATA〉 (DEPARTMENT DATA, 部門數(shù)據(jù))和結(jié)束標(biāo)簽〈/DEPARTMENT DATA〉之間并與其所 屬公司中的部門名稱相關(guān)的一段數(shù)據(jù);放置在開始標(biāo)簽〈DECADE DATA> (DECADE DATA,年代數(shù)據(jù))和結(jié)束標(biāo)簽々DECADEDATA〉之間并按照R歷年份與年代相關(guān)的一段 數(shù)據(jù);以及放置在開始標(biāo)簽〈EMPLOYEEDATA〉 (EMPLOYEE DATA,雇員數(shù)據(jù))和結(jié)束 標(biāo)簽々EMPOLYEE DATA〉之間并與一個或多個雇員相關(guān)的一段數(shù)據(jù)。如本文所述,圖2 所示的XML數(shù)據(jù)配置為以使互相不同類型的數(shù)據(jù)儲存在互相不同的部分語法樹中以及在 互相不同的分層等級中。通過該安排, 一段XML數(shù)據(jù)可以在其中儲存不同類型的數(shù)據(jù)。
圖2所示的XML數(shù)據(jù)可以通過使用圖3所示的語法樹來表示。XML數(shù)據(jù)是通過以類 似于文檔對象模型(DOM, Document Object Model)的格式使用目標(biāo)和鏈接來表示。各個 對象表示不同的上述元件之一。
舉例來說,目標(biāo)El代表表示〈ROOT〉的元素。換而言之,語法樹表示一個 <DEPARTMENT DATA>對象被直接放置在<ROOT>對象之下并通過表示父子 (parent-child)關(guān)系的鏈接結(jié)合到〈ROOT〉對象。
在以下部分中,語法樹的任意部分將稱為部分語法樹。圖3所示的語法樹由包括部分 數(shù)據(jù)E2及其下級的部分語法樹;包括年代數(shù)據(jù)E7及其下級的部分語法樹;以及包括雇員 數(shù)據(jù)E7及其下級的部分語法樹組成。這些部分語法樹各自由更小的部分語法樹組成。舉 例來說,包括部門數(shù)據(jù)E2及其下級的部分語法樹由包括部門數(shù)據(jù)E3及其下級的部分語法 樹,以及包括部門數(shù)據(jù)E5及其下級的部分語法樹組成。
表示上述的文本節(jié)點的文本對象放置在這些對象的最低分層等級中。這些文本對象分 別以矩形顯示在圖3的實例中。舉例來說,對象E4是在其中儲存"分散(DISTRIBUTION)" 作為文本元素的文本節(jié)點。
分層表存儲單元111在其中儲存多個分層表,該表在XQuery査詢的執(zhí)行過程中被創(chuàng) 建。這些表之間的分層關(guān)系是根據(jù)XQuery數(shù)據(jù)中的嵌套結(jié)構(gòu)形成的。稍后詳細(xì)說明。
在分層表存儲單元lll中,層級是使用鏈接表達(dá)的。為表示表間層級所用的技術(shù)相當(dāng) 于關(guān)系數(shù)據(jù)庫(ROB)中"關(guān)系"的相關(guān)技術(shù)。因此,將省略對其的說明。各分層表由稱為 列(column)和記錄的元素組成,和傳統(tǒng)RDB—樣。
XML數(shù)據(jù)庫113和分層表存儲單元111可以各自配置有任意類型的常用存儲手段,諸 如硬盤驅(qū)動器(HDD),光盤,存儲卡,或隨機(jī)存儲器(RAM, Random Access Memory )。 在第一實施例中,XML數(shù)據(jù)庫113和分層表存儲單元111各自配置有HDD,以致數(shù)據(jù)永 久儲存在其中。然而,,也可以根據(jù)需要接受數(shù)據(jù)被臨時存儲在RAM中的安排。
回到圖1的說明,查詢接收單元101接收被寫入進(jìn)XQuery以及關(guān)于XML數(shù)據(jù)庫113 作出的查詢請求的輸入。
接下來,將從程序方面解釋XQuery的語言規(guī)范。如上所述,XQuery包括FOR子句, LET子句,WHERE子句,禾BRETURN子句。使用FOR子句的語法表示為"for VARIABLE in EXPRESSION)"。使用FOR子句的語法表示指示滿足表達(dá)式的值應(yīng)該賦值到變量以致 產(chǎn)生循環(huán)的指令。
使用LET子句的語法表示為"let VARIABLE: = EXPRESSIONS使用LET子句的語
法表示指示滿足表達(dá)式的值應(yīng)該作為序列集合(aggregate)并賦值到變量的指令,。
使用WHERE子句的語法表示為"where EXPRESSION: WHERE子句根據(jù)表達(dá)式限 制重復(fù)處理的循環(huán)。換而言之,包括WHERE子句的指令句發(fā)出指令,其指示如果滿足表 達(dá)式表達(dá)的條件應(yīng)該重復(fù)執(zhí)行循環(huán)處理,以及如果不滿足表達(dá)式表達(dá)的條件應(yīng)該跳過循 環(huán)。
使用RETURN子句的語法表示為"return EXPRESSIONS RETURN子句是用來輸出通 過處理XQuery數(shù)據(jù)獲得的結(jié)果,該結(jié)果為特定格式。因此,在包含RETURN子句的表達(dá) 式中,舉例來說,可以寫入包含變量的任意XML數(shù)據(jù)。
上述FLWR語法中使用的各變量以1字符串(CHARACTER STRING)"的形式定義。 在以此種方式定義變量的情形中,任意具有相同字符串的變量將視作相同變量,除了當(dāng)由 于包括主查詢和副查詢的嵌套結(jié)構(gòu)而說明(declare)有雙重結(jié)構(gòu)時。
在XQuery中,用來指定XML數(shù)據(jù)中元素之間的分層條件的路徑算符可以被說明如下。 在以下部分中,將說明三種不同類型的路徑算符實例路徑算符的第一實例是"/",其表示 元素之間的父子關(guān)系。具體說來,算符表示位于"/"右側(cè)的元素是位于"/"左側(cè)元素的子。
路徑算符的第二實例是"http://",其表示元素之間的祖先-子孫(ancestor-descendant)關(guān)系。 具體說來,算符表示位于"http://"右側(cè)的元素是位于"http://"左側(cè)元素的子孫。最后,路徑算符的第 三實例是".",其表示任意元素。路徑算符不限于這些實例。XML數(shù)據(jù)可以包含由任意其 他算符表示的處理。
如上所述,XQuery是用來對XML數(shù)據(jù)進(jìn)行查詢的功能型語言。傳統(tǒng)地,已經(jīng)使用結(jié) 構(gòu)化査詢語言(SQL)作為對RDB進(jìn)行查詢的語言。差別之一在于,SQL是說明性語言, XQnery的特征在于是功能型語言。
查詢接收單元101接收包含上述已經(jīng)說明的一個或多個語法和算符的XQuery數(shù)據(jù)的 輸入。假定XQuery數(shù)據(jù)已經(jīng)從用戶,另一系統(tǒng)等等輸入。根據(jù)第一實施例的數(shù)據(jù)庫處理 設(shè)備100的特征在于,對XQueiy數(shù)據(jù)執(zhí)行的處理具有嵌套結(jié)構(gòu)。接下來,將說明具有嵌 套結(jié)構(gòu)的XQuery數(shù)據(jù)。
圖1所示的XQuery數(shù)據(jù)發(fā)出請求,其請求"應(yīng)該在XML數(shù)據(jù)庫中產(chǎn)生作為根的子孫 的部門($x)與作為根的子孫的年代($y)的組合;對各個已產(chǎn)生的組合,應(yīng)該提取作為 與組合(即,部門和年代)匹配的根的子孫的雇員($w);并且應(yīng)該返回所提取的雇員的 文本(即,雇員姓名)作為序列"。
換而言之,圖4所示的XQuery數(shù)據(jù)對XML數(shù)據(jù)庫發(fā)出請求,其請求應(yīng)該產(chǎn)生存儲在
容納在XML數(shù)據(jù)庫中的部分語法樹中的元素的組合;并且應(yīng)該通過使用各個元素作為雙 重循環(huán)中各循環(huán)中的變量從另一部分語法樹提取匹配各個組合的信息。在當(dāng)前實例的
XQuery數(shù)據(jù)中,雙重循環(huán)指示循環(huán),表示為"for $x in 〃DEPARTMENT"的循環(huán),和表示為 "for $y in 〃DECADE"的循環(huán)。
在通過使用圖4所示的XQuery數(shù)據(jù)處理圖2所示的XML數(shù)據(jù)的情形中,數(shù)據(jù)庫處理 設(shè)備100創(chuàng)建圖5所示的XML數(shù)據(jù)。換而言之,數(shù)據(jù)庫處理設(shè)備100通過使用根據(jù)圖4 所示FOR子句,LET子句,和WHERE子句獲得的數(shù)據(jù),創(chuàng)建符合RETURN子句所定義 格式的XML數(shù)據(jù)。
接下來,將參照圖6A和6B說明執(zhí)行來使用XQuery處理XML數(shù)據(jù)的傳統(tǒng)處理程序。 在傳統(tǒng)的XQuery處理中,在LET子句在嵌套結(jié)構(gòu)內(nèi)部的情形中,將考慮嵌套結(jié)構(gòu)的外部 和內(nèi)部之間存在輸入輸出關(guān)系。換而言之,當(dāng)已經(jīng)完成對嵌套結(jié)構(gòu)外部XQuery數(shù)據(jù)的處 理時,處理結(jié)果被指定為一組輸入變量,并發(fā)送到內(nèi)XQuery數(shù)據(jù),以致能處理內(nèi)XQuery 數(shù)據(jù)。在以下部分中,將說明特定的實例。
首先,通過使用數(shù)據(jù)獲取操作單元,傳統(tǒng)數(shù)據(jù)庫處理設(shè)備從XML數(shù)據(jù)獲取對應(yīng)于Sx 的數(shù)據(jù)列,并創(chuàng)建表T1 (步驟S601),并且還從XML數(shù)據(jù)獲取對應(yīng)于Sy的數(shù)據(jù)列,并 創(chuàng)建表T2 (步驟S602)。步驟S601和S602處的處理對應(yīng)于圖4所示XQuery數(shù)據(jù)中的算 符"〃"。
上述處理中創(chuàng)建的表Tl被結(jié)構(gòu)化以致包括具有一列的兩個記錄。如圖6A所示,表 Tl中的記錄在其中儲存"分散"和"輕量(LIGHTWEIGHT)",分別對應(yīng)于XQuery數(shù)據(jù)中 的"〃DEPARTMENT"。
類似地,表T2也被結(jié)構(gòu)化以致包括具有一列的兩個記錄。表T2中的記錄在其中儲存 "1990s"和"2000s",分別對應(yīng)于XQuery數(shù)據(jù)中的"〃DECADE" (DECADE,年代)。
接下來,傳統(tǒng)數(shù)據(jù)庫處理設(shè)備通過使用叉積結(jié)合操作單元對表T1和表T2執(zhí)行叉積結(jié) 合操作,并創(chuàng)建表T3 (步驟S603)。如圖6A所示,創(chuàng)建的表T3被結(jié)構(gòu)化以致包括具有 兩列的四個記錄。
上述步驟S601到S603的處理對應(yīng)于對嵌套結(jié)構(gòu)外部執(zhí)行的處理。在完成對嵌套結(jié)構(gòu) 外部的處理之后,表T3中所存記錄的信息被指定作為一組輸入變量并被轉(zhuǎn)發(fā)至內(nèi)XQuery 數(shù)據(jù)以致能處理內(nèi)XQuery數(shù)據(jù)。
首先,傳統(tǒng)數(shù)據(jù)庫處理設(shè)備復(fù)制表T3中的各記錄。具體說來,傳統(tǒng)數(shù)據(jù)庫處理設(shè)備 復(fù)制表T3中的第一記錄并創(chuàng)建被結(jié)構(gòu)化以致只包括一個記錄的表T4 (步驟S604)。類似
地,傳統(tǒng)數(shù)據(jù)庫處理設(shè)備復(fù)制表T3中的第二記錄并創(chuàng)建表T5 (步驟S605),復(fù)制表T3 中的第三記錄并創(chuàng)建表T6 (步驟S606),以及復(fù)制表T3中的第四記錄并創(chuàng)建表T7 (步驟 S607)。
在這里假定,兩種類型的索引數(shù)據(jù)被預(yù)先賦值給圖2所示的XML數(shù)據(jù)庫。 一種是索 引1,其通過使用"DEPARTMENT/text ( )" (DEPARTMENT,部門)作為關(guān)鍵字返回一組 "EMPLOYEE/text( )" (EMPLOYEE,雇員)。另一種是索引2,其通過使用"DECADE OF CORPORATION ENTRY/text ()"作為關(guān)鍵字返回一組"DEPARTMENT/text ()"。在該情形 中,"DECADE OF CORPORATION ENTRY"(進(jìn)入公司的年代)表示雇員加入公司所處的 年代。
此后,通過使用索引獲取操作單元,傳統(tǒng)數(shù)據(jù)庫處理設(shè)備通過使用表T4中的第一列 作為搜索關(guān)鍵字訪問上述索引1。換而言之,因為表T4被結(jié)構(gòu)化成具有一個記錄,即["分 散","1900s"],傳統(tǒng)數(shù)據(jù)庫處理設(shè)備,通過使用索引獲取操作單元,通過使用第一列"分 散"作為搜索關(guān)鍵字,訪問索引l,并獲取匹配搜索關(guān)鍵字所指示條件的組(歩驟S608)。 該處理中獲得的組將發(fā)展成為表T8中的第三列。如圖6A所示,由"HATTORI", "KANAI", 和"KUROKAWA"組成的所得到的組作為分離記錄,被儲存到表T8中。
此外,關(guān)于表T5,傳統(tǒng)數(shù)據(jù)庫處理設(shè)備還通過使用第一列"分散"作為搜索關(guān)鍵詞訪問 索引1并獲取組從而創(chuàng)建表T9 (歩驟S609)。關(guān)于表T6和T7,傳統(tǒng)數(shù)據(jù)庫處理設(shè)備也執(zhí) 行類似處理(步驟S610和S611)。
然后,通過使用數(shù)據(jù)獲取操作單元,傳統(tǒng)數(shù)據(jù)庫處理設(shè)備通過使用表T8第三列中的 雇員姓名作為搜索關(guān)鍵字,從XML數(shù)據(jù)庫獲取對應(yīng)于雇員姓名儲存的"DECADE OF CORPORATION ENTRY"(步驟S612)。傳統(tǒng)數(shù)據(jù)庫處理設(shè)備進(jìn)一步創(chuàng)建表T12,其中將 已經(jīng)獲得的"DECADE OF CORPORATION ENTRY"儲存在第四列中。
類似地,關(guān)于表T9, T10,和Tll,傳統(tǒng)數(shù)據(jù)庫處理設(shè)備用通過使用第三列中的雇員 姓名作為搜索關(guān)鍵字,而獲得的"DECADE OF CORPORATION ENTRY",創(chuàng)建表T13, T14, 和T15 (歩驟S613, S614,和S615)。
此后,通過使用測試操作單元,傳統(tǒng)數(shù)據(jù)庫處理設(shè)備通過使用比較條件檢査以査看第 二列是否等于第四列來測試表T12并創(chuàng)建圖6B所示的表T16 (步驟S616)。
類似地,傳統(tǒng)數(shù)據(jù)庫處理設(shè)備還通過使用比較條件檢査以査看第二列是否等于第四列 來測試表T13和T14并創(chuàng)建圖6B所示的表T17和T18 (步驟S617和S618)。此外,傳統(tǒng) 數(shù)據(jù)庫處理設(shè)備還通過使用比較條件檢查以査看第二列是否等于第四列來測試表T15。然
而,由于不存在匹配的記錄,最終的表在其中具有空白記錄以及,沒有表被創(chuàng)建(步驟
5619) 。
此后,傳統(tǒng)數(shù)據(jù)庫處理設(shè)備執(zhí)行處理,使所創(chuàng)建的表T16到T18與表T3對應(yīng)(步驟
5620) 。作為該處理的結(jié)果,傳統(tǒng)數(shù)據(jù)庫處理設(shè)備能夠?qū)蜗蜴溄訌谋鞹19粘貼到表T16, T17,和T18。
通過使用圖4所示的XQuery數(shù)據(jù)中RETURN子句中所寫的格式,調(diào)整T19, T16, T17,和T18中所存信息的形式,可以獲取圖5所示的XML數(shù)據(jù)。在上述傳統(tǒng)數(shù)據(jù)庫處理 設(shè)備執(zhí)行的處理中,對叉積結(jié)合處理中所創(chuàng)建表中的各個記錄執(zhí)行處理。因此,將產(chǎn)生計 算量極大的問題。相反,通過具有下述配置,根據(jù)第一實施例的數(shù)據(jù)庫處理設(shè)備100能阻 止計算量的增加。
嵌套XQuery計劃創(chuàng)建單元102包括識別符賦值單元121,對應(yīng)控制單元122,表創(chuàng)建 單元123,和索引信息獲取單元128。在查詢接收單元IOI己經(jīng)接收作為輸入的XQuery數(shù) 據(jù)具有嵌套結(jié)構(gòu)的情形中,嵌套XQuery計劃創(chuàng)建單元102輸出用來提取各自作為嵌套結(jié) 構(gòu)一部分的XQuery數(shù)據(jù)段以及處理嵌套結(jié)構(gòu)的計劃。稍后詳細(xì)說明所提取的XQuery數(shù)據(jù) 段。
在作為輸入被查詢接收單元101接收的XQuery數(shù)據(jù)沒有嵌套結(jié)構(gòu)的情形中,單次 XQuery計劃創(chuàng)建單元103輸出用來處理XQuery數(shù)據(jù)的計劃。
此外,在嵌套XQuery計劃創(chuàng)建單元102從作為輸入被査詢接收單元101接收的具有 嵌套結(jié)構(gòu)的XQuery數(shù)據(jù)中提取每一段都是嵌套結(jié)構(gòu)的一部分的多段XQuery數(shù)據(jù)的情形 中,單次XQuery創(chuàng)建單元103對每一段被提取的XQuery數(shù)據(jù)段輸出用于處理XQuery數(shù) 據(jù)段的計劃。各輸出計劃表示為由下述各類操作單元執(zhí)行的處理序列。由單次XQuery計 劃創(chuàng)建單元103創(chuàng)建的計劃輸出到嵌套XQuery計劃創(chuàng)建單元102。接下來,將說明創(chuàng)建用 于處理XQuery數(shù)據(jù)的計劃的組成元素。
表創(chuàng)建單元123包括元素表格創(chuàng)建單元124,單次循環(huán)表創(chuàng)建單元125,結(jié)合表創(chuàng)建 單元126,和叉積結(jié)合單元127。表創(chuàng)建單元123創(chuàng)建用于創(chuàng)建表的計劃。根據(jù)創(chuàng)建的計 劃,通過XQuery計劃執(zhí)行單元104創(chuàng)建表。稍后將詳細(xì)說明創(chuàng)建表的處理。接下來,將 說明由組成元素創(chuàng)建的表創(chuàng)建計劃。
對XQuery嵌套結(jié)構(gòu)中多重循環(huán)中的各個循環(huán),元素表格創(chuàng)建單元124創(chuàng)建計劃,用 于創(chuàng)建在其中表示為循環(huán)中的變量的元素被儲存為分離記錄的元素表。根據(jù)所創(chuàng)建的計 劃,由多個下述操作單元通過XQuery計劃執(zhí)行單元104,創(chuàng)建元素表格。
對XQuery嵌套結(jié)構(gòu)中多重循環(huán)中的各個循環(huán),單次循環(huán)表創(chuàng)建單元125創(chuàng)建用于創(chuàng) 建在其中儲存如下記錄的單次循環(huán)表的計劃,在記錄中中使元素表格中儲存的元素,由下 述識別符賦值單元121賦值的識別符(即,ID),和由下述索引信息獲取單元128獲取的 索引信息互相對應(yīng)。根據(jù)所創(chuàng)建的計劃,通過XQuery計劃執(zhí)行單元104創(chuàng)建單次循環(huán)表。
叉積結(jié)合單元127創(chuàng)建用于創(chuàng)建上級(superordinate)表(g卩,叉積結(jié)合表)的計劃, 在上級表中通過對根據(jù)識別符賦值單元121創(chuàng)建的計劃賦值有ID的元素表執(zhí)行叉積結(jié)合 處理,將多個ID賦值給各個記錄。根據(jù)叉積結(jié)合單元127創(chuàng)建的計劃,通過XQuery計劃 執(zhí)行單元104,創(chuàng)建上級表。稍后詳細(xì)說明上級表。
結(jié)合表創(chuàng)建單元126創(chuàng)建用于創(chuàng)建循環(huán)間結(jié)合表的計劃,在循環(huán)間結(jié)合表中通過結(jié)合 單次循環(huán)表,由識別符賦值單元121賦值的互不相同的ID分別被儲存在多個列中,其中 每一個單次循環(huán)表由單次循環(huán)表創(chuàng)建單元125為不同的循環(huán)之一創(chuàng)建。根據(jù)所創(chuàng)建的計劃, 通過XQuery計劃執(zhí)行單元104創(chuàng)建循環(huán)間結(jié)合表。
識別符賦值單元121創(chuàng)建用于將唯一的ID賦值到為不同的循環(huán)之一創(chuàng)建的元素表格 中的各個記錄的計劃,。根據(jù)所創(chuàng)建的計劃,通過XQuery計劃執(zhí)行單元104將唯一的ID 賦值到各記錄。稍后將詳細(xì)說明賦值ID的處理。
根據(jù)各上級表中的各元素(即,記錄),索引信息獲取單元128創(chuàng)建計劃,用于獲取 在XQuery查詢請求中指定為獲取目標(biāo)的信息作為索引信息。索引信息獲取單元128所創(chuàng) 建的計劃進(jìn)一歩包含將獲取的索引信息田加到上級表中的各記錄的處理,。根據(jù)所創(chuàng)建的 計劃,對上級表中的各記錄,通過XQuery計劃執(zhí)行單元104,獲取對應(yīng)的索引信息段并添 加到記錄。
對應(yīng)控制單元122創(chuàng)建用于控制(i)通過對賦值有唯一的ID的元素表格執(zhí)行叉積結(jié) 合處理所得表中的記錄和(ii)由結(jié)合表創(chuàng)建單元126創(chuàng)建的循環(huán)間結(jié)合表中的記錄之間 的對應(yīng)的計劃。因此,通過XQuery計劃執(zhí)行單元104,控制記錄與循環(huán)間結(jié)合標(biāo)志中記錄 的對應(yīng)。為控制對于記錄的對應(yīng),使用表中儲存的ID。此外,根據(jù)表之間的對應(yīng)關(guān)系,下 述XQuery計劃執(zhí)行單元104執(zhí)行計劃。稍后將詳細(xì)說明該處理。
通過上述方式,已經(jīng)由嵌套XQuery計劃創(chuàng)建單元102和單次XQuery計劃創(chuàng)建單元 103創(chuàng)建的計劃,由XQuery計劃創(chuàng)建單元102放到一起并輸出到XQuery計劃執(zhí)行單元104。
XQuery計劃執(zhí)行單元104根據(jù)已經(jīng)由嵌套XQuery計劃創(chuàng)建單元102輸入到其中的計 劃(包括創(chuàng)建表,賦值識別符,和控制記錄間對應(yīng)的計劃),執(zhí)行處理。并且,為了根據(jù) 輸入計劃執(zhí)行處理,XQuery計劃執(zhí)行單元104調(diào)用稍后將說明的各類操作單元中的算符。
由XQuery計劃執(zhí)行單元104使用的,以及具有諸如叉積結(jié)合處理,自然結(jié)合處理, 和鏈接更新處理的基礎(chǔ)功能的指令將被稱為算符。算符的實例包括用來更新分層表存儲單 元111中所存的表的算符。算符之間的輸入和輸出是通過使用分層表中的指針和ID來實 現(xiàn)的。
叉積結(jié)合運行單元105執(zhí)行分層表之間的叉積操作。叉積操作相當(dāng)于對RDB執(zhí)行的 叉積操作。舉例來說,叉積結(jié)合操作單元105根據(jù)已經(jīng)由叉積結(jié)合到那元127創(chuàng)建的計劃, 對元素表格執(zhí)行叉積結(jié)合處理。
自然結(jié)合操作單元106執(zhí)行分層表之間的自然結(jié)合操作。自然結(jié)合操作相當(dāng)于對RDB 執(zhí)行的自然結(jié)合操作。
鏈接更新操作單元107執(zhí)行操作以更新用來鏈接位于互不相同分層等級中的多個表的 ID。在ID被分別儲存在作為諸如叉積結(jié)合處理的結(jié)合處理結(jié)果而獲得的表的多個列的每 一個中的情形中,根據(jù)第一實施例的鏈接更新操作單元107執(zhí)行處理以用唯一的鏈接ID 更新各ID組合。
測試操作單元108執(zhí)行使用例如相等符號或不等符號的比較操作。比較操作相當(dāng)于 RDB中的選擇操作。
數(shù)據(jù)獲取操作單元109通過執(zhí)行朝祖先向上遍歷分層等級,或朝子孫向下遍歷分層等 級的操作,獲取所需數(shù)據(jù),并通過跟蹤將元素互相結(jié)合的鏈接,獲取文本,該元素包括在 XML數(shù)據(jù)庫U3儲存的XML數(shù)據(jù)中。
索引獲取操作單元IIO訪問已被賦值到XML數(shù)據(jù)庫113中的XML數(shù)據(jù)的索引數(shù)據(jù), 并獲取被儲存作為索引數(shù)據(jù)的信息。通過以上述方式組合索引獲取操作單元和數(shù)據(jù)獲取操 作單元,能夠以高速從XML數(shù)據(jù)庫113獲取所需數(shù)據(jù)。
作為XQuery計劃執(zhí)行單元104所執(zhí)行操作的結(jié)果,數(shù)據(jù)單元112輸出XML數(shù)據(jù),其 匹配已經(jīng)輸入作為査詢請求的XQuery數(shù)據(jù)。
接下來,將參照圖7說明數(shù)據(jù)庫處理設(shè)備100執(zhí)行的總體處理程序。
首先,査詢接收單元IOI從用戶等接收XQuery數(shù)據(jù)的輸入(步驟S701)。
其次,嵌套XQuery計劃創(chuàng)建單元102和單次XQuery計劃創(chuàng)建單元103基于已經(jīng)輸入 的XQuery數(shù)據(jù),創(chuàng)建將要執(zhí)行的計劃(步驟S702)。稍后詳細(xì)說明該處理程序。
此后,XQuery計劃執(zhí)行單元104通過使用各類操作單元,執(zhí)行所創(chuàng)建的計劃(步驟 S703)。稍后詳細(xì)說明該處理程序。
最后,輸出單元112輸出已經(jīng)創(chuàng)建作為XQuery計劃執(zhí)行單元104所執(zhí)行計劃的執(zhí)行
結(jié)果的XML數(shù)據(jù)(步驟S704)。
作為上述處理程序的結(jié)果,數(shù)據(jù)庫處理設(shè)備100可以輸出XML數(shù)據(jù),該數(shù)據(jù)對應(yīng)于 己經(jīng)從用戶等等作為輸入接收的XQuery數(shù)據(jù)。
接著,講參照圖8說明圖7中步驟S702處所示,并由嵌套XQuery計劃創(chuàng)建單元102 和單次XQuery計劃創(chuàng)建單元103執(zhí)行來創(chuàng)建計劃的程序。
首先,嵌套XQuery計劃創(chuàng)建102對已經(jīng)輸入的XQuery數(shù)據(jù)執(zhí)行語法分析(歩驟S801)。 語法分析可以由如Yacc & Lex的編譯工具方便地執(zhí)行。
接著,嵌套XQuery計劃創(chuàng)建單元102基于語法分析的結(jié)果,判斷XQuery數(shù)據(jù)是否包 含任何嵌套結(jié)構(gòu)(歩驟S802)。
在嵌套XQuery計劃創(chuàng)建單元102已經(jīng)判定XQuery數(shù)據(jù)不包含嵌套結(jié)構(gòu)的情形中(步 驟S802:否),嵌套XQuery計劃創(chuàng)建單元102將語法分析的結(jié)果輸出到單次XQuery計劃 創(chuàng)建單元103。因此,單次XQuery計劃創(chuàng)建單元103創(chuàng)建單結(jié)構(gòu)計劃,以致可以基于已經(jīng) 輸入的XQuery數(shù)據(jù)執(zhí)行處理(歩驟S803)。通過使用不包含嵌套結(jié)構(gòu)的語法樹來創(chuàng)建計 劃的方法,可以通過使用傳統(tǒng)技術(shù)來實現(xiàn),例如在標(biāo)題為"結(jié)構(gòu)化文檔檢索方法,結(jié)構(gòu)化文 檔檢索設(shè)備,和結(jié)構(gòu)化文檔檢索系統(tǒng)"的第2001-147933號日本專利公開公報(KOKAI) 中披露的技術(shù)。
與此相反,在嵌套XQuery計劃創(chuàng)建單元102已經(jīng)判定XQuery數(shù)據(jù)包含一個或多個嵌 套結(jié)構(gòu)的情形中(歩驟S802:是),嵌套XQuery計劃創(chuàng)建單元102執(zhí)行處理以分解已經(jīng) 輸入的XQuery數(shù)據(jù)(步驟S804)。
分解處理表示將圖4所示XQuery數(shù)據(jù)分解為圖9所示的XQuery數(shù)據(jù)段和圖10所示 的另一 XQuery數(shù)據(jù)段的處理。圖4所示的XQuery數(shù)據(jù)可以通過跟蹤XQuery數(shù)據(jù)中包含 的路徑算符,分解為兩段XQuery數(shù)據(jù)。具體說來,因為以"for $x in 〃DEPARTMENT"開始 的XQuery數(shù)據(jù)段和以"for $y in 〃DACADE"開始的另一 XQuery數(shù)據(jù)段通過嵌套方式互相 結(jié)合,嵌套XQuery計劃創(chuàng)建單元102執(zhí)行處理以將XQuery數(shù)據(jù)分解為這些XQuery數(shù)據(jù) 段。因此,將產(chǎn)生圖9所示的XQuery數(shù)據(jù)P和圖10所示的另一 XQuery數(shù)據(jù)段。在實際 處理中,分解處理的結(jié)果可以是語法樹或分解元素,而非XQuery數(shù)據(jù)段。
已經(jīng)作為分解處理的結(jié)果獲得并且不包含嵌套結(jié)構(gòu)的各XQuery數(shù)據(jù)段,稱為單次 XQuery數(shù)據(jù)段。此外,因為已經(jīng)作為分解處理獲得的單次XQuery數(shù)據(jù)段涉及諸如由相等 符號表示的條件的比較條件,將儲存比較條件相關(guān)的信息??梢酝ㄟ^使用傳統(tǒng)技術(shù),實現(xiàn) 用來執(zhí)行分解處理的方法。因此,將省略其說明。
接著,嵌套XQuery計劃創(chuàng)建單元102判斷是否已經(jīng)創(chuàng)建了所有的用于對作為分解處 理結(jié)果獲得的單次XQuery數(shù)據(jù)段執(zhí)行處理的單結(jié)構(gòu)計劃(步驟S805)。在嵌套XQuery計 劃創(chuàng)建單元102己經(jīng)判定并未創(chuàng)建所有單結(jié)構(gòu)計劃的情形中(步驟S805:否),單次XQuery 計劃創(chuàng)建單元103基于作為分解處理結(jié)果獲得的單次XQuery數(shù)據(jù)段,創(chuàng)建一個或多個用 來執(zhí)行處理的單結(jié)構(gòu)計劃(步驟S806)。此后,嵌套XQuery計劃創(chuàng)建單元102在歩驟S805 再次判斷是否已經(jīng)創(chuàng)建了所有計劃。
與此相反,在嵌套XQuery計劃創(chuàng)建單元102己經(jīng)判定已經(jīng)創(chuàng)建了所有用于對作為分 解處理結(jié)果獲得的單次XQuery數(shù)據(jù)段執(zhí)行處理的單結(jié)構(gòu)計劃的情形中(步驟S805:否), 創(chuàng)建嵌套結(jié)構(gòu)結(jié)合計劃以致將已經(jīng)創(chuàng)建的單結(jié)構(gòu)計劃結(jié)合到一起,同時考慮作為分解處理 結(jié)果獲得的單次XQuery數(shù)據(jù)段之間的比較條件,比較條件已經(jīng)被預(yù)先儲存。然后,通過 將己經(jīng)創(chuàng)建的單結(jié)構(gòu)計劃與嵌套結(jié)構(gòu)結(jié)合計劃組合,創(chuàng)建詳細(xì)計劃(步驟S807)。因此, 處理完成。
嵌套結(jié)構(gòu)結(jié)合計劃表示,通過使用三個操作單元的一個或多個,即叉積結(jié)合操作單元, 自然結(jié)合操作單元,和鏈接更新操作單元,將根據(jù)上述多個單結(jié)構(gòu)計劃所執(zhí)行處理的結(jié)果 結(jié)合的計劃。此后,XQuery計劃執(zhí)行單元.104根據(jù)巳經(jīng)在步驟S807和S803處創(chuàng)建的計 劃,執(zhí)行處理。接著,詳細(xì)說明在步驟S807處執(zhí)行的創(chuàng)建計劃的處理。
參照圖ll,說明在圖8中步驟S807處所示的創(chuàng)建計劃的程序。并參照圖12,詳細(xì)說 明所創(chuàng)建的表。
首先,嵌套XQuery計劃創(chuàng)建單元102中包括的元素表格創(chuàng)建單元124創(chuàng)建用于獲得 單結(jié)構(gòu)計劃所對應(yīng)循環(huán)中所對應(yīng)元素的數(shù)據(jù)的計劃,并創(chuàng)建元素表格(步驟SllOl)。當(dāng)執(zhí) 行該計劃時,使用數(shù)據(jù)獲取操作單元109來獲取元素的數(shù)據(jù)。舉例來說,對于圖9所示單 次對應(yīng)于XQuery數(shù)據(jù)的單結(jié)構(gòu)計劃,從圖3所示部門數(shù)據(jù)及其下級獲取"分散"和"輕量", 以致創(chuàng)建包括具有一列的兩個記錄的元素表格。該處理對各單結(jié)構(gòu)計劃執(zhí)行。
接著,識別符賦值單元121創(chuàng)建用于對己經(jīng)創(chuàng)建的元素表格中的各記錄賦值唯一的ID 的計劃,(步驟S1102)。因此,上述元素表格成為包括具有兩列的兩個記錄的元素表格。
此后,表創(chuàng)建單元123中包括的叉積結(jié)合單元127創(chuàng)建用于通過對已經(jīng)賦值唯一的ID 的元素表格執(zhí)行叉積結(jié)合處理創(chuàng)建上級表的計劃(步驟S1103)。
根據(jù)第一實施例,表的創(chuàng)建是通過跟蹤XQuery數(shù)據(jù)中嵌套結(jié)構(gòu)的分層等級。對應(yīng)于 上級分層等級的表稱為上級表,而位于上級表下級的表稱為下級表。上級表對應(yīng)于主査詢, 而下級表對應(yīng)于副査詢。然而,表的實例不限于上級表和下級表。在已經(jīng)輸入的XQuery
數(shù)據(jù)包含較多嵌套結(jié)構(gòu)的情形中,可以根據(jù)嵌套結(jié)構(gòu),創(chuàng)建對應(yīng)于更多數(shù)量的分層等級的 表。
然后,單次循環(huán)創(chuàng)建表125創(chuàng)建用于通過復(fù)制元素表格創(chuàng)建下級表的計劃(步驟 S1104)。
此后,索引信息獲取單元128創(chuàng)建計劃,其用于由索引獲取操作單元110,對下級表 中的各記錄,獲取對應(yīng)的索引信息段,并將獲得的各段索引信息添加到下級表中的對應(yīng)記 錄(歩驟S1105)。
然后,結(jié)合表創(chuàng)建單元126創(chuàng)建用于通過結(jié)合下級表創(chuàng)建下級結(jié)合表的計劃(歩驟 S1106)。該結(jié)合處理是通過使用根據(jù)由上述嵌套XQuery計劃創(chuàng)建單元102創(chuàng)建的單結(jié)構(gòu) 計劃的結(jié)合方法實現(xiàn)。
此后,根據(jù)來自對應(yīng)控制單元122的指令,鏈接更新操作單元107創(chuàng)建用于通過對上 級表和下級結(jié)合表執(zhí)行鏈接更新處理以執(zhí)行控制上級表中的記錄與下級表中的記錄之間 的對應(yīng)的計劃(歩驟S1107)。稍后詳細(xì)說明該處理程序。
通過執(zhí)行在在上述處理中己經(jīng)創(chuàng)建的計劃,在接收到具有嵌套結(jié)構(gòu)的XQuery數(shù)據(jù)作 為輸入的情形中,可以相對于傳統(tǒng)處理,減少計算量。接著,為了說明計算量減少,將參 照圖12,連同所創(chuàng)建表的實例,說明上述處理中已創(chuàng)建計劃的執(zhí)行程序。用為處理目標(biāo)的 XML數(shù)據(jù)是圖2中所示數(shù)據(jù)。
首先,根據(jù)元素表格創(chuàng)建單元124已經(jīng)創(chuàng)建的計劃,數(shù)據(jù)獲取操作單元109獲取圖9 中Sx對應(yīng)的數(shù)據(jù)列(步驟S1201)。因此,元素表格創(chuàng)建單元124創(chuàng)建元素表格HT1。
并且,數(shù)據(jù)獲取操作單元109獲取圖10中Sy對應(yīng)的數(shù)據(jù)列(步驟S1202)。因此,XQuery 計劃執(zhí)行單元104創(chuàng)建元素表格HT2。己經(jīng)創(chuàng)建的元素表格HT1和HT2被儲存到分層表 存儲單元111中。步驟S1201和S1202處的處理對應(yīng)于XQuery中的算符"/"。
接下來,根據(jù)已經(jīng)由識別符賦值單元121創(chuàng)建的計劃,XQuery計劃執(zhí)行單元104將唯 一的ID"A1"和"A2"分別賦值到所創(chuàng)建元素表格HT1中第二列中的記錄(步驟S1203),從 而創(chuàng)建元素表格HT3。
并且,根據(jù)已經(jīng)由識別符賦值單元121創(chuàng)建的計劃,XQuery計劃執(zhí)行單元104將唯一 的ID"B1"和"B2"分別賦值到所創(chuàng)建的元素表格HT2中第二列中的記錄(步驟S1204),從 而創(chuàng)建元素表格HT4。
此后,根據(jù)己經(jīng)由叉積結(jié)合單元127創(chuàng)建的計劃,叉積結(jié)合操作單元105通過對元素 表格HT3和元素表格H4執(zhí)行叉積結(jié)合處理,創(chuàng)建上級表HT5 (步驟S1205)。
然后,根據(jù)已經(jīng)由單次循環(huán)表創(chuàng)建單元125創(chuàng)建的計劃,XQuery計劃執(zhí)行單元104 復(fù)制元素表格HT3,從而創(chuàng)建下級表HT6 (歩驟S1206)。并且,根據(jù)已經(jīng)由單次循環(huán)表創(chuàng) 建單元125創(chuàng)建的計劃,XQuery計劃執(zhí)行單元104復(fù)制元素表格HT4,從而創(chuàng)建下級表 HT7 (歩驟S1207)。
如上所述,下級表HT6由兩個記錄組成,即["A1","分散"]和["A2","輕量"]。在該 情形中,根據(jù)已經(jīng)由索引信息獲取單元128創(chuàng)建的計劃,索引獲取操作單元110通過使用 第二列中指示的部門作為搜索關(guān)鍵字,執(zhí)行獲取索引信息的處理(步驟S1208)。為獲取索 引信息,將使用以上已經(jīng)說明為傳統(tǒng)技術(shù)的索引1。此后,根據(jù)己經(jīng)由單次循環(huán)表創(chuàng)建單 元125創(chuàng)建的計劃,XQuery計劃執(zhí)行單元104將由所得索引信息組成的組賦值到下級表 HT6,到其第三列中,從而創(chuàng)建下級表HT8。
此外,通過執(zhí)行與下級表HT7相同的處理,XQuery計劃執(zhí)行單元104創(chuàng)建下級表HT9 (歩驟S1209)。
根據(jù)圖9所示對應(yīng)于單次XQuery數(shù)據(jù)的單結(jié)構(gòu)計劃,執(zhí)行創(chuàng)建表的處理,該處理從 元素表格HT1開始,通過元素表格HT3和下級表HT6,然后,是下級表HT8。另一方面, 根據(jù)圖10所示單次XQuery數(shù)據(jù)對應(yīng)的單結(jié)構(gòu)計劃,執(zhí)行創(chuàng)建表的處理,該處理從元素表 格HT2開始,通過元素表格HT4和下級表HT7,然后,是下級表HT9。其后的處理,即 步驟S1205的叉積結(jié)合處理,步驟S1210的自然結(jié)合處理,和歩驟S1211的鏈接更新處理, 對應(yīng)于在附加圖8中步驟S807處所示的嵌套結(jié)構(gòu)結(jié)合計劃中創(chuàng)建的算符。
此后,根據(jù)已經(jīng)由結(jié)合表創(chuàng)建單元126創(chuàng)建的計劃,XQuery計劃執(zhí)行單元104通過結(jié) 合下級表HT8和下級表HT9,創(chuàng)建下級結(jié)合表HTIO (步驟S1210)。在該結(jié)合處理中,將 使用由自然結(jié)合操作單元106執(zhí)行的自然結(jié)合處理。
然后,根據(jù)已經(jīng)由對應(yīng)控制單元122創(chuàng)建的計劃,鏈接更新操作單元107對下級表HT5 和下級結(jié)合表HTIO,執(zhí)行鏈接更新處理,從而創(chuàng)建下級表HTll和下級結(jié)合表HT12,并 控制下級表HTll中的記錄與下級結(jié)合表HT12中的記錄之間的對應(yīng)(歩驟S1211)。換而 言之,鏈接更新操作單元107用排列為單結(jié)構(gòu)列(即,單鏈接列)的唯一的ID"C1",更新 出現(xiàn)在下級表HT5的第三和第四列(稱為"復(fù)雜鏈接列")中,和下級結(jié)合表HT10的第一 和第二列(也稱為"復(fù)雜鏈接列")中"A1"和"B1"的各個組合。以類似方式,鏈接更新操作 單元107用排列為單結(jié)構(gòu)列的唯一的ID,更新其他復(fù)雜鏈接列中的各個組合。因此,記錄 之間的對應(yīng)關(guān)系變得明顯,并且處理結(jié)宋,各個唯一的鏈接ID可以具有任意值。舉例來 說,代替C1, C2等,可以采用以升序排列的自然數(shù)諸如1, 2, 3,等等,來賦值作為唯
一的ID。該處理的實施可以通過使用能以高速讀取的存儲數(shù)據(jù)結(jié)構(gòu),諸如散列表。稍后詳 細(xì)說明該處理程序。
此后,XQuery計劃執(zhí)行單元104調(diào)整已經(jīng)創(chuàng)建的下級表HT11和下級結(jié)合表HT12的 形式,以致其以RETURN子句中所寫的格式表示XML數(shù)據(jù)。因此,將獲得如圖5所示的 XML數(shù)據(jù)。
綜上所述,根據(jù)傳統(tǒng)處理程序,在完成外XQuery數(shù)據(jù)處理之后,將己完成處理的結(jié) 果作為輸入變量組,轉(zhuǎn)發(fā)到內(nèi)XQuery數(shù)據(jù)對應(yīng)的處理,以致能處理內(nèi)XQuery數(shù)據(jù)。與此 相反,在第一實施例所對應(yīng)的處理程序中,雖然以相同方式將結(jié)果發(fā)送到內(nèi)XQuery數(shù)據(jù) 對應(yīng)的處理,本發(fā)明與傳統(tǒng)技術(shù)的不同在于,不復(fù)制來自叉積結(jié)合操作單元的輸出結(jié)果, 并且不復(fù)制叉積結(jié)合操作單元所創(chuàng)建表中的各記錄以致創(chuàng)建表。
換而言之,在圖6A和6B所示的傳統(tǒng)處理程序中,對嵌套結(jié)構(gòu)的處理要執(zhí)行與上級分 層等級中多重循環(huán)中的循環(huán)數(shù)量相同的次數(shù);然而,在圖12所示的處理程序中,不存在 此種重復(fù)。因此,當(dāng)圖6A和6B所示實例中處理的執(zhí)行次數(shù)與圖12所示實例中處理的執(zhí) 行次數(shù)相比時,很明顯算符的執(zhí)行次數(shù)存在差別。并且,對于處理之間的差別,應(yīng)當(dāng)理解 的是,當(dāng)上級分層等級中多重循環(huán)的循環(huán)數(shù)增加時,性能的差別水平將更大。
接下來,將參照圖13說明鏈接更新操作單元107根據(jù)已經(jīng)由對應(yīng)控制單元122創(chuàng)建 的計劃執(zhí)行鏈接更新處理所執(zhí)行的處理程序。
首先,鏈接更新操作單元107判斷是否已經(jīng)完全掃描了上級表中的所有記錄(步驟 S1301)。在鏈接更新操作單元107已經(jīng)判定并未完全掃描上級表中的所有記錄的情形中(步 驟S130h否),鏈接更新操作單元107用唯一的鏈接ID,更新尚未掃描的記錄中復(fù)雜鏈 接列中所存的各個ID組合(步驟S1302)。
此后,鏈接更新操作單元107將更新信息儲存到散列表中(步驟S1303)。
與此相反,在結(jié)合更新操作單元107已經(jīng)判定已經(jīng)完全掃描了上級表中的所有記錄的 情形中(步驟S1301:是),鏈接更新操作單元107判斷是否已經(jīng)掃描了下級結(jié)合表中的所 有記錄(步驟S1304)。在鏈接更新操作單元107已經(jīng)判定并未掃描所有記錄的情形中(步 驟S1304:否),鏈接更新操作單元107通過參照散列表,用唯一的鏈接ID,更新尚未掃 描的記錄中復(fù)雜鏈接列中所存的各個ID組合(步驟S1305)。
與此相反,在鏈接更新操作單元107已經(jīng)判定已經(jīng)掃描了所有記錄的情形中(步驟 S1304:是),處理結(jié)束。
通過執(zhí)行上述處理程序,可以控制上級表中的記錄和下級結(jié)合表中的記錄之間的對
應(yīng)。
本發(fā)明不限于上述示范性實施例。可以用以下實例中說明的諸多方式對本發(fā)明實施變型。
在上述第一實施例中,說明了僅用自然結(jié)合處理將下級表結(jié)合到一起的實例;然而, 可以用來將下級表結(jié)合到一起的方法,不限于自然結(jié)合處理。
在本發(fā)明的第一變型例中,將說明如下實例,其中除了自然結(jié)合處理外,還執(zhí)行測試 處理。數(shù)據(jù)庫處理設(shè)備100的配置與第一實施例的對應(yīng)設(shè)備相同。因此,將省略其說明。
在第一變型例中,假定查詢接收單元IOI已經(jīng)收到圖14所示XQuery數(shù)據(jù)的輸入。圖 14所示XQuery數(shù)據(jù)與圖4所示XQuery的不同在于,在用參考字符1401表示的行中添加 了"and $x/@id!=$y/@id"。
將參照圖15說明根據(jù)該條件下創(chuàng)建的計劃將要執(zhí)行的處理程序。
首先,以相同方式,執(zhí)行第一實施例所對應(yīng)圖12所示的步驟S1201到S1210,根據(jù)已 經(jīng)創(chuàng)建的計劃,創(chuàng)建上級表HT5,并且,用自然結(jié)合處理將下級表HT'8和HT'9結(jié)合到 --起(歩驟S1501到S1510)。
此后,在根據(jù)第一變型例的數(shù)據(jù)庫處理設(shè)備100中,測試操作單元108對己經(jīng)作為對 下級表所執(zhí)行自然結(jié)合處理的結(jié)果而創(chuàng)建的表,執(zhí)行測試處理(步驟S1511)。在該測試處 理中,只有匹配條件"and sx/(gidhsy/(gid"的記錄,將從已經(jīng)作為自然結(jié)合處理的結(jié)果而創(chuàng) 建表中提取。因此,將創(chuàng)建下級結(jié)合表HT'IO。
此后,根據(jù)已經(jīng)由對應(yīng)控制單元122船檢的計劃,鏈接更新操作單元107對上級表HT'5 和下級結(jié)合表HT'10執(zhí)行鏈接更新處理,叢而創(chuàng)建上級表HT,ll和下級結(jié)合表HT'12,并 控制上級表HT'll中的記錄與下級結(jié)合表HT'12中的記錄之間的對應(yīng)(步驟S1512)。
如第一變型例所示,在對下級表執(zhí)行的結(jié)合處理中,可以除了自然結(jié)合處理之外,還 執(zhí)行測試處理。如本文所述,對下級表執(zhí)行的結(jié)合處理可以根據(jù)已經(jīng)輸入的XQuery數(shù)據(jù) 而不同。換而言之,根據(jù)已經(jīng)輸入的XQuery數(shù)據(jù),可以通過使用并非自然結(jié)合處理的結(jié) 合處理,來結(jié)合下級表。
在上述第一實施例中,說明了在XQuery數(shù)據(jù)歸因于嵌套結(jié)構(gòu)包含雙重循環(huán)的情形中 執(zhí)行的處理。然而,示范性實施例不限于其中XQuery數(shù)據(jù)包含雙重循環(huán)的實例。作為本 發(fā)明的第二變型例,將說明本發(fā)明被應(yīng)用到XQuery數(shù)據(jù)包含三個或更多重循環(huán)的情形的 實例。數(shù)據(jù)庫處理設(shè)備100的配置與第一實施例對應(yīng)的設(shè)備相同。因此,將省略其說明。
在第二變型例中,假定數(shù)據(jù)庫處理設(shè)備100中包括的査詢接收單元101已經(jīng)收到圖16
所示的XQuery數(shù)據(jù)。圖16所示XQuery數(shù)據(jù)與圖4所示XQuery數(shù)據(jù)的不同在于,在用 參考字符1601表示的行中附加了"and $d in (MALE, FEMALE)" (MALE,男性;FEMALE,
女性)。
因此,嵌套XQuery計劃創(chuàng)建單元102從圖16所示XQuery數(shù)據(jù),提取圖17所示單次 XQuery數(shù)據(jù)段。然后,單次XQuery計劃創(chuàng)建單元103創(chuàng)建對應(yīng)于這些單次XQuery數(shù)據(jù) 段的計劃。
此后,XQuery計劃提取單元104執(zhí)行對應(yīng)于圖17到19所示的單次XQuery數(shù)據(jù)段的 計劃。對應(yīng)于圖17所示單次XQuery數(shù)據(jù)段的處理顯示在圖20中。并且,對應(yīng)于圖18所 示單次XQuery數(shù)據(jù)段的處理顯示在圖21中。此外,對應(yīng)于圖19所示單次XQuery數(shù)據(jù)段 的處理顯示在圖22中。
在圖20所示的處理中,假定,以第一實施例中的相同方式,在已經(jīng)創(chuàng)建涉及部門數(shù) 據(jù)的元素表格HA.l之后,通過復(fù)制元素表格HA.l,創(chuàng)建分層表HA.2。并且,通過執(zhí)行 與索引獲取處理相同的處理,創(chuàng)建分層表HA.3。
在圖21所示的處理中,假定,以第一實施例中的相同方式,在已經(jīng)創(chuàng)建涉及年代數(shù) 據(jù)的元素表格HB.1之后,通過復(fù)制元素表格HB.l,創(chuàng)建分層表HA.2。并且,通過執(zhí)行與 索引獲取處理相同的處理,創(chuàng)建分層表HB.3。
在圖22所示的處理中,因為XML數(shù)據(jù)不包含涉及男性或女性的元素,將創(chuàng)建空白表 HC.l。此后,作為諸如索引獲取處理等處理的對應(yīng)處理,附加MALE和FEMALE作為分 離記錄,并且賦值包括唯一的ID的列,以致創(chuàng)建分層表HC2。然后,通過復(fù)制分層表HB.2, 創(chuàng)建表HC.3。
使在圖20到22所示處理中已經(jīng)創(chuàng)建的表互相對應(yīng)的處理被顯示在圖23中。如圖23 中,通過重復(fù)處理組,其由兩個叉積結(jié)合處理, 一個(自然)結(jié)合處理,和兩個鏈接更新 處理組成,重復(fù)次數(shù)等于從XQuery數(shù)據(jù)中嵌套結(jié)構(gòu)所引起循環(huán)的次數(shù)減去一所獲得的數(shù) 量,可以實現(xiàn)XQuery數(shù)據(jù)請求的處理。因此,可以將本發(fā)明應(yīng)用到具有如下嵌套結(jié)構(gòu)的 XQuery數(shù)據(jù),該結(jié)構(gòu)具有三重或更多重循環(huán)。
具體說來,在執(zhí)行叉積結(jié)合處理,另一叉積結(jié)合處理,和自然結(jié)合處理之后,該處理 是對圖20所示元素表格HA.l,分層表HA.2,和分層表HA.3,以及圖21所示元素表格 HB.l,分層表HB.2,和分層表HB.3執(zhí)行的,將對作為結(jié)合處理的結(jié)果所得的表執(zhí)行鏈接 更新處理。因此,將創(chuàng)建叉積結(jié)合表HAB.1',叉積結(jié)合表HAB.2",和自然結(jié)合表HAB.3'。
此后,在叉積結(jié)合處理之后,將執(zhí)行另一叉積結(jié)合處理,和自然結(jié)合處理,該處理是
對圖22所示的元素表格HC.1(其在第二變型例中是空白表),分層表HC2,和分層表HC3, 以及已經(jīng)從上述處理獲取的叉積結(jié)合表HAB.1',叉積結(jié)合表HAB.2",和自然結(jié)合表 HAB.3'執(zhí)行的,并對作為結(jié)合處理結(jié)果獲得的表執(zhí)行鏈接更新處理。因此,將創(chuàng)建叉積結(jié) 合表HABC.r,叉積結(jié)合表.HABC.2",和自然結(jié)合表HABC.3,。
在上述處理中,舉例來說,叉積結(jié)合操作單元105通過對已經(jīng)執(zhí)行過鏈接更新處理的 叉積結(jié)合表HAB.l,和元素表格HC.l執(zhí)行叉積結(jié)合處理,來創(chuàng)建叉積結(jié)合表HABC.l。并 且,叉積結(jié)合操作單元105通過對己經(jīng)執(zhí)行過鏈接更新處理的叉積結(jié)合表HAB.2"和并未 執(zhí)行過結(jié)合處理的分層表HC.2執(zhí)行叉積結(jié)合處理,來創(chuàng)建叉積結(jié)合表HABC.2。在該處理 中,因為表HC.l是空白表,叉積結(jié)合表HAB.1'成為叉積結(jié)合表HABC.l。
并且,結(jié)合表創(chuàng)建單元126創(chuàng)建計劃,用于通過對并未執(zhí)行過結(jié)合處理的表HC.3和 已經(jīng)執(zhí)行過鏈接更新處理的自然結(jié)合表HAB.3'執(zhí)行自然結(jié)合處理,來創(chuàng)建自然結(jié)合表 HABC.3。
此外,對應(yīng)控制單元122創(chuàng)建用于通過執(zhí)行鏈接更新處理來控制叉積結(jié)合表HABC.l 與叉積結(jié)合表HABC2之間的對應(yīng)性計劃,以及用于通過執(zhí)行鏈接更新處理,來控制已經(jīng) 被控制的叉積結(jié)合表HABC.2'和自然結(jié)合表HABC.3之間的對應(yīng)的計劃。因此,將產(chǎn)生下 述對應(yīng)關(guān)系。
如圖24所示,用唯一的識別符"K1"到"K4",使已經(jīng)在上述處理中創(chuàng)建的表HABC.1' 和HABC.2"互相對應(yīng)。并且,用唯一的識別符"J1"到"J5",使表HABC.2"和HABC.3'互相對應(yīng)。
在根據(jù)第二變型例的數(shù)據(jù)庫處理設(shè)備100中,通過根據(jù)上述程序執(zhí)行處理,即使在基 于歸因于嵌套機(jī)構(gòu)具有包含三重或更多重循環(huán)的多重循環(huán)的XQuery數(shù)據(jù)來處理XML數(shù)據(jù) 的情形中,也可以減少計算量。
如圖25所示,作為其硬件配置,上述數(shù)據(jù)庫處理設(shè)備100包括只讀存儲器(ROM) 2502,其在其中儲存例如用來執(zhí)行上述處理的數(shù)據(jù)庫處理計算機(jī)程序,中央處理器(CPU) 2501,其根據(jù)ROM 2501中儲存的計算機(jī)程序,控制數(shù)據(jù)庫處理設(shè)備100的組成元素,隨 機(jī)讀寫存儲器(RAM) 2503,其在其中儲存各種所需數(shù)據(jù),通信接口 (I/F) 2504,其建立 到網(wǎng)絡(luò)的結(jié)合,并執(zhí)行通信,以及總線2505,其使這些組成元素互相結(jié)合。
在其中數(shù)據(jù)庫處理計算機(jī)程序以可安裝格式或可執(zhí)行格式的文件形式被記錄在諸如 高密度磁盤只讀存儲器(CD-ROM),軟盤(注冊商標(biāo)),磁盤(FD),數(shù)字多功能光盤(DVD) 等上提供的安排也可接受。
在該情形中,計算機(jī)程序加載到主存儲裝置(例如,RAM 2503)中,其從記錄介質(zhì) 讀取并在數(shù)據(jù)庫處理設(shè)備IOO中執(zhí)行,以致在上述軟件配置中說明的組成元素產(chǎn)生在主存 儲裝置中。
另一安排也可接受,其中示范性實施例所對應(yīng)的計算機(jī)程序儲存在計算機(jī)中,該計算 機(jī)結(jié)合到諸如英特網(wǎng)的網(wǎng)絡(luò),以致計算機(jī)程序通過網(wǎng)絡(luò)下載提供。
已經(jīng)通過示范性實施例說明本發(fā)明;然而,可以對這些示范性實施例進(jìn)行諸多變型和 改進(jìn)。
對本領(lǐng)域的技術(shù)人員而言,很容易實現(xiàn)其他優(yōu)點和修改。因此,本發(fā)明在其更廣大方 面并不限于本文說明的具體細(xì)節(jié)和典型實施例。相應(yīng)地,可以做出諸多修改,而不背離總 體發(fā)明概念的精神和范圍,該總體發(fā)明概念由附加的權(quán)利要求及其等價物定義。
權(quán)利要求
1. 一種數(shù)據(jù)庫處理設(shè)備,其特征在于,包含接收單元,其從另一部分語法樹接收請求獲取與結(jié)構(gòu)化數(shù)據(jù)庫中包含的部分語法樹中儲存的各個元素相同的元素相對應(yīng)的信息的處理的獲取請求,所述處理是執(zhí)行嵌套結(jié)構(gòu)中多重循環(huán)的處理,并且所述每一個元素用作每一個所述多重循環(huán)中的變量;識別符賦值單元,其將唯一的識別符賦值到元素表中儲存的每一個記錄,每一個所述元素表是為所述多重循環(huán)中的每一個循環(huán)創(chuàng)建的;結(jié)合單元,其通過對已經(jīng)賦值有所述識別符的所述元素表執(zhí)行叉積結(jié)合處理來創(chuàng)建叉積結(jié)合表,在所述叉積結(jié)合表中將多個所述識別符賦值給每一個所述記錄;信息獲取單元,其基于每一個所述元素表中包括的所述元素獲取在所述獲取請求中指定為獲取目標(biāo)的信息;單次循環(huán)表創(chuàng)建單元,其對每一個所述循環(huán)創(chuàng)建儲存所述記錄的單次循環(huán)表,在所述記錄中所獲取的信息,所述識別符,和所述元素互相對應(yīng);結(jié)合表創(chuàng)建單元,其通過將對每一個所述循環(huán)分別創(chuàng)建的所述單次循環(huán)表結(jié)合來創(chuàng)建賦值有多個所述識別符的循環(huán)間結(jié)合表;以及對應(yīng)控制單元,其基于賦值給所述叉積結(jié)合表的多個所述識別符和賦值給所述循環(huán)間結(jié)合表的多個所述識別符,控制所述叉積結(jié)合表中的所述記錄與所述循環(huán)間結(jié)合表中的所述記錄之間的對應(yīng)。
2. 如權(quán)利要求l所述的設(shè)備,其特征在于,所述接收單元從另一部分語法樹接收獲取請求,以請求獲取與結(jié)構(gòu)化數(shù)據(jù)庫中包含的 部分語法樹中儲存的各元素相同的元素對應(yīng)的信息的處理,所述處理是執(zhí)行所述嵌套結(jié)構(gòu) 中所述多重循環(huán)的處理,并且所述各個元素用作三重或更多重循環(huán)中的循環(huán)的每一個中的 變量;所述結(jié)合單元通過對已被所述對應(yīng)控制單元控制的第一叉積結(jié)合表和未被所述對應(yīng) 控制表控制的第一單次循環(huán)表執(zhí)行叉積結(jié)合處理,進(jìn)一歩創(chuàng)建第一多重叉積結(jié)合表,并且 還通過對已被所述對應(yīng)控制單元控制的第二叉積結(jié)合表和未被所述對應(yīng)控制表控制的第 二單次循環(huán)表執(zhí)行叉積結(jié)合處理來創(chuàng)建第二多重叉積結(jié)合表,結(jié)合表創(chuàng)建單元進(jìn)一歩通過結(jié)合未被對應(yīng)控制單元控制的第三單次循環(huán)表和已被對 應(yīng)控制表控制的第三循環(huán)間結(jié)合表來創(chuàng)建多重循環(huán)間結(jié)合表,以及 對應(yīng)控制單元進(jìn)一步控制所述第一多重叉積結(jié)合表和所述第二多重叉積結(jié)合表之間 的對應(yīng),并且還控制已被控制的所述第二多重叉積結(jié)合表與所述多重循環(huán)間結(jié)合表之間的 對應(yīng)。
3. 如權(quán)利要求1所述的設(shè)備,其特征在于,進(jìn)一步包含更新單元,其用唯一的鏈接 識別符,更新每一個多個所述識別符的組合。
4. 如權(quán)利要求1所述的設(shè)備,其特征在于,所述結(jié)合表創(chuàng)建單元在結(jié)合多個所述單 次循環(huán)表之后,根據(jù)所述獲取請求中的嵌套結(jié)構(gòu)中指示的結(jié)合條件,執(zhí)行預(yù)定操作。
5. 如權(quán)利要求l所述的設(shè)備,其特征在于,所述接收單元接收XQuery格式的所述獲 取請求,以請求對XML格式的所述結(jié)構(gòu)化數(shù)據(jù)庫執(zhí)行的獲取處理。
6. —種數(shù)據(jù)庫處理方法,其特征在于,包含從另一部分語法樹接收獲取請求,以請求獲取與結(jié)構(gòu)化數(shù)據(jù)庫中包含的部分語法樹中 儲存的各元素相同的元素對應(yīng)的信息的處理,所述處理是執(zhí)行嵌套結(jié)構(gòu)中多重循環(huán)的處 理,并且每一個元素用作所述多重循環(huán)中的每一個的變量;將唯一的識別符賦值到元素表中儲存的每一個記錄,每一個所述元素表是為所述多重 循環(huán)中的每一個循環(huán)創(chuàng)建的;通過對已經(jīng)賦值有所述識別符的所述元素表執(zhí)行叉積結(jié)合處理來創(chuàng)建叉積結(jié)合表,在 所述叉積結(jié)合表中將多個所述識別符賦值給每一個所述記錄;基于每一個所述元素表中包括的所述元素獲取在所述獲取請求中指定為獲取目標(biāo)的信息;對每一個所述循環(huán),創(chuàng)建儲存所述記錄的單次循環(huán)表,在該所述記錄中所獲取的信息, 所述識別符,和所述元素互相對應(yīng);通過將對每一個所述循環(huán)分別創(chuàng)建的所述單次循環(huán)表結(jié)合,創(chuàng)建賦值有多個所述識別 符的循環(huán)間結(jié)合表;以及基于賦值給所述叉積結(jié)合表的多個所述識別符和賦值給所述循環(huán)間結(jié)合表的多個所 述識別符,控制所述叉積結(jié)合表中的所述記錄與所述循環(huán)間結(jié)合表中的所述記錄之間的對 應(yīng)。
7. 如權(quán)利要求6所述的方法,其特征在于,在從所述另一部分語法樹接收請求獲取對應(yīng)于與結(jié)構(gòu)化數(shù)據(jù)庫中所含部分語法樹中 儲存的各元素相同的元素的信息的處理的所述獲取請求時,所述處理是執(zhí)行所述嵌套結(jié)構(gòu) 中所述多重循環(huán)的處理,并且所述每一個元素用作三重或更多重循環(huán)中所述循環(huán)中的每一 個的變量;在創(chuàng)建所述叉積結(jié)合表時,通過對己經(jīng)在控制過程中被控制的所述叉積結(jié)合表和未在 控制過程中被控制的所述單次循環(huán)表中的一個執(zhí)行叉積結(jié)合處理來進(jìn)一步創(chuàng)建多重叉積 結(jié)合表;在創(chuàng)建所述循環(huán)間結(jié)合表時,通過未在控制過程中被控制的結(jié)合單次循環(huán)表中的一個 和已在控制過程中被控制的循環(huán)間結(jié)合表來進(jìn)一步創(chuàng)建多重循環(huán)間結(jié)合表,以及在控制過程中,進(jìn)一步控制所述叉積結(jié)合表和所述多重叉積結(jié)合表之間的對應(yīng),并且 還控制已被控制的所述多重叉積結(jié)合表與所述多重循環(huán)間結(jié)合表之間的對應(yīng)。
8. 如權(quán)利要求6所述的方法,其特征在于,進(jìn)一步包含用唯一的結(jié)合識別符,更新 每一個多個所述識別符的組合。
9. 如權(quán)利要求6所述的方法,其特征在于,在創(chuàng)建所述循環(huán)間結(jié)合表時,在結(jié)合多 個所述單次循環(huán)表之后,根據(jù)所述獲取請求中的所述嵌套結(jié)構(gòu)中指示的結(jié)合條件,執(zhí)行預(yù) 定操作。
10. 如權(quán)利要求6所述的方法,其特征在于,在接所述收獲取請求時,接收XQuery 格式的所述獲取請求,以請求對XML格式的所述結(jié)構(gòu)化數(shù)據(jù)庫執(zhí)行的獲取處理。
全文摘要
本發(fā)明提供一種用于處理數(shù)據(jù)庫的設(shè)備和方法。接收獲取請求,以請求通過使用多重循環(huán),從結(jié)構(gòu)化數(shù)據(jù)庫獲取信息。將唯一的識別符賦值到為循環(huán)中的不同個創(chuàng)建的元素表中的每一個記錄。通過對元素表執(zhí)行叉積結(jié)合處理,創(chuàng)建叉積結(jié)合表,以致從元素表獲取在獲取請求中指定為獲取目標(biāo)的信息。在該表中對各記錄賦值有多個識別符。對每一個循環(huán),創(chuàng)建儲存記錄的單次循環(huán)表,在該表中所獲取的信息,識別符,和元素互相對應(yīng)。通過結(jié)合多個單次循環(huán)表,創(chuàng)建循環(huán)間結(jié)合表。基于包含在叉積結(jié)合表和循環(huán)間結(jié)合表中的識別符,控制叉積結(jié)合表中的記錄與循環(huán)間結(jié)合表中的記錄之間的對應(yīng)。
文檔編號G06F17/30GK101388034SQ200810160838
公開日2009年3月18日 申請日期2008年9月11日 優(yōu)先權(quán)日2007年9月11日
發(fā)明者服部雅一 申請人:株式會社東芝