專利名稱:一種存儲(chǔ)和檢索數(shù)據(jù)的方法和一種存儲(chǔ)器配置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及根據(jù)后附權(quán)利要求1,6,18和20的前序的一種數(shù)據(jù)存儲(chǔ)方法,以及根據(jù)后附權(quán)利要求11,15,22和24的前序的一種數(shù)據(jù)檢索方法。本發(fā)明也涉及根據(jù)后附權(quán)利要求25和26的前序的相聯(lián)存儲(chǔ)器配置。
本發(fā)明的實(shí)現(xiàn)方法主要用于集中存儲(chǔ)數(shù)據(jù)庫(kù)的連接。一種合適的應(yīng)用是在電話交換機(jī)中用戶數(shù)據(jù)庫(kù)的維護(hù)。
現(xiàn)有技術(shù)的單維目錄結(jié)構(gòu),稱為數(shù)字檢索(Digitaltrie)(單詞“trie”是從英語(yǔ)單詞“retrieval”中派生的),是本發(fā)明基本原則的潛在基礎(chǔ)。數(shù)字檢索是一個(gè)樹(shù)狀結(jié)構(gòu),由兩類節(jié)點(diǎn)組成葉節(jié)點(diǎn),包括一個(gè)記錄,和引導(dǎo)搜索的內(nèi)部節(jié)點(diǎn)。一個(gè)內(nèi)部節(jié)點(diǎn)是一個(gè)有2的k次冪(2k)個(gè)元素的數(shù)組。如果一個(gè)元素被使用,它或者指向目錄樹(shù)下一層的內(nèi)部節(jié)點(diǎn),或者指向包含一個(gè)記錄的葉節(jié)點(diǎn)。在其它情況下,該元素是空的(空)。對(duì)數(shù)據(jù)庫(kù)的搜索是通過(guò)一次檢查搜索關(guān)鍵字(例如,在電話交換機(jī)用戶數(shù)據(jù)庫(kù)的情況下,一般是對(duì)應(yīng)于該用戶電話號(hào)碼的二進(jìn)制數(shù)字)的k個(gè)比特進(jìn)行的。需要搜索的比特以下述方式選出在樹(shù)形結(jié)構(gòu)的根層次(在第一個(gè)內(nèi)部節(jié)點(diǎn)),搜索最左的k個(gè)比特;在結(jié)構(gòu)的第二層次,搜索這些最左比特的下一組k個(gè)比特,以此類推。需要搜索的比特被解釋成無(wú)符號(hào)二進(jìn)制整數(shù),直接用作元素?cái)?shù)組的索引(該索引指示了數(shù)組中的一個(gè)給定元素)。如果該索引指示的元素是空的,搜索以不成功結(jié)束。如果該元素指向下一層的一個(gè)內(nèi)部節(jié)點(diǎn),從搜索關(guān)鍵字中抽取下一組k個(gè)比特在該層按上述方式進(jìn)行搜索。經(jīng)過(guò)比較之后,尋徑或者向下一層的一個(gè)內(nèi)部節(jié)點(diǎn)分支,或者指向通常包含一個(gè)關(guān)鍵字—指針對(duì)的葉節(jié)點(diǎn)。如果該元素指向一個(gè)包含記錄的葉節(jié)點(diǎn),則比較搜索關(guān)鍵字和該記錄中存儲(chǔ)的關(guān)鍵字。這樣,僅在搜索發(fā)現(xiàn)一個(gè)葉節(jié)點(diǎn)之后才比較整個(gè)搜索關(guān)鍵字。當(dāng)關(guān)鍵字相等時(shí),搜索成功,所需的數(shù)據(jù)單元從該葉節(jié)點(diǎn)的指針?biāo)甘镜拇鎯?chǔ)地址中獲取。當(dāng)關(guān)鍵字不等時(shí),搜索以不成功終止。
圖1說(shuō)明了一個(gè)數(shù)字檢索結(jié)構(gòu)的示例,其中關(guān)鍵字長(zhǎng)4比特, k=2,這樣每一個(gè)內(nèi)部節(jié)點(diǎn)有22=4個(gè)元素,在每一層搜索從關(guān)鍵字中抽取出的2個(gè)比特。包含記錄的葉節(jié)點(diǎn)以參數(shù)A,B,C,D…H…M,N,O和P標(biāo)明。這樣,一個(gè)葉節(jié)點(diǎn)是一個(gè)不指向樹(shù)中低層的節(jié)點(diǎn)。圖1中內(nèi)部節(jié)點(diǎn)以參數(shù)V1…V5標(biāo)明,內(nèi)部節(jié)點(diǎn)元素由參數(shù)VA標(biāo)明。
在圖1所示的例示性例子中,葉節(jié)點(diǎn)的搜索關(guān)鍵字按下述方式示出A=0000,B=0001,C=0010,…,H=0111,…和P=1111。在這種情況下,每一個(gè)葉節(jié)點(diǎn)中存儲(chǔ)的指針指向數(shù)據(jù)庫(kù)SD的某個(gè)存儲(chǔ)單元,在該存儲(chǔ)單元中可以查找到實(shí)際數(shù)據(jù),例如,有關(guān)用戶的電話號(hào)碼,以及該用戶的其他相關(guān)信息。實(shí)際用戶數(shù)據(jù)可以是,例如圖1示出的順序文件類型,存儲(chǔ)在數(shù)據(jù)庫(kù)中。搜索基于記錄H的關(guān)鍵字進(jìn)行,例如,首先抽取關(guān)鍵字最左的兩位比特(01),并予以解釋,向節(jié)點(diǎn)V1的第二個(gè)元素傳送,該元素含有指向下一層節(jié)點(diǎn)V3的指針。在這一層上,抽取搜索關(guān)鍵字緊接著的兩位比特(11),然后得出該節(jié)點(diǎn)的第四個(gè)元素,指向記錄H。
除了指針,葉節(jié)點(diǎn)也可以包含(除搜索關(guān)鍵字之外)一個(gè)實(shí)際的數(shù)據(jù)文件。例如,與用戶A(圖1)的相關(guān)數(shù)據(jù)可以放置于葉節(jié)點(diǎn)A,與用戶B的相關(guān)數(shù)據(jù)可以放置于葉節(jié)點(diǎn)B,等等。這樣,在第一種實(shí)施例(其中葉節(jié)點(diǎn)存儲(chǔ)了一個(gè)關(guān)鍵字-指針對(duì))中,數(shù)字檢索結(jié)構(gòu)僅作為一個(gè)目錄結(jié)構(gòu),在第二種實(shí)施例(其中葉節(jié)點(diǎn)存儲(chǔ)了關(guān)鍵字和實(shí)際數(shù)據(jù))中,數(shù)字檢索結(jié)構(gòu)作為一塊相聯(lián)存儲(chǔ)器。(在相聯(lián)存儲(chǔ)器中,存儲(chǔ)單元基于它們的內(nèi)容標(biāo)識(shí)。)在本發(fā)明的實(shí)現(xiàn)中,與上述情況不同,搜索關(guān)鍵字是多維的,也就是說(shuō),搜索關(guān)鍵字包括許多屬性(例如,用戶的姓氏和一個(gè)或多個(gè)家族名),這樣在每一個(gè)屬性中,可以一次搜索一個(gè)屬性的Ki個(gè)搜索關(guān)鍵字比特。(i是對(duì)應(yīng)于一個(gè)屬性的索引)。
以前,上述的單維檢索結(jié)構(gòu)被擴(kuò)展成一個(gè)多維“EXCELL”結(jié)構(gòu)(英語(yǔ)詞匯“ extendible cell”的縮寫(xiě)),以支持與幾何應(yīng)用相關(guān)搜索的最大效率。EXCELL結(jié)構(gòu)包括單元?jiǎng)澐炙阉骺臻g,和一個(gè)獨(dú)立目錄部分。單元?jiǎng)澐衷谒阉骺臻g的任一個(gè)軸線方向上將搜索空間遞歸劃分成兩個(gè)相等的部分。單元?jiǎng)澐值慕Y(jié)果是多維檢索結(jié)構(gòu)。目錄部分是表格形式的柵格,其中每一個(gè)柵格等于搜索空間中的最小單元。柵格元素指向搜索空間中的一個(gè)單元,并且多于一個(gè)柵格元素可以指向同一個(gè)單元。(EXCELL結(jié)構(gòu)在Tamminen,M.The EXCELL method for efficient geometric access todata,Helsinki 1981,Acta Polytechnica Scandinavica,Mathematics andCompute Science Series#34中描述,感興趣的讀者可以參考該資料以獲取更詳盡的說(shuō)明。)這樣一種多維檢索結(jié)構(gòu),其中單元大小是動(dòng)態(tài)的(當(dāng)數(shù)據(jù)進(jìn)入該結(jié)構(gòu)時(shí)目錄部分加倍),伴隨著由特定類型(不統(tǒng)一的)關(guān)鍵字分布導(dǎo)致的目錄部分快速(指數(shù)級(jí))增長(zhǎng)。其結(jié)果是,存儲(chǔ)占有率(存儲(chǔ)器電路要求)將過(guò)度增長(zhǎng),存儲(chǔ)管理效率(速度)將受到影響。
本發(fā)明的目標(biāo)是消除上述問(wèn)題,并提供一種存儲(chǔ)器,其中目錄部分可以容納在比現(xiàn)有技術(shù)要小的存儲(chǔ)空間,而且比以前更容易管理。這個(gè)目標(biāo)由本發(fā)明的存儲(chǔ)和檢索方法實(shí)現(xiàn),存儲(chǔ)方法的基本特征在于,(a)從對(duì)應(yīng)于每一維的搜索關(guān)鍵字中選擇預(yù)定數(shù)量(ki)的比特,組成一個(gè)搜索關(guān)鍵字,基于該搜索關(guān)鍵字從樹(shù)狀層次結(jié)構(gòu)的根層次的內(nèi)部節(jié)點(diǎn)查找下一個(gè)節(jié)點(diǎn)的地址,進(jìn)行到所述節(jié)點(diǎn),(b)從對(duì)應(yīng)于每一維的搜索關(guān)鍵字未被選中的比特中選擇預(yù)定數(shù)量(ki)的比特,組成一個(gè)搜索關(guān)鍵字,通過(guò)該搜索關(guān)鍵字從已被訪問(wèn)的節(jié)點(diǎn)數(shù)組中查找低層次進(jìn)一步新節(jié)點(diǎn)的地址,(c)重復(fù)步驟(b)直到遇到了一個(gè)空元素或直到低層次新節(jié)點(diǎn)的地址是一個(gè)葉節(jié)點(diǎn)的地址,和(d)在葉節(jié)點(diǎn)中存儲(chǔ)一個(gè)指針,將所述數(shù)據(jù)單元存儲(chǔ)在該指針指示的存儲(chǔ)單元或者將所述數(shù)據(jù)單元存儲(chǔ)在該葉節(jié)點(diǎn)。根據(jù)本發(fā)明的檢索方法的基本形式,其特征在后附權(quán)利要求11和15的特征部分提出。對(duì)上述基本形式而言,目錄結(jié)構(gòu)僅包括一個(gè)節(jié)點(diǎn)的特定例子也適用。根據(jù)該實(shí)施例的存儲(chǔ)方法,其特征在后附權(quán)利要求18和20的特征部分提出,其檢索方法的特征相應(yīng)在后附權(quán)利要求22和24的特征部分提出。本發(fā)明的相聯(lián)存儲(chǔ)器配置相應(yīng)地在后附權(quán)利要求25和26的特征部分提出。
本發(fā)明的想法是在多維檢索結(jié)構(gòu)中以下述方式執(zhí)行地址運(yùn)算在每一維中獨(dú)立于其它維選擇預(yù)定數(shù)量的比特,一種典型實(shí)現(xiàn)是為了計(jì)算一個(gè)元素?cái)?shù)組的索引,從不同維的搜索關(guān)鍵字中選擇不等數(shù)量的比特。因此,通過(guò)預(yù)先給定在每一維中需要搜索的搜索關(guān)鍵字比特?cái)?shù)量,檢索結(jié)構(gòu)中的單個(gè)內(nèi)部節(jié)點(diǎn)的每一維都設(shè)置一個(gè)獨(dú)立于其它維的固定限制。這樣,在每一維中的選擇獨(dú)立于其它維中的選擇。這種方式一方面避免了橫向上結(jié)構(gòu)的過(guò)分增長(zhǎng),另一方面避免了在任意維深度方向上結(jié)構(gòu)的過(guò)分增長(zhǎng)(深度,也就是說(shuō),每一維上的層次數(shù)量,等于搜索關(guān)鍵字總長(zhǎng)度的比特?cái)?shù)除以一次搜索的比特?cái)?shù)量,也就是說(shuō),深度受決定內(nèi)部節(jié)點(diǎn)多少的參數(shù)影響)。這樣,通過(guò)在寬度和深度方向上預(yù)先給目錄加以特定限制,存儲(chǔ)要求得到控制。
通過(guò)本發(fā)明的實(shí)現(xiàn),硬件中存儲(chǔ)器電路的要求將比以前更小,存儲(chǔ)管理將是高效的,尤其在預(yù)先得知搜索關(guān)鍵字值分布的情況下(例如,電話交換機(jī)通常是這種情況)。
本發(fā)明的另一個(gè)優(yōu)點(diǎn)在于,可以設(shè)計(jì)一種結(jié)構(gòu)(通過(guò)選擇參數(shù))以使完全關(guān)鍵字檢索和部分關(guān)鍵字檢索在所有方向上都是相等的。這種方法也允許僅在特定維上進(jìn)行的檢索,也就是說(shuō),部分關(guān)鍵字檢索,具有最大效率。這些特性是非常重要的,尤其在需要高速的實(shí)時(shí)數(shù)據(jù)庫(kù)中。在速度方面的一個(gè)進(jìn)一步優(yōu)點(diǎn)在于,這種實(shí)現(xiàn)允許高效地并行處理(換句話說(shuō),如果例如查找分支成兩個(gè)子樹(shù),每一個(gè)可以在獨(dú)立處理器中進(jìn)行處理)。
以下參照?qǐng)D2到6,通過(guò)相應(yīng)圖片的例子,解釋本發(fā)明和它的優(yōu)選實(shí)施例,其中圖1說(shuō)明了在電話交換機(jī)中用以維護(hù)用戶數(shù)據(jù)的一種單維數(shù)字檢索結(jié)構(gòu),圖2說(shuō)明了一種多維數(shù)字檢索結(jié)構(gòu),圖3說(shuō)明了根據(jù)本發(fā)明的檢索結(jié)構(gòu)的內(nèi)部節(jié)點(diǎn)中元素的結(jié)構(gòu),圖4說(shuō)明了根據(jù)本發(fā)明的存儲(chǔ)器所使用的目錄結(jié)構(gòu)的節(jié)點(diǎn),圖5說(shuō)明了判定內(nèi)部節(jié)點(diǎn)的元素(元素?cái)?shù)組的索引)的方法,內(nèi)部節(jié)點(diǎn)與圖4一致,以及圖6在框圖層次上說(shuō)明了根據(jù)本發(fā)明的一種存儲(chǔ)器配置。
如前面所述,在本發(fā)明中檢索結(jié)構(gòu)有多維實(shí)現(xiàn)(一般n維)。這樣一種多維結(jié)構(gòu)在最初時(shí)與所描述的單維結(jié)構(gòu)完全類似,只是在內(nèi)部節(jié)點(diǎn)中包括的數(shù)組元素是多維的。圖2示例給出了一種二維22*21結(jié)構(gòu),其中數(shù)組元素的一維包括四個(gè)元素,另一維包括2個(gè)元素。內(nèi)部節(jié)點(diǎn)元素指向的葉節(jié)點(diǎn)在圖中以圓示出。
在多維情況下的地址運(yùn)算的原則與單維情況下相同。然而,基本的差別在于,對(duì)元素?cái)?shù)組(n索引)中的每一維計(jì)算索引,而不再是一個(gè)元素?cái)?shù)組索引。這樣,每一維有它自己的搜索關(guān)鍵字空間{0,1,…,2vi-1}(vi是每一維數(shù)上搜索關(guān)鍵字長(zhǎng)度的比特?cái)?shù),i∈{1,…,n})。
為了表示內(nèi)部節(jié)點(diǎn)中單個(gè)元素VA的狀態(tài),首先定義術(shù)語(yǔ)溢出元素的意義。當(dāng)向目錄樹(shù)增加一個(gè)新指針時(shí)(作為數(shù)據(jù)插入存儲(chǔ)器的結(jié)果),可能在該內(nèi)部節(jié)點(diǎn)的位置上已經(jīng)有一個(gè)指向某個(gè)葉節(jié)點(diǎn)的指針。這種情況稱為沖突。有許多方法可以解決沖突。從控制存儲(chǔ)器管理的角度來(lái)看,在目錄樹(shù)的下一層為沖突指針創(chuàng)建一個(gè)新的內(nèi)部節(jié)點(diǎn)是沒(méi)有用的,但是如果該節(jié)點(diǎn)含有空元素,該指針可置于發(fā)生沖突的內(nèi)部節(jié)點(diǎn)的元素中。這樣的元素稱為溢出元素,這樣它們包括根據(jù)上述直接地址運(yùn)算機(jī)制所無(wú)法放置的指針。為了能檢索到這樣的記錄,內(nèi)部節(jié)點(diǎn)的元素必須具有一個(gè)獨(dú)立的標(biāo)識(shí)符,以指示在所述元素中包含的指針類型,換句話說(shuō),說(shuō)明它是指向下一層次的內(nèi)部節(jié)點(diǎn)還是一個(gè)溢出元素(在同一個(gè)內(nèi)部節(jié)點(diǎn)中)。
圖3例示了根據(jù)本發(fā)明的存儲(chǔ)器中目錄結(jié)構(gòu)中內(nèi)部節(jié)點(diǎn)元素的結(jié)構(gòu)。內(nèi)部節(jié)點(diǎn)可以是目錄節(jié)點(diǎn)或溢出節(jié)點(diǎn)類型。如果內(nèi)部節(jié)點(diǎn)沒(méi)有包含溢出元素,則該內(nèi)部節(jié)點(diǎn)類型是目錄節(jié)點(diǎn),如果包含即使一個(gè)溢出元素,則該內(nèi)部節(jié)點(diǎn)類型是溢出節(jié)點(diǎn)。相應(yīng)地,一個(gè)元素可以是一個(gè)目錄元素,一個(gè)溢出元素或一個(gè)空元素(未使用)。一個(gè)目錄元素可以指向一個(gè)目錄節(jié)點(diǎn),溢出節(jié)點(diǎn)或葉節(jié)點(diǎn)。另一方面,一個(gè)溢出節(jié)點(diǎn)僅指向一個(gè)溢出節(jié)點(diǎn)或一個(gè)葉節(jié)點(diǎn)。
在這個(gè)例子中的每一個(gè)元素長(zhǎng)度為40比特(5字節(jié)),包括下列字段(括號(hào)中為字段長(zhǎng)度)指針字段31(32比特),指針類型字段32(2比特),和元素類型字段33(2比特)。進(jìn)一步,元素中保留了一個(gè)空閑字段34。指針類型可以通過(guò)指針類型字段32的兩位比特進(jìn)行編碼,例如以下述方式進(jìn)行00指針未用,01指針指向一個(gè)目錄節(jié)點(diǎn),
10指針指向一個(gè)溢出節(jié)點(diǎn),和11指針指向一個(gè)葉節(jié)點(diǎn)。
元素類型可以通過(guò)元素類型字段的兩位比特進(jìn)行編碼,例如以下述方式進(jìn)行00空元素,01目錄元素,10溢出元素,和11未用。
在根據(jù)本發(fā)明的多維檢索存儲(chǔ)器結(jié)構(gòu)中,基于每一維方向上單個(gè)內(nèi)部節(jié)點(diǎn)所需大小,另一方面,基于該維方向上結(jié)構(gòu)的所需深度,通過(guò)固定每一維的參數(shù),ki(該維數(shù)需要搜索的搜索關(guān)鍵字比特?cái)?shù)量),從而預(yù)先決定了每一個(gè)內(nèi)部節(jié)點(diǎn)的大小(元素?cái)?shù)量)。這樣,在每一維數(shù)方向上內(nèi)部節(jié)點(diǎn)的大小是2ki個(gè)元素,內(nèi)部節(jié)點(diǎn)元素總數(shù)S也是2的冪S=∏2Ki=2K1×2K2×2K3×...=2N(1)可以用n個(gè)(n≥2)整數(shù)指向有n個(gè)維內(nèi)部節(jié)點(diǎn)中的所有元素,每一個(gè)整數(shù)值可以在{0,1…2Ki-1}之間。這樣,預(yù)定參數(shù)包括每一維搜索關(guān)鍵字的總長(zhǎng)度和每一維搜索的比特?cái)?shù)量。例如,如果在某一維上的搜索關(guān)鍵字最多有256個(gè)屬性(例如姓氏),搜索關(guān)鍵字的總長(zhǎng)度有8比特。如果選擇這些比特用于實(shí)例1進(jìn)行一次搜索,在該維方向上結(jié)構(gòu)的深度為8/1=8。通過(guò)恰當(dāng)?shù)剡x取每一維上的搜索比特?cái)?shù)量,可以將例如所有維上的深度設(shè)成相等。
因此,根據(jù)本發(fā)明,搜索比特的數(shù)量在每一維上可以不同,這樣,每一維也可以單獨(dú)控制所需的存儲(chǔ)空間。
圖4示出了根據(jù)本發(fā)明的存儲(chǔ)器目錄結(jié)構(gòu)中所使用的內(nèi)部節(jié)點(diǎn)V10的例子,該例使用了三維搜索關(guān)鍵字。在第一維方向上(x),內(nèi)部節(jié)點(diǎn)有22=4個(gè)元素,在第二維方向上(y),內(nèi)部節(jié)點(diǎn)有21=2個(gè)元素,在第三維方向上(z),內(nèi)部節(jié)點(diǎn)有23=8個(gè)元素,總共給出了26=64個(gè)元素,編號(hào)為0…63。
因?yàn)閷?shí)際硬件實(shí)現(xiàn)的存儲(chǔ)器空間(例如計(jì)算機(jī)設(shè)備)是單維的,在地址運(yùn)算操作中(也就是說(shuō),在搜索樹(shù)中處理時(shí)),多維數(shù)組被線性化,也就是說(shuō)轉(zhuǎn)換成單維的。線性化是一個(gè)可以在各種不同大小數(shù)組上執(zhí)行的算法操作。
在線性化過(guò)程中,數(shù)組中的元素從0(如圖4所示)開(kāi)始排序,最后一個(gè)元素的編號(hào)比所有維大小小一。元素的編號(hào)是每一個(gè)坐標(biāo)的乘積(例如在三維情況下,x,y和z坐標(biāo))加上它所處維中的編號(hào)。計(jì)算出的這個(gè)編號(hào)直接用于單維數(shù)組的索引。
在圖4所示的內(nèi)部節(jié)點(diǎn)的情況下,元素編號(hào)VAn根據(jù)上述公式進(jìn)行計(jì)算,VAn=x+y×4+z×4×2 (2)其中x∈{0,1,2,3},y∈{0,1},z∈{0,1,2,3,4,5,6,7}。這樣,例如對(duì)元素54來(lái)說(shuō),我們從坐標(biāo){2,1,6}中獲取該值2+1×4+6×4×2=2+4+48=54。
當(dāng)對(duì)n維檢索結(jié)構(gòu)內(nèi)部節(jié)點(diǎn)的(n維)元素?cái)?shù)組進(jìn)行線性化時(shí),根據(jù)以上描述,每一維的大小是2Ki,其中ki是在所述維上一次需要搜索的比特?cái)?shù)量。如果根據(jù)該維的坐標(biāo)由參數(shù)aj表示,(j∈{0,1,2,…n}),線性化可以以下述方法給出 可以根據(jù)公式(3)相乘進(jìn)行線性化;但是通過(guò)從搜索關(guān)鍵字比特中組成一個(gè)比特串更為有利,對(duì)應(yīng)數(shù)字指示的元素的內(nèi)容使搜索可以在目錄樹(shù)中繼續(xù)。相繼設(shè)置從每一維搜索關(guān)鍵字中抽取的比特組成比特串,并且這樣獲取的最終比特串作為二進(jìn)制數(shù)字來(lái)解釋。其結(jié)果與公式(3)相同。
圖5示出了通過(guò)相乘進(jìn)行線性化和通過(guò)比特串格式連接圖4中示出的內(nèi)部節(jié)點(diǎn)的線性化方式。如上所述,在每一維中解釋的搜索關(guān)鍵字比特的數(shù)量可以按以下方式選取k1=2,k2=1,k3=3。每一維方向上的搜索關(guān)鍵字如下a1=1001,a2=10,a3=110001。在格式化比特串過(guò)程中,第一維(在第一維方向上開(kāi)始對(duì)元素的編號(hào),從零開(kāi)始)中搜索關(guān)鍵字a1的兩位最左比特(10)首先被抽取,作為需要組成的比特串中最無(wú)關(guān)緊要的比特。這由線51標(biāo)出。其次,從第二維的搜索關(guān)鍵字中抽取最左比特(線52),該比特后綴在需要組成的比特串中最重要的比特(左邊)旁。最后,從第三維的搜索關(guān)鍵字中抽取三個(gè)最左比特(110,線53),這些比特作為最左比特插入到比特串中。結(jié)果比特串(110110)作為二進(jìn)制數(shù)字解釋,可以獲取元素54。根據(jù)公式(3)的乘法,也可以獲取相同元素,但是在那種情況下,被選的搜索關(guān)鍵字比特首先解釋成二進(jìn)制數(shù)字,公式(3)的系數(shù)由通過(guò)圖5所示方式獲取的數(shù)字形成。在元素54所含指針的基礎(chǔ)上,可以獲取下一個(gè)內(nèi)部節(jié)點(diǎn),對(duì)未用過(guò)的搜索關(guān)鍵字比特重復(fù)相同的操作。(在例示性示例中,從該內(nèi)部節(jié)點(diǎn)中選取元素9=(001001)2)。該內(nèi)部節(jié)點(diǎn)的每一個(gè)元素可以進(jìn)一步指向另一個(gè)內(nèi)部節(jié)點(diǎn)(如元素3指向內(nèi)部節(jié)點(diǎn)V11)或指向包含記錄的葉節(jié)點(diǎn)(如元素43指向記錄R)。其他情況下,元素未被使用(空)。
通過(guò)比特串格式化,乘法操作可以轉(zhuǎn)換成加法操作和比特移位(或加法操作和比特相關(guān)OR操作)。在數(shù)字2Ki上的互乘操作被替換成在成分ki上的加法操作。通過(guò)比特串格式化,剩余的坐標(biāo)ai乘2的冪可以轉(zhuǎn)換成一個(gè)比特移位操作(乘以2k對(duì)應(yīng)于向左移位k比特)。因?yàn)槌朔偸钦加弥辽?3個(gè)時(shí)鐘周期(例如,使用Intel i486處理器),而當(dāng)操作數(shù)存儲(chǔ)在處理器寄存器中時(shí),比特移位可以在三個(gè)時(shí)鐘周期中執(zhí)行完畢,當(dāng)操作數(shù)存儲(chǔ)需要在處理器高速緩存中查找時(shí),比特移位可以在四個(gè)時(shí)鐘周期中執(zhí)行完畢,甚至在操作數(shù)需要在存儲(chǔ)器中檢索時(shí),也只用十個(gè)時(shí)鐘周期。另外,另一方面,如果操作數(shù)在寄存器中,則僅占用一個(gè)時(shí)鐘周期,否則2-3或8-9時(shí)鐘周期,這取決于該操作數(shù)是否需要在處理器高速緩存中查尋。
通過(guò)上述方法形成比特串,其優(yōu)點(diǎn)在于,它是有序的(換句話說(shuō),記錄按照它們搜索關(guān)鍵字值的結(jié)構(gòu)組織)。這是因?yàn)槊看螐乃阉麝P(guān)鍵字抽取ki個(gè)最重要(最左)比特。然而,原則上,從搜索關(guān)鍵字中抽取ki個(gè)最無(wú)關(guān)緊要(最右)比特,以形成比特串也是可能的。
也可以通過(guò)不同于上述的順序處理該維來(lái)形成比特串,但是在上述方法中,從左邊增加需要形成的比特串最為簡(jiǎn)單,因?yàn)樵谶@種情況下不需知道比特串中需要為每一維的比特分配多少位。
根據(jù)公式(3)的乘法可以用于線性化(也就是說(shuō),計(jì)算元素?cái)?shù)組索引),而與每一維的大小無(wú)關(guān)。另一方面,比特串格式化僅用于內(nèi)部節(jié)點(diǎn)大小(元素?cái)?shù)量)在每一維方向上都是2的冪的情況。因?yàn)楦鶕?jù)本發(fā)明的目錄的內(nèi)部節(jié)點(diǎn)滿足這個(gè)要求,在根據(jù)本發(fā)明的檢索和存儲(chǔ)方法中應(yīng)用比特串格式化方法是優(yōu)選的,它比根據(jù)公式(3)的乘法更有效(快速)。它的快速是因?yàn)楸忍卮袷交瘜⒊朔ㄞD(zhuǎn)換成更易于執(zhí)行的加法和比特移位。
以上提出的一種目錄結(jié)構(gòu)可以有所變化,例如在該結(jié)構(gòu)中的葉節(jié)點(diǎn)包括多于一個(gè)關(guān)鍵字-指針對(duì)。其不同點(diǎn)在于葉節(jié)點(diǎn)中比較多個(gè)搜索關(guān)鍵字,而不是僅比較一個(gè)。
除了指針,葉節(jié)點(diǎn)中的記錄可以包括(除必不可少的搜索關(guān)鍵字之外)實(shí)際數(shù)據(jù)。在這種實(shí)施例中,檢索結(jié)構(gòu)可以作為一種相關(guān)聯(lián)存儲(chǔ)器。
原則上,存儲(chǔ)維護(hù)包括三種不同操作檢索,增加(存儲(chǔ))和刪除。當(dāng)向?qū)嶋H數(shù)據(jù)增加一個(gè)記錄(例如,電話交換機(jī)上的用戶數(shù)據(jù))時(shí),增加操作或者作用在一個(gè)葉節(jié)點(diǎn)上,或者作用在存儲(chǔ)器中其它地方。在后一種情況中,葉節(jié)點(diǎn)中存儲(chǔ)一個(gè)指針,該指針指向數(shù)據(jù)記錄所在的存儲(chǔ)地址。
因此搜索以下述方式進(jìn)行從對(duì)應(yīng)于每一維的搜索關(guān)鍵字中選擇預(yù)定數(shù)量(Ki)的比特,按上述方式形成搜索關(guān)鍵詞,基于該搜索關(guān)鍵詞,可以找到根層次上的內(nèi)部節(jié)點(diǎn)的元素?cái)?shù)組索引。對(duì)應(yīng)于該索引的元素將指明下一個(gè)節(jié)點(diǎn)的地址,因而可以進(jìn)行訪問(wèn)。在下一個(gè)節(jié)點(diǎn)中,從對(duì)應(yīng)于每一維的搜索關(guān)鍵字未被選中的比特中,選出預(yù)定數(shù)量的比特(ki)形成搜索關(guān)鍵詞,用以尋找內(nèi)部節(jié)點(diǎn)元素。搜索關(guān)鍵字比特的選取一直進(jìn)行到該搜索關(guān)鍵字的所有比特都被選取,或者下一個(gè)低層次節(jié)點(diǎn)的地址是一個(gè)葉節(jié)點(diǎn)的地址,然后,或者(a)從該葉節(jié)點(diǎn)中讀取指針,從該指針?biāo)甘镜膯卧x取記錄,或者(b)從該葉節(jié)點(diǎn)中讀取一個(gè)或多個(gè)包含的記錄。如果在目錄結(jié)構(gòu)中遇到一個(gè)空元素,搜索不成功終止(換句話說(shuō),在存儲(chǔ)器中沒(méi)有與關(guān)鍵字相關(guān)的數(shù)據(jù))。
因此,根據(jù)本發(fā)明,從對(duì)應(yīng)于每一維的搜索關(guān)鍵字未被選中的比特中,選出預(yù)定數(shù)量的比特(ki)。在每一維中,選出的比特?cái)?shù)量獨(dú)立于其它維中所選取的比特?cái)?shù)量,在同一維中,選擇的比特?cái)?shù)量保持不變。
當(dāng)插入數(shù)據(jù)時(shí),基于搜索關(guān)鍵字,在目錄結(jié)構(gòu)中以類似方式進(jìn)行搜索,直到遇到一個(gè)空元素或者直到低層次的新節(jié)點(diǎn)的地址是一個(gè)葉節(jié)點(diǎn)的地址。
在前一種情況下,創(chuàng)建一個(gè)葉節(jié)點(diǎn),空元素被設(shè)置成指向這個(gè)葉節(jié)點(diǎn)。然后,數(shù)據(jù)或者直接插入到葉節(jié)點(diǎn),或者放置在存儲(chǔ)器某處;在第二種情況下,在葉節(jié)點(diǎn)中存儲(chǔ)一個(gè)指針,該指針指向增加的記錄所在的存儲(chǔ)單元。
在后一種情況下,葉節(jié)點(diǎn)已經(jīng)存在,處理取決于該葉節(jié)點(diǎn)是否包含插入的空間(換句話說(shuō),處理取決于葉節(jié)點(diǎn)的大小)。如果,例如僅有一個(gè)記錄適合插入到葉節(jié)點(diǎn)(或者葉節(jié)點(diǎn)滿),目錄結(jié)構(gòu)的深度將增加。在這種情況下,發(fā)生沖突的元素被設(shè)置指向一個(gè)新節(jié)點(diǎn),其中元素?cái)?shù)組索引根據(jù)關(guān)鍵字計(jì)算。如果索引仍然相等,重復(fù)進(jìn)行增加新節(jié)點(diǎn)操作。這樣,重復(fù)增加新節(jié)點(diǎn)直至索引不相等。通過(guò)識(shí)別搜索關(guān)鍵字,在最壞情況下,搜索關(guān)鍵字的所有比特都已經(jīng)用到,也就是說(shuō),該結(jié)構(gòu)的深度已達(dá)到最大值,完成增加新節(jié)點(diǎn)。如果一個(gè)指針存儲(chǔ)在溢出元素中,它將再次指向存儲(chǔ)實(shí)際數(shù)據(jù)記錄的存儲(chǔ)地址。僅在目錄結(jié)構(gòu)的葉節(jié)點(diǎn)中可能出現(xiàn)溢出。
刪除數(shù)據(jù)通過(guò)一種所眾所周知的基于搜索關(guān)鍵字的查找方式進(jìn)行,如上所述,包含某個(gè)指針和記錄的節(jié)點(diǎn)將被刪除。如果可能,該節(jié)點(diǎn)將被釋放以保證所占用的存儲(chǔ)空間始終保持最小。例如,在節(jié)點(diǎn)含有一個(gè)指向葉節(jié)點(diǎn)的指針,和節(jié)點(diǎn)不含指向節(jié)點(diǎn)的指針時(shí),釋放是可能的。
在每一種特定情況下選擇的沖突防止策略通常不僅對(duì)插入操作有影響,而且對(duì)檢索和刪除操作如何進(jìn)行有影響。這樣,甚至在它們都采納本發(fā)明的地址計(jì)算方法時(shí),實(shí)現(xiàn)這些操作的細(xì)節(jié)仍可能不同。因?yàn)?,這樣的變化已與實(shí)際的發(fā)明思路無(wú)關(guān),并且這種變化所采用的形式是本領(lǐng)域技術(shù)人員所熟知的,本文中不再對(duì)它進(jìn)一步解釋。
圖6在框圖層次上示出了根據(jù)本發(fā)明的一種存儲(chǔ)器。每一維有一個(gè)專用的寄存器,因此有n個(gè)輸入寄存器。每一維的搜索關(guān)鍵字存儲(chǔ)在這些輸入寄存器中,每一個(gè)關(guān)鍵字都存儲(chǔ)在它自己的寄存器中。輸入寄存器連接寄存器TR,在TR中形成上述的關(guān)鍵詞。寄存器TR通過(guò)加法器61連接到存儲(chǔ)器MEM的地址輸入。存儲(chǔ)器輸出則連接地址寄存器AR,地址寄存器AR的輸出相應(yīng)連接到加法器61。最初,從每一個(gè)寄存器中選取的比特以正確的順序讀入到通用寄存器TR。第一個(gè)內(nèi)部節(jié)點(diǎn)的初始地址存儲(chǔ)在地址寄存器AR內(nèi),從寄存器TR獲取的偏移地址加入到加法器61中的初始地址中。結(jié)果地址提供給存儲(chǔ)器MEM的地址輸入,存儲(chǔ)器的數(shù)據(jù)輸出提供了下一個(gè)內(nèi)部節(jié)點(diǎn)的初始地址,該地址寫(xiě)入到地址寄存器AR,覆蓋前一個(gè)存儲(chǔ)的地址。然后,下一次選出的比特又以正確的順序從輸入寄存器裝入通用寄存器TR,獲取的數(shù)組地址加入到從地址寄存器AR中獲取的相關(guān)數(shù)組(也就是說(shuō),內(nèi)部節(jié)點(diǎn))的初始地址中。該地址提供給存儲(chǔ)器MEM的地址輸入,存儲(chǔ)器的數(shù)據(jù)輸出隨后提供下一個(gè)內(nèi)部節(jié)點(diǎn)的初始地址。重復(fù)上述過(guò)程直到獲取所需的節(jié)點(diǎn)和記錄,或者讀到了所需的寄存器。
因?yàn)楸景l(fā)明的處理是通過(guò)上述比特操作,通過(guò)一次從每一維的搜索關(guān)鍵字中選擇給定數(shù)量比特,所以本發(fā)明的快速性能受硬件配置選擇的影響??梢酝ㄟ^(guò)將單處理器環(huán)境轉(zhuǎn)換到多處理器環(huán)境以加速地址計(jì)算,多處理器環(huán)境可以同時(shí)進(jìn)行多個(gè)并行處理。
以上存儲(chǔ)器的結(jié)構(gòu)的描述,是假定在典型實(shí)現(xiàn)的情況下給出的。然而,實(shí)際上首先從所有節(jié)點(diǎn)中創(chuàng)建一個(gè)葉節(jié)點(diǎn),僅在第一個(gè)葉節(jié)點(diǎn)溢出之后,創(chuàng)建第一個(gè)內(nèi)部節(jié)點(diǎn),上述的目錄結(jié)構(gòu)才開(kāi)始成型。這樣,原則上,甚至可能在一個(gè)非常大的葉節(jié)點(diǎn)(永不會(huì)溢出)中實(shí)現(xiàn)上述類型的地址計(jì)算,該葉節(jié)點(diǎn)包括一個(gè)多維數(shù)組,該數(shù)組中每一個(gè)元素包含—如果該元素被使用—一個(gè)數(shù)據(jù)單元或一個(gè)指向數(shù)據(jù)單元的指針。因此,在這種情況下,每一維的搜索關(guān)鍵字中只有第一組ki比特被選出。如果通過(guò)這些比特查找的元素是空的,那么在該元素中或者存儲(chǔ)一個(gè)實(shí)際數(shù)據(jù)記錄,或者存儲(chǔ)一個(gè)指向存儲(chǔ)數(shù)據(jù)記錄的存儲(chǔ)地址的指針。如果沖突情況在存儲(chǔ)時(shí)發(fā)生了,可以通過(guò)眾所周知的方法加以解決。如果對(duì)存儲(chǔ)的數(shù)據(jù)進(jìn)行適當(dāng)?shù)姆植?,這樣一種單葉節(jié)點(diǎn)實(shí)際上是可行的。然而,相對(duì)于所公開(kāi)的多維目錄結(jié)構(gòu)的基本實(shí)施例而言,其存儲(chǔ)空間利用效率較差。
上述額外的單葉節(jié)點(diǎn)實(shí)施例,在某種意義上,是一種可能的特定實(shí)施例,它也具有多維目錄結(jié)構(gòu),并且如前所述(只用仍存在未搜索的比特),地址運(yùn)算也在葉節(jié)點(diǎn)繼續(xù)。在這種情況下,一個(gè)葉節(jié)點(diǎn)的結(jié)構(gòu)類似于一個(gè)內(nèi)部節(jié)點(diǎn)。盡管以上參照實(shí)施例,根據(jù)相關(guān)圖片對(duì)本發(fā)明進(jìn)行解釋,但顯然不是非常嚴(yán)格的,在上面所公開(kāi)的和后附權(quán)利要求書(shū)的發(fā)明思路范圍內(nèi)可以有所改動(dòng)。
權(quán)利要求
1.一種在存儲(chǔ)器中存儲(chǔ)由搜索關(guān)鍵字標(biāo)識(shí)的數(shù)據(jù)的方法,數(shù)據(jù)作為數(shù)據(jù)單元存儲(chǔ)在為每一個(gè)數(shù)據(jù)單元分配的專用存儲(chǔ)空間內(nèi),其中基于需要存儲(chǔ)的數(shù)據(jù)單元的相關(guān)的搜索關(guān)鍵字,在一個(gè)目錄結(jié)構(gòu)中進(jìn)行存儲(chǔ),該目錄結(jié)構(gòu)包括一個(gè)具有不同層次節(jié)點(diǎn)的樹(shù)形層次結(jié)構(gòu),其中單個(gè)節(jié)點(diǎn)可以是-一個(gè)內(nèi)部節(jié)點(diǎn),包括一個(gè)多維數(shù)組,其中單個(gè)元素可以包含樹(shù)形層次結(jié)構(gòu)的低層次節(jié)點(diǎn)的地址,和其中單個(gè)元素可以是空的,或-一個(gè)葉節(jié)點(diǎn),包括至少一個(gè)指向存儲(chǔ)數(shù)據(jù)單元的指針,其特征在于以下步驟(a)從對(duì)應(yīng)于每一維的搜索關(guān)鍵字中選擇預(yù)定特定維數(shù)(ki)的比特并形成搜索字,基于該搜索字,從樹(shù)形層次結(jié)構(gòu)的根層次上的內(nèi)部節(jié)點(diǎn)搜索下一個(gè)節(jié)點(diǎn)的地址,并進(jìn)行到所述的節(jié)點(diǎn),(b)從對(duì)應(yīng)于每一維的搜索關(guān)鍵字未被選中的比特中,選出預(yù)定特定維數(shù)(ki)比特并形成搜索字,基于該搜索字,從該已訪問(wèn)節(jié)點(diǎn)的數(shù)組搜索低層次上進(jìn)一步的新節(jié)點(diǎn)的地址,(c)重復(fù)步驟(b)直到遇到一個(gè)空元素或直到低層次新節(jié)點(diǎn)的地址是一個(gè)葉節(jié)點(diǎn)的地址,(d)在葉節(jié)點(diǎn)中存儲(chǔ)一個(gè)指針,該指針指向所述數(shù)據(jù)單元的存儲(chǔ)單元。
2.權(quán)利要求1中的方法,其特征在于如果需要,執(zhí)行存儲(chǔ)的新的葉節(jié)點(diǎn)在步驟(c)后以一種眾所周知的方式創(chuàng)建。
3.權(quán)利要求1中的方法,其特征在于所述特定維數(shù)(ki)以下述方式選出該結(jié)構(gòu)在所有維的方向上具有相同深度,因而在所有方向上部分關(guān)鍵字檢索具有同樣效果。
4.權(quán)利要求1中的方法,其特征在于所述特定維數(shù)(ki)以下述方式選出該結(jié)構(gòu)在給定維的方向上具有較大的深度,因而在該方向上部分關(guān)鍵字檢索具有同樣效果。
5.權(quán)利要求1中的方法,其特征在于搜索字由從每一維的搜索關(guān)鍵字中相繼選出的比特組成,將獲取的比特串解釋成指示內(nèi)部節(jié)點(diǎn)數(shù)組的數(shù)字,從該內(nèi)部節(jié)點(diǎn)的元素繼續(xù)搜索低層次節(jié)點(diǎn)的地址。
6.一種在存儲(chǔ)器中存儲(chǔ)由搜索關(guān)鍵字標(biāo)識(shí)的數(shù)據(jù)的方法,數(shù)據(jù)作為數(shù)據(jù)單元存儲(chǔ)在為每一個(gè)數(shù)據(jù)單元分配的專用存儲(chǔ)空間內(nèi),其中基于需要存儲(chǔ)的數(shù)據(jù)單元的相關(guān)的搜索關(guān)鍵字,在一個(gè)目錄結(jié)構(gòu)中進(jìn)行存儲(chǔ),該目錄結(jié)構(gòu)包括一個(gè)具有不同層次節(jié)點(diǎn)的樹(shù)形層次結(jié)構(gòu),其中單個(gè)節(jié)點(diǎn)可以是-一個(gè)內(nèi)部節(jié)點(diǎn),包括一個(gè)多維數(shù)組,其中單個(gè)元素可以包含樹(shù)形層次結(jié)構(gòu)的低層次節(jié)點(diǎn)的地址,和其中單個(gè)元素可以是空的,或-一個(gè)葉節(jié)點(diǎn),其中至少存儲(chǔ)一個(gè)數(shù)據(jù)單元,其特征在于以下步驟(a)從對(duì)應(yīng)于每一維的搜索關(guān)鍵字中選擇預(yù)定特定維數(shù)(ki)的比特并形成搜索字,基于該搜索字,從樹(shù)形分級(jí)結(jié)構(gòu)的根層次上的內(nèi)部節(jié)點(diǎn)搜索下一個(gè)節(jié)點(diǎn)的地址,并進(jìn)行到所述的節(jié)點(diǎn),(b)從對(duì)應(yīng)于每一維的搜索關(guān)鍵字未被選中的比特中,選出預(yù)定特定維數(shù)的(ki)比特并形成搜索字,基于該搜索字,從該已訪問(wèn)節(jié)點(diǎn)的數(shù)組開(kāi)始搜索低層次上進(jìn)一步的新節(jié)點(diǎn)的地址,(c)重復(fù)步驟(b)直到遇到一個(gè)空元素或直到低層次新節(jié)點(diǎn)的地址是一個(gè)葉節(jié)點(diǎn)的地址,(d)在葉節(jié)點(diǎn)中存儲(chǔ)所述數(shù)據(jù)單元。
7.權(quán)利要求6中的方法,其特征在于如果需要,執(zhí)行存儲(chǔ)的新的葉節(jié)點(diǎn)在步驟(c)后以一種眾所周知的方式創(chuàng)建。
8.權(quán)利要求6中的方法,其特征在于所述特定維數(shù)(Ki)以下述方式選出該結(jié)構(gòu)在所有維的方向上具有相同深度,因而在所有方向上部分關(guān)鍵字檢索具有同樣效果。
9.權(quán)利要求6中的方法,其特征在于所述特定維數(shù)(ki)以下述方式選出該結(jié)構(gòu)在給定維的方向上具有較大的深度,因而在該方向上部分關(guān)鍵字檢索具有同樣效果。
10.權(quán)利要求6中的方法,其特征在于搜索字由從每一維的搜索關(guān)鍵字中相繼選出的比特組成,將獲取的比特串解釋成指示內(nèi)部節(jié)點(diǎn)數(shù)組的數(shù)字,從該內(nèi)部節(jié)點(diǎn)的元素繼續(xù)搜索低層次節(jié)點(diǎn)的地址。
11.一種在存儲(chǔ)器中檢索由搜索關(guān)鍵字標(biāo)識(shí)的數(shù)據(jù)的方法,數(shù)據(jù)作為數(shù)據(jù)單元存儲(chǔ)在為每一個(gè)數(shù)據(jù)單元分配的專用存儲(chǔ)空間內(nèi),其中基于搜索關(guān)鍵字,在一個(gè)目錄結(jié)構(gòu)中進(jìn)行檢索,該目錄結(jié)構(gòu)包括一個(gè)具有不同層次節(jié)點(diǎn)的樹(shù)形層次結(jié)構(gòu),其中單個(gè)節(jié)點(diǎn)可以是-一個(gè)內(nèi)部節(jié)點(diǎn),包括一個(gè)多維數(shù)組,其中單個(gè)元素可以包含樹(shù)形層次結(jié)構(gòu)的低層次節(jié)點(diǎn)的地址,和其中單個(gè)元素可以是空的,或-一個(gè)葉節(jié)點(diǎn),包括至少一個(gè)指向存儲(chǔ)數(shù)據(jù)單元的指針,其特征在于以下步驟(a)從對(duì)應(yīng)于每一維的搜索關(guān)鍵字中選擇預(yù)定特定數(shù)(ki)的比特并形成搜索字,基于該搜索字,從樹(shù)形層次結(jié)構(gòu)的根層次上的內(nèi)部節(jié)點(diǎn)搜索下一個(gè)節(jié)點(diǎn)的地址,并進(jìn)行到所述的節(jié)點(diǎn),(b)從對(duì)應(yīng)于每一維的搜索關(guān)鍵字未被選中的比特中,選出預(yù)定特定維數(shù)(Ki)比特并形成搜索字,基于該搜索字,從該已訪問(wèn)節(jié)點(diǎn)的數(shù)組開(kāi)始搜索低層次上進(jìn)一步的新節(jié)點(diǎn)的地址,(c)重復(fù)步驟(b)直到遇到一個(gè)空元素或直至低層次新節(jié)點(diǎn)的地址是一個(gè)葉節(jié)點(diǎn)的地址,或直至已經(jīng)選出搜索關(guān)鍵字的所有比特;以及如果在步驟(c)中沒(méi)有碰到一個(gè)空元素,(d)從葉節(jié)點(diǎn)讀出包含的指針,從該指針?biāo)赶虻膯卧凶x取數(shù)據(jù)單元。
12.權(quán)利要求11中的方法,其特征在于所述特定維數(shù)(ki)以下述方式選出該結(jié)構(gòu)在所有維的方向上具有相同深度,因而在所有方向上部分關(guān)鍵字檢索具有同樣效果。
13.權(quán)利要求11中的方法,其特征在于所述特定維數(shù)(Ki)以下述方式選出該結(jié)構(gòu)在給定維的方向上具有較大的深度,因而在該方向上部分關(guān)鍵字檢索具有同樣效果。
14.權(quán)利要求11中的方法,其特征在于搜索字由從每一維的搜索關(guān)鍵字中相繼選出的比特組成,將獲取的比特串解釋成指示內(nèi)部節(jié)點(diǎn)數(shù)組的數(shù)字,從該內(nèi)部節(jié)點(diǎn)的元素繼續(xù)搜索低層次節(jié)點(diǎn)的地址。
15.一種在存儲(chǔ)器中檢索由搜索關(guān)鍵字標(biāo)識(shí)的數(shù)據(jù)的方法,數(shù)據(jù)作為數(shù)據(jù)單元存儲(chǔ)在為每一個(gè)數(shù)據(jù)單元分配的專用存儲(chǔ)空間內(nèi),其中基于搜索關(guān)鍵字,在一個(gè)目錄結(jié)構(gòu)中進(jìn)行檢索,該目錄結(jié)構(gòu)包括一個(gè)具有不同層次節(jié)點(diǎn)的樹(shù)形層次結(jié)構(gòu),其中單個(gè)節(jié)點(diǎn)可以是-一個(gè)內(nèi)部節(jié)點(diǎn),包括一個(gè)多維數(shù)組,其中單個(gè)元素可以包含樹(shù)形層次結(jié)構(gòu)的低層次節(jié)點(diǎn)的地址,和其中單個(gè)元素可以是空的,或-一個(gè)葉節(jié)點(diǎn),其中至少存儲(chǔ)一個(gè)數(shù)據(jù)單元,其特征在于以下步驟(a)從對(duì)應(yīng)于每一維的搜索關(guān)鍵字中選擇預(yù)定特定維數(shù)(ki)的比特并形成搜索字,基于該搜索字,從樹(shù)形層次結(jié)構(gòu)的根層次上的內(nèi)部節(jié)點(diǎn)搜索下一個(gè)節(jié)點(diǎn)的地址,并進(jìn)行到所述的節(jié)點(diǎn),(b)從對(duì)應(yīng)于每一維的搜索關(guān)鍵字未被選中的比特中,選出預(yù)定特定維數(shù)(ki)比特并形成搜索字,基于該搜索字,從該已訪問(wèn)節(jié)點(diǎn)的數(shù)組開(kāi)始搜索低層次上進(jìn)一步的新節(jié)點(diǎn)的地址,(c)重復(fù)步驟(b)直到遇到一個(gè)空元素或直至低層次新節(jié)點(diǎn)的地址是一個(gè)葉節(jié)點(diǎn)的地址,或直至還經(jīng)選出搜索關(guān)鍵字的所有比特;以及如果在步驟(c)中沒(méi)有碰到一個(gè)空元素,(d)從葉節(jié)點(diǎn)讀出一個(gè)或多個(gè)數(shù)據(jù)單元。
16.權(quán)利要求15中的方法,其特征在于所述特定維數(shù)(ki)以下述方式選出該結(jié)構(gòu)在所有方向上具有相同深度,因而在所有方向上部分關(guān)鍵字檢索具有同樣效果。
17.權(quán)利要求15中的方法,其特征在于所述特定維數(shù)(Ki)以下述方式選出該結(jié)構(gòu)在給定維方向上具有較大的深度,因而在該方向上部分關(guān)鍵字檢索具有同樣效果。
18.一種在存儲(chǔ)器中存儲(chǔ)由搜索關(guān)鍵字標(biāo)識(shí)的數(shù)據(jù)的方法,數(shù)據(jù)作為數(shù)據(jù)單元存儲(chǔ)在為每一個(gè)數(shù)據(jù)單元分配的專用存儲(chǔ)空間內(nèi),其中基于需要存儲(chǔ)的數(shù)據(jù)單元的相關(guān)的搜索關(guān)鍵字,在一個(gè)目錄結(jié)構(gòu)中進(jìn)行存儲(chǔ),該目錄結(jié)構(gòu)具有一個(gè)包括多維數(shù)組的節(jié)點(diǎn),該多維數(shù)組的單個(gè)元素可以包含指向數(shù)據(jù)單元的指針,或該多維數(shù)組的單個(gè)元素也可以是空的,其特征在于從對(duì)應(yīng)于每一維的搜索關(guān)鍵字中選擇預(yù)定特定維數(shù)(ki)的比特并形成搜索字,基于該搜索字,在該節(jié)點(diǎn)的數(shù)組中搜索一個(gè)元素,如果所述元素是空的,在該元素中存儲(chǔ)一個(gè)指針,該指針指向所述元素的存儲(chǔ)地址。
19.權(quán)利要求18中的方法,其特征在于搜索字由從每一維的搜索關(guān)鍵字中相繼選出的比特組成,將獲取的比特串解釋成指示所述元素的數(shù)字。
20.一種在存儲(chǔ)器中存儲(chǔ)由搜索關(guān)鍵字標(biāo)識(shí)的數(shù)據(jù)的方法,數(shù)據(jù)作為數(shù)據(jù)單元存儲(chǔ)在為每一個(gè)數(shù)據(jù)單元分配的專用存儲(chǔ)空間內(nèi),其中基于需要存儲(chǔ)的數(shù)據(jù)單元的相關(guān)的搜索關(guān)鍵字,在一個(gè)目錄結(jié)構(gòu)中進(jìn)行存儲(chǔ),該目錄結(jié)構(gòu)具有一個(gè)包括多維數(shù)組的節(jié)點(diǎn),該多維數(shù)組的單個(gè)元素可以包含一個(gè)數(shù)據(jù)單元,或該多維數(shù)組的單個(gè)元素也可以是空的,其特征在于從對(duì)應(yīng)于每一維的搜索關(guān)鍵字中選擇預(yù)定特定維數(shù)(ki)的比特并形成搜索字,基于該搜索字,在該節(jié)點(diǎn)的數(shù)組中搜索一個(gè)元素,如果所述元素是空的,在所述元素中存儲(chǔ)該數(shù)據(jù)單元。
21.權(quán)利要求20中的方法,其特征在于搜索字由從每一維的搜索關(guān)鍵字中相繼選出的比特組成,將獲取的比特串解釋成指示所述元素的數(shù)字。
22.一種在存儲(chǔ)器中檢索由搜索關(guān)鍵字標(biāo)識(shí)的數(shù)據(jù)的方法,數(shù)據(jù)作為數(shù)據(jù)單元存儲(chǔ)在為每一個(gè)數(shù)據(jù)單元分配的專用存儲(chǔ)空間內(nèi),其中基于需要存儲(chǔ)的數(shù)據(jù)單元的相關(guān)的搜索關(guān)鍵字,在一個(gè)目錄結(jié)構(gòu)中進(jìn)行檢索,該目錄結(jié)構(gòu)具有一個(gè)包括多維數(shù)組的節(jié)點(diǎn),該多維數(shù)組的單個(gè)元素可以包含指向所述數(shù)據(jù)單元的指針,或該多維數(shù)組的單個(gè)元素也可以是空的,其特征在于從對(duì)應(yīng)于每一維的搜索關(guān)鍵字中選擇預(yù)定特定維數(shù)(ki)的比特并形成搜索字,基于該搜索字,在該節(jié)點(diǎn)的數(shù)組中搜索一個(gè)元素,如果所述元素是空的,在所述元素中存儲(chǔ)一個(gè)指針,該指針指向數(shù)據(jù)單元的存儲(chǔ)地址。
23.權(quán)利要求22中的方法,其特征在于搜索字由從每一維的搜索關(guān)鍵字中相繼選出的比特組成,將獲取的比特串解釋成指示所述元素的數(shù)字。
24.一種在存儲(chǔ)器中檢索由搜索關(guān)鍵字標(biāo)識(shí)的數(shù)據(jù)的方法,數(shù)據(jù)作為數(shù)據(jù)單元存儲(chǔ)在為每一個(gè)數(shù)據(jù)單元分配的專用存儲(chǔ)空間內(nèi),其中基于需要存儲(chǔ)的數(shù)據(jù)單元的相關(guān)的搜索關(guān)鍵字,在一個(gè)目錄結(jié)構(gòu)中進(jìn)行存儲(chǔ),該目錄結(jié)構(gòu)具有一個(gè)包括多維數(shù)組的節(jié)點(diǎn),其中單個(gè)元素可以包含一個(gè)數(shù)據(jù)單元,或單個(gè)元素也可以是空的,其特征在于從對(duì)應(yīng)于每一維的搜索關(guān)鍵字中選擇預(yù)定特定維數(shù)(ki)的比特并形成搜索字,基于該搜索字,在該節(jié)點(diǎn)的數(shù)組中搜索一個(gè)元素,如果所述元素是空的,在所述元素中存儲(chǔ)該數(shù)據(jù)單元。
25.一種以電氣形式存儲(chǔ)數(shù)據(jù)的相關(guān)聯(lián)存儲(chǔ)器配置,數(shù)據(jù)作為數(shù)據(jù)單元存儲(chǔ)在存儲(chǔ)器中為每一個(gè)數(shù)據(jù)單元分配的專用存儲(chǔ)空間內(nèi),存儲(chǔ)器配置包括一個(gè)目錄結(jié)構(gòu),該目錄結(jié)構(gòu)是一個(gè)多維數(shù)字檢索結(jié)構(gòu),包括一個(gè)具有不同層次節(jié)點(diǎn)的樹(shù)形層次結(jié)構(gòu),其中一個(gè)節(jié)點(diǎn)可以是-一個(gè)內(nèi)部節(jié)點(diǎn),包括一個(gè)多維數(shù)組,其中單個(gè)非空元素包含一個(gè)指針(31)引導(dǎo)在目錄結(jié)構(gòu)中的處理,或-一個(gè)葉節(jié)點(diǎn),包括一個(gè)或多個(gè)指向存儲(chǔ)器中存儲(chǔ)數(shù)據(jù)單元的指針,每一個(gè)需要在存儲(chǔ)器中存儲(chǔ)的數(shù)據(jù)單元與一個(gè)多維搜索關(guān)鍵字相關(guān)聯(lián),該搜索關(guān)鍵字包括每一維上的一個(gè)搜索關(guān)鍵字,在此基礎(chǔ)上,在目錄結(jié)構(gòu)上進(jìn)行關(guān)鍵字處理,在每一種情況下,目錄結(jié)構(gòu)返回與所用的多維搜索關(guān)鍵字相關(guān)聯(lián)的數(shù)據(jù)單元,其特征在于,通過(guò)在獨(dú)立于其它維的每一維中,預(yù)定需要搜索的搜索關(guān)鍵字比特的數(shù)量ki,固定該目錄結(jié)構(gòu)中單個(gè)多維內(nèi)部節(jié)點(diǎn)的數(shù)量,每一維上內(nèi)部節(jié)點(diǎn)的數(shù)量是2ki。
26.一種以電氣形式存儲(chǔ)數(shù)據(jù)的相關(guān)聯(lián)存儲(chǔ)器配置,在存儲(chǔ)器中,數(shù)據(jù)作為數(shù)據(jù)單元存儲(chǔ)為每一個(gè)數(shù)據(jù)單元分配的專用存儲(chǔ)空間內(nèi),存儲(chǔ)器配置包括一個(gè)目錄結(jié)構(gòu),該目錄結(jié)構(gòu)是一個(gè)多維數(shù)字檢索結(jié)構(gòu),包括一個(gè)具有不同層次節(jié)點(diǎn)的樹(shù)形層次結(jié)構(gòu),其中一個(gè)節(jié)點(diǎn)可以是-一個(gè)內(nèi)部節(jié)點(diǎn),包括一個(gè)多維數(shù)組,其中單個(gè)非空元素包含一個(gè)指針(31),引導(dǎo)在目錄結(jié)構(gòu)中的處理,或-一個(gè)葉節(jié)點(diǎn),至少包含一個(gè)數(shù)據(jù)單元,每一個(gè)需要在存儲(chǔ)器中存儲(chǔ)的數(shù)據(jù)單元與一個(gè)多維搜索關(guān)鍵字相關(guān)聯(lián),該搜索關(guān)鍵字包括每一維上的一個(gè)搜索關(guān)鍵字,在此基礎(chǔ)上在目錄結(jié)構(gòu)上進(jìn)行關(guān)鍵字處理,在每一種情況下,目錄結(jié)構(gòu)返回與所用的多維搜索關(guān)鍵字相關(guān)聯(lián)的數(shù)據(jù)單元,其特征在于,通過(guò)在獨(dú)立于其它維的每一維中,預(yù)定需要搜索的搜索關(guān)鍵字比特的數(shù)量ki,固定該目錄結(jié)構(gòu)中單個(gè)多維內(nèi)部節(jié)點(diǎn)的數(shù)量,每一維上內(nèi)部節(jié)點(diǎn)的數(shù)量是2Ki。
全文摘要
本發(fā)明涉及一種存儲(chǔ)和檢索方法以及一種存儲(chǔ)器配置。通過(guò)在具有不同層次節(jié)點(diǎn)的目錄結(jié)構(gòu)上進(jìn)行關(guān)鍵字搜索來(lái)執(zhí)行存儲(chǔ)。單個(gè)節(jié)點(diǎn)可以是(i)一個(gè)包括多維數(shù)組的內(nèi)部節(jié)點(diǎn),或者(ii)一個(gè)包含數(shù)據(jù)單元或數(shù)據(jù)存儲(chǔ)單元的指針的葉節(jié)點(diǎn)。為了最小化所需的存儲(chǔ)空間,存儲(chǔ)通過(guò)下述方式實(shí)現(xiàn)(a)選擇預(yù)定數(shù)量(k
文檔編號(hào)H04Q3/545GK1152365SQ95194055
公開(kāi)日1997年6月18日 申請(qǐng)日期1995年6月5日 優(yōu)先權(quán)日1994年6月6日
發(fā)明者馬蒂·迪卡南 申請(qǐng)人:諾基亞電信公司