索引機(jī)制合并方法、搜索方法、裝置及設(shè)備的制作方法
【專利摘要】本發(fā)明公開了一種索引機(jī)制合并方法、搜索方法、裝置及設(shè)備,屬于計(jì)算機(jī)【技術(shù)領(lǐng)域】。所述方法包括:在Li達(dá)到容量上限后,檢測Li+1是否正在合并;若檢測結(jié)果為所述Li+1正在合并,則檢測Li+1’是否已經(jīng)達(dá)到容量上限;若檢測結(jié)果為所述Li+1’未達(dá)到容量上限,則將Li與Li+1’合并。本發(fā)明通過在Li達(dá)到容量上限后,若Li+1正在合并,則將Li與Li+1’進(jìn)行合并;解決了現(xiàn)有技術(shù)中索引機(jī)制FD樹在合并過程中占用較長時(shí)間的問題;由于在Li+1正在合并的過程中,可以同時(shí)進(jìn)行Li與Li+1’的合并過程,因此實(shí)現(xiàn)了多線程合并,達(dá)到了可以很大程度上提高了合并速率的效果。
【專利說明】索引機(jī)制合并方法、搜索方法、裝置及設(shè)備
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計(jì)算機(jī)【技術(shù)領(lǐng)域】,特別涉及一種索引機(jī)制合并方法、搜索方法、裝置及 設(shè)備。
【背景技術(shù)】
[0002] 隨著半導(dǎo)體技術(shù)的高速發(fā)展,閃存的容量和性價(jià)比不斷提高,已成為移動智能設(shè) 備的標(biāo)準(zhǔn)主要存儲設(shè)備。閃存是典型的異構(gòu)存儲設(shè)備,其讀時(shí)延比寫時(shí)延小一個(gè)數(shù)量級,且 隨機(jī)寫吞吐量遠(yuǎn)小于順序?qū)懲掏铝俊?br>
[0003] 為了充分利用閃存的高順序?qū)懲掏铝?,現(xiàn)有技術(shù)提供了一些面向閃存的新型索引 機(jī)制FD樹。如圖1所示,其示出了現(xiàn)有技術(shù)中提供的FD樹的結(jié)構(gòu)示意圖。由圖1可知,F(xiàn)D 樹為分層結(jié)構(gòu),第0層U位于內(nèi)存,以B+樹的形式組織索引記錄;其他層次位于閃存,以有 序數(shù)組的形式組織記錄,其中,有序數(shù)組以頁面為單位進(jìn)行連續(xù)存儲。FD樹中引入了頁面記 錄(fence),其中頁面記錄由該頁面第一條記錄的鍵值和該頁面的頁面地址組成,頁面記錄 可與正常數(shù)據(jù)記錄一起按鍵值排序并保存,每個(gè)層次均會保存下一層次所有頁面的頁面記 錄。
[0004] 在搜索FD樹時(shí),如U沒有滿足條件的記錄,可按頁面記錄直接跳到第一層1^的待 搜索頁面,依此類推,直到找到符合條件的記錄或搜索完所有的層次。
[0005] 在向FD樹插入記錄時(shí),都是將記錄先插入到L。,然后通過合并過程轉(zhuǎn)移到下面的 層次。由于FD樹每層有容量限制,且與所處層次成正比,當(dāng)Q達(dá)到容量上限時(shí),便啟動Q 與L i+1的合并過程,將Q中的索引記錄轉(zhuǎn)移到Li+1。合并是個(gè)后臺過程,在合并未結(jié)束前, 使用當(dāng)前的Q和L i+1進(jìn)行搜索。當(dāng)Q與Li+1合并結(jié)束后,因?yàn)镼的內(nèi)容已改變,所以新的 Q將與L合并,以使k重新獲得指向Q的頁面記錄,這個(gè)過程會一直倒推到U才結(jié)束。 也就是說,一次U到達(dá)容量上限觸發(fā)的合并,可能連續(xù)觸發(fā)后續(xù)合并請求,直到Q層為止; Q層的合并結(jié)束后,會向上連續(xù)觸發(fā)合并請求,一直到U為止。整個(gè)合并過程結(jié)束后,U到 Q都是全新的結(jié)構(gòu)。此時(shí),會用新的U?Q層整體替換舊的U?Q層。
[0006] 在實(shí)現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題:FD樹在合并過 程中只能單線程進(jìn)行,當(dāng)FD樹的索引記錄很多時(shí),對FD樹的進(jìn)行合并的過程會占用很長的 時(shí)間。
【發(fā)明內(nèi)容】
[0007] 為了解決現(xiàn)有技術(shù)中索引機(jī)制FD樹在合并過程中占用較長時(shí)間的問題,本發(fā)明 實(shí)施例提供了一種索引機(jī)制合并方法、搜索方法、裝置及設(shè)備。所述技術(shù)方案如下:
[0008] 第一方面,提供了一種存儲裝置,所述存儲裝置包括至少三層存儲單元,第0層存 儲單元位于內(nèi)存中,第i層存儲單元位于閃存中,每層存儲單元包括主數(shù)據(jù)區(qū),其中 :
[0009] 所述第0層存儲單元中的主數(shù)據(jù)區(qū)為有序搜索樹,當(dāng)所述第0層存儲單元中存在 從數(shù)據(jù)區(qū)時(shí),所述從數(shù)據(jù)區(qū)為有序搜索樹所述有序搜索樹包括數(shù)據(jù)記錄和頁面記錄;
[0010] 所述第i層存儲單元中的主數(shù)據(jù)區(qū)可為有序搜索樹或有序數(shù)組,當(dāng)所述第i層存 儲單元中存在從數(shù)據(jù)區(qū)時(shí),所述從數(shù)據(jù)區(qū)為有序數(shù)組,所述有序搜索樹包括頁面記錄,所述 有序數(shù)據(jù)包括數(shù)據(jù)記錄和頁面記錄;
[0011] 所述數(shù)據(jù)記錄包括鍵值和記錄值,所述頁面記錄包括鍵值和頁面地址;
[0012] 當(dāng)所述第i層存儲單元中存在從數(shù)據(jù)區(qū)L/時(shí),所述L/為所述第i層存儲單元的 第一搜索數(shù)據(jù)區(qū),所述第i層存儲單元中的主數(shù)據(jù)區(qū)Q為所述第i層存儲單元的第二搜索 數(shù)據(jù)區(qū);當(dāng)所述第i層存儲單元中不存在所述L/時(shí),所述Q為所述第i層存儲單元的所述 第一搜索數(shù)據(jù)區(qū);
[0013] 所述Q按序保存指向第i+1層存儲單元中的第一搜索數(shù)據(jù)區(qū)的所有頁面對應(yīng)的 頁面記錄;當(dāng)所述第i+1層存儲單元中的第一搜索數(shù)據(jù)區(qū)為有序搜索樹時(shí),則所述Q的頁 面記錄是無效記錄;
[0014] 所述L/按序保存指向所述Q的所有頁面對應(yīng)的頁面記錄;當(dāng)所述Q為有序搜索 樹時(shí),則所述L/的頁面記錄為無效記錄,
[0015] 其中,所述i為大于0的自然數(shù)。
[0016] 第二方面,提供了一種索引機(jī)制合并方法,用于包括有權(quán)利要求1所述的存儲裝 置的設(shè)備中,所述方法,包括:
[0017] 在所述第i層存儲單元的主數(shù)據(jù)區(qū)Li達(dá)到容量上限后,檢測第i+1層存儲單元的 主數(shù)據(jù)區(qū)L i+1是否正在合并;
[0018] 若檢測結(jié)果為所述Li+1正在合并,則檢測所述第i+1層存儲單元的從數(shù)據(jù)區(qū)L i+1' 是否已經(jīng)達(dá)到容量上限;
[0019] 若檢測結(jié)果為所述Li+1'未達(dá)到容量上限,則將所述Li中的數(shù)據(jù)記錄添加至所述 L i+1'中,將所述Li+1'中的所有頁面所對應(yīng)的頁面記錄添加至所述Q中,合并后的所述Q為 包含有用于指向合并后的所述L i+1'中的所有頁面所對應(yīng)的頁面記錄的有序搜索樹,
[0020] 其中,所述i為大于0的自然數(shù)。
[0021] 在第二方面的第一種可能的實(shí)施方式中,在所述檢測Li+1是否正在合并之前,還包 括:
[0022] 判斷所述Li+1是否為有序搜索樹以及所述第i+1層存儲單元是否存在從數(shù)據(jù)區(qū) Li+1,;
[0023] 若判斷結(jié)果為所述Li+1為有序搜索樹且所述第i+1層存儲單元存在Li+1'時(shí),則將 所述Q和所述L i+1'中的數(shù)據(jù)記錄添加至所述Li+1中,將所述Li+1中的所有頁面所對應(yīng)的頁 面記錄添加至所述Q中,合并后的所述1^為包含有用于指向合并后的所述L i+1中的所有頁 面所對應(yīng)的頁面記錄的有序搜索樹;
[0024] 若判斷結(jié)果為所述Li+1不為有序搜索樹時(shí),則執(zhí)行所述檢測Li+1是否正在合并的 步驟;
[0025] 在所述檢測Li+1是否正在合并之后,還包括:
[0026] 若檢測結(jié)果為所述Li+1未在合并,則將所述Q中的數(shù)據(jù)記錄添加至所述L i+1中,將 所述Li+1中的所有頁面所對應(yīng)的頁面記錄添加至所述Q中,合并后的所述Q為包含有用于 指向合并后的所述L i+1中的所有頁面所對應(yīng)的頁面記錄的有序搜索樹。
[0027] 結(jié)合第二方面或者第二方面的第一種可能的實(shí)施方式,在第二種可能的實(shí)施方式 中,所述方法,還包括:
[0028] 當(dāng)所述Q合并為有序搜索樹后,判斷第i_l層存儲單元的主數(shù)據(jù)區(qū)Lh是否正在 合并以及所述第i層存儲單元是否存在從數(shù)據(jù)區(qū)L/ ;
[0029] 若判斷結(jié)果為所述Lh未在合并且所述第i層存儲單元存在L/,則將所述Q'以 及所述Lg中的數(shù)據(jù)記錄添加至所述Q中,將所述Q中的所有頁面所對應(yīng)的頁面記錄添加 至所述Lg中,合并后的所述Lg為包含有用于指向合并后的所述k中的所有頁面所對應(yīng) 的頁面記錄的有序搜索樹;
[0030] 若判斷結(jié)果為所述Lg未在合并且所述第i層存儲單元不存在L/,則將所述Lh 中的數(shù)據(jù)記錄添加至所述Q中,將所述Q中的所有頁面所對應(yīng)的頁面記錄添加至所述Lh 中,合并后的所述Lg為包含有用于指向合并后的所述Q中的所有頁面所對應(yīng)的頁面記錄 的有序搜索樹。
[0031] 結(jié)合第二方面、第二方面的第一種可能的實(shí)施方式或者第二方面的第二種可能的 實(shí)施方式,在第三種可能的實(shí)施方式中,當(dāng)具有有序數(shù)組形式的所述Lg包括用于存放頁面 記錄的頁面記錄存儲區(qū)時(shí),所述將所述Q以及所述L/中的頁面記錄合并至所述Lg中,包 括:
[0032] 將所述Q中的所有頁面所對應(yīng)的頁面記錄添加至所述Lg中的所述頁面記錄存儲 區(qū)中;
[0033] 所述將所述Q中的所有頁面所對應(yīng)的頁面記錄添加至所述Lg中,包括:
[0034] 將所述Q中的所有頁面所對應(yīng)的頁面記錄添加至所述Lg中的所述頁面記錄存儲 區(qū)中。
[0035] 結(jié)合第二方面、第二方面的第一種可能的實(shí)施方式、第二方面的第二種可能的實(shí) 施方式或者第二方面的第三種可能的實(shí)施方式,在第四種可能的實(shí)施方式中,在所述檢測 所述L i+1'是否已經(jīng)達(dá)到容量上限之后,還包括:
[0036] 若檢測結(jié)果為所述Li+1'未達(dá)到容量上限,則在預(yù)定時(shí)間段后判斷所述L i+1是否合 并完成;
[0037] 若判斷結(jié)果為在預(yù)定時(shí)間段后所述Li+1合并完成,則將所述Q以及所述L i+1'中的 數(shù)據(jù)記錄添加至所述Li+1中,將所述Li+1中的所有頁面所對應(yīng)的頁面記錄添加至所述Q中, 合并后的所述Q為包含有用于指向合并后的所述L i+1中的所有頁面所對應(yīng)的頁面記錄的有 序搜索樹;
[0038] 若判斷結(jié)果為在預(yù)定時(shí)間段后所述Li+1未合并完成,則執(zhí)行所述將所述Q中的數(shù) 據(jù)記錄合并至所述L i+1'中,將所述Li+1'中的所有頁面所對應(yīng)的頁面記錄合并至所述1^中 的步驟。
[0039] 結(jié)合第二方面、第二方面的第一種可能的實(shí)施方式、第二方面的第二種可能的實(shí) 施方式、第二方面的第三種可能的實(shí)施方式或者第二方面的第四種可能的實(shí)施方式,在第 五種可能的實(shí)施方式中,在所述檢測所述L i+1'是否已經(jīng)達(dá)到容量上限之前,還包括:
[0040] 從檢測到所述Li+1正在合并起的所述預(yù)定時(shí)間段后,判斷所述Li+1是否合并完成;
[0041] 若判斷結(jié)果為所述Li+1未合并完成,則執(zhí)行所述檢測所述Li+1'是否已經(jīng)達(dá)到容量 上限的步驟;
[0042] 若判斷結(jié)果為所述Li+1合并完成,則將所述Q以及所述Li+1'中的數(shù)據(jù)記錄添加至 所述Li+1中,將所述Li+1中的所有頁面所對應(yīng)的頁面記錄添加至所述Li中,合并后的所述1^ 為包含有用于指向合并后的所述Li+1中的所有頁面所對應(yīng)的頁面記錄的有序搜索樹。
[0043] 第三方面,提供了一種搜索方法,用于在包括有權(quán)利要求1所述的存儲裝置的設(shè) 備中搜索數(shù)據(jù),所述方法,包括:
[0044] 獲取對所述第i層存儲單元的主數(shù)據(jù)區(qū)Q的上一數(shù)據(jù)區(qū)搜索指定對象時(shí)返回的 頁面記錄,所述上一數(shù)據(jù)區(qū)為第i-1層存儲單元的主數(shù)據(jù)區(qū)Lh或所述第i層存儲單元的 從數(shù)據(jù)區(qū)L/ ;
[0045] 當(dāng)所述Q為有序數(shù)組時(shí),根據(jù)所述頁面記錄所指的位于所述1^的頁面搜索所述指 定對象;
[0046] 當(dāng)所述Q為有序搜索樹時(shí),從所述1^的根節(jié)點(diǎn)所在頁面搜索用于指向第i+1層中 符合條件的頁面記錄,
[0047] 其中,所述i為大于0的自然數(shù),所述指定對象為指定搜索的指定鍵值或指定搜索 的指定鍵值范圍。
[0048] 在第三方面的第一種可能的實(shí)施方式中,所述從所述Q的根節(jié)點(diǎn)所在頁面搜索指 向指向第i+1層中符合條件的頁面記錄,包括:
[0049] 當(dāng)所述指定對象為指定鍵值時(shí),則從所述Q的根節(jié)點(diǎn)所在頁面搜索用于指向第 i+1層存儲單元中符合第一條件的頁面記錄;
[0050] 當(dāng)所述指定對象為指定鍵值范圍時(shí),則從所述Q的根節(jié)點(diǎn)所在頁面搜索用于指向 第i+1層存儲單元中符合第二條件的頁面記錄,
[0051] 其中,所述指定鍵值范圍包括從左邊界值至右邊界值的值,所述第一條件為不大 于所述指定鍵值的最大鍵值,所述第二條件為不大于所述左邊界值的最大鍵值,或,大于所 述左邊界值且不大于所述右邊界值的最小鍵值,所述左邊界值小于所述右邊界值。
[0052] 結(jié)合第三方面或者第三方面的第一種可能的實(shí)施方式,在第二種可能的實(shí)施方式 中,所述獲取對所述Q的上一數(shù)據(jù)區(qū)搜索指定對象時(shí)返回的頁面記錄,包括 :
[0053] 獲取根據(jù)所述第i_l層存儲單元搜索所述指定對象時(shí)返回的頁面記錄;
[0054] 判斷所述第i層存儲單元是否存在所述L/ ;
[0055] 若判斷結(jié)果為所述第i層存儲單元存在所述L/,則根據(jù)所述第i_l層存儲單元返 回的頁面記錄搜索所述L/以搜索所述指定對象;
[0056] 當(dāng)所述指定對象為所述指定鍵值時(shí),則在所述L/中未搜索到所述指定對象時(shí),返 回所述L/中用于指向所述1^中符合所述第一條件的頁面記錄;
[0057] 當(dāng)所述指定對象為所述指定鍵值范圍時(shí),則返回所述L/中用于指向所述Q中符 合所述第二條件的頁面記錄;
[0058] 將符合所述第一條件或所述第二條件的頁面記錄作為對所述Q的上一數(shù)據(jù)區(qū)搜 索指定對象時(shí)返回的頁面記錄;
[0059] 若判斷結(jié)果為所述第i層存儲單元不存在所述L/,則將獲取的根據(jù)所述第i_l層 存儲單元搜索所述指定對象時(shí)返回的頁面記錄作為對所述Q的上一數(shù)據(jù)區(qū)搜索時(shí)返回的 頁面記錄。
[0060] 結(jié)合第三方面、第三方面的第一種可能的實(shí)施方式或者第三方面的第二種可能的 實(shí)施方式,在第三種可能的實(shí)施方式中,具有有序數(shù)組形式的主數(shù)據(jù)區(qū)或從數(shù)據(jù)區(qū)包括用 于存放數(shù)據(jù)記錄的數(shù)據(jù)記錄存儲區(qū)和用于存放頁面記錄的頁面記錄存儲區(qū),
[0061] 所述根據(jù)所述頁面記錄所指的位于所述Li的頁面搜索所述指定對象,包括:
[0062] 根據(jù)所述頁面記錄所指的頁面搜索所述Q中的數(shù)據(jù)記錄存儲區(qū),以搜索所述指定 對象;
[0063] 當(dāng)所述指定對象為指定鍵值時(shí),則在所述1^中的數(shù)據(jù)記錄存儲區(qū)中未搜索到所述 指定對象后,搜索所述Q的頁面記錄存儲區(qū)以搜索用于指向所述Q的下一數(shù)據(jù)區(qū)的符合所 述第一條件的頁面記錄;
[0064] 當(dāng)所述指定對象為指定鍵值范圍時(shí),則搜索所述1^的頁面記錄存儲區(qū)以搜索用于 指向所述1^的下一數(shù)據(jù)區(qū)的符合所述第二條件的頁面記錄;
[0065] 所述根據(jù)所述第i_l層存儲單元返回的頁面記錄搜索所述L/以搜索所述指定對 象,包括:
[0066] 根據(jù)所述第i_l層存儲單元返回的頁面記錄搜索所述L/中的數(shù)據(jù)記錄存儲區(qū)以 搜索所述指定對象;
[0067] 當(dāng)所述指定對象為指定鍵值時(shí),則在所述L/中的數(shù)據(jù)記錄存儲區(qū)中未搜索到所 述指定對象后,則搜索所述L/中的頁面記錄存儲區(qū)以搜索用于指向所述Q的符合所述第 一條件的頁面記錄;
[0068] 當(dāng)所述指定對象為指定鍵值范圍時(shí),則搜索所述L/的頁面記錄存儲區(qū)以搜索用 于指向所述1^的符合所述第二條件的頁面記錄;,
[0069] 其中,所述Q的下一數(shù)據(jù)區(qū)第i+1層的主數(shù)據(jù)區(qū)Li+1或第i+1層的從數(shù)據(jù)區(qū)L i+1'。
[0070] 結(jié)合第三方面、第三方面的第一種可能的實(shí)施方式、第三方面的第二種可能的實(shí) 施方式或者第三方面的第三種可能的實(shí)施方式,在第四種可能的實(shí)施方式中,所述方法,還 包括:
[0071] 在所述第0層存儲單元接收搜索請求,所述搜索請求中包括所述指定對象;
[0072] 在接收到所述搜索請求之后,判斷所述第0層存儲單元是否存在從數(shù)據(jù)區(qū)U' ;
[0073] 若判斷結(jié)果為所述第0層存儲單元存在從數(shù)據(jù)區(qū)U',則根據(jù)所述U'搜索所述指 定對象;
[0074] 當(dāng)所述指定對象為指定鍵值時(shí),則在根據(jù)所述U'未搜索到所述指定對象后,則搜 索所述第〇層存儲單元的主數(shù)據(jù)區(qū)U以搜索所述指定對象;
[0075] 當(dāng)所述指定對象為指定鍵值范圍時(shí),則在搜索完所述U'之后,搜索所述U以搜索 所述指定對象;
[0076] 若判斷結(jié)果為所述第0層存儲單元不存在從數(shù)據(jù)區(qū)U',則根據(jù)所述U搜索所述 指定對象。
[0077] 第四方面,提供了一種索引機(jī)制合并裝置,用于包括有權(quán)利要求1所述的存儲裝 置的設(shè)備中,所述裝置,包括:
[0078] 第一檢測模塊,用于在所述第i層存儲單元的主數(shù)據(jù)區(qū)Q達(dá)到容量上限后,檢測 第i+1層存儲單元的主數(shù)據(jù)區(qū)L i+1是否正在合并;
[0079] 第二檢測模塊,用于在所述第一檢測模塊的檢測結(jié)果為所述Li+1正在合并時(shí),檢測 所述第i+1層存儲單元的從數(shù)據(jù)區(qū)L i+1'是否已經(jīng)達(dá)到容量上限;
[0080] 第一合并模塊,用于在所述第二檢測模塊的檢測結(jié)果為所述Li+1'未達(dá)到容量上限 時(shí),將所述Li中的數(shù)據(jù)記錄添加至所述Li+1'中,將所述Li+1'中的所有頁面所對應(yīng)的頁面記 錄添加至所述Q中,合并后的所述1^為包含有用于指向合并后的所述Li+1'中的所有頁面 所對應(yīng)的頁面記錄的有序搜索樹,
[0081] 其中,所述i為大于0的自然數(shù)。
[0082] 在第四方面的第一種可能的實(shí)施方式中,所述裝置,還包括:
[0083] 第一判斷模塊,用于判斷所述Li+1是否為有序搜索樹以及所述第i+1層存儲單元 是否存在從數(shù)據(jù)區(qū)Li+1' ;
[0084]第二合并模塊,用于在所述第一判斷模塊的判斷結(jié)果為所述Li+1為有序搜索樹且 所述第i+1層存儲單元存在Li+1'時(shí),將所述Q和所述Li+1'中的數(shù)據(jù)記錄添加至所述L i+1 中,將所述Li+1中的所有頁面所對應(yīng)的頁面記錄添加至所述Q中,合并后的所述Q為包含 有用于指向合并后的所述L i+1中的所有頁面所對應(yīng)的頁面記錄的有序搜索樹;
[0085] 第一執(zhí)行模塊,用于在所述第一判斷模塊的判斷結(jié)果為所述Li+1不為有序搜索樹 時(shí),執(zhí)行所述檢測L i+1是否正在合并的步驟;
[0086] 所述裝置,還包括:
[0087] 第三合并模塊,用于在所述第一檢測模塊的檢測結(jié)果為所述Li+1未在合并時(shí),將所 述1^中的數(shù)據(jù)記錄添加至所述Li+1中,將所述Li+1中的所有頁面所對應(yīng)的頁面記錄添加至 所述k中,合并后的所述Q為包含有用于指向合并后的所述Li+1中的所有頁面所對應(yīng)的頁 面記錄的有序搜索樹。
[0088] 結(jié)合第四方面或者第四方面的第一種可能的實(shí)施方式,在第二種可能的實(shí)施方式 中,所述裝置,還包括:
[0089] 第二判斷模塊,用于當(dāng)所述Q合并為有序搜索樹后,判斷第i_l層存儲單元的主 數(shù)據(jù)區(qū)Lg是否正在合并以及所述第i層存儲單元是否存在從數(shù)據(jù)區(qū)L/ ;
[0090] 第四合并模塊,用于在所述第二判斷模塊的判斷結(jié)果為所述Lg未在合并且所述 第i層存儲單元存在L/時(shí),將所述L/以及所述Lg中的數(shù)據(jù)記錄添加至所述Q中,將所 述Q中的所有頁面所對應(yīng)的頁面記錄添加至所述Lg中,合并后的所述Lg為包含有用于 指向合并后的所述Q中的所有頁面所對應(yīng)的頁面記錄的有序搜索樹;
[0091] 第五合并模塊,用于在所述第二判斷模塊的判斷結(jié)果為所述Lg未在合并且所述 第i層存儲單元不存在Q ',則將所述Lh中的數(shù)據(jù)記錄添加至所述Q中,將所述Q中的所 有頁面所對應(yīng)的頁面記錄添加至所述Lg中,合并后的所述Lg為包含有用于指向合并后 的所述Q中的所有頁面所對應(yīng)的頁面記錄的有序搜索樹。
[0092] 結(jié)合第四方面、第四方面的第一種可能的實(shí)施方式或者第四方面的第二種可能的 實(shí)施方式,在第三種可能的實(shí)施方式中,當(dāng)具有有序數(shù)組形式的所述Lg包括用于存放頁面 記錄的頁面記錄存儲區(qū)時(shí),所述第四合并模塊,用于:
[0093] 將所述Q中的所有頁面所對應(yīng)的頁面記錄添加至所述Lg中的所述頁面記錄存儲 區(qū)中;
[0094] 所述第五合并模塊,用于:
[0095] 將所述Q中的所有頁面所對應(yīng)的頁面記錄添加至所述Lg中的所述頁面記錄存儲 區(qū)中。
[0096] 結(jié)合第四方面、第四方面的第一種可能的實(shí)施方式、第四方面的第二種可能的實(shí) 施方式或者第四方面的第三種可能的實(shí)施方式,在第四種可能的實(shí)施方式中,所述裝置,還 包括:
[0097] 第三判斷模塊,用于在所述第二檢測模塊的檢測結(jié)果為所述Li+1'未達(dá)到容量上限 時(shí),在預(yù)定時(shí)間段后判斷所述L i+1是否合并完成;
[0098] 第六合并模塊,用于在所述第三判斷模塊的判斷結(jié)果為在預(yù)定時(shí)間段后所述Li+1 合并完成時(shí),將所述Q以及所述Li+1'中的數(shù)據(jù)記錄添加至所述Li+1中,將所述Li+1中的所 有頁面所對應(yīng)的頁面記錄添加至所述Q中,合并后的所述1^為包含有用于指向合并后的所 述L i+1中的所有頁面所對應(yīng)的頁面記錄的有序搜索樹;
[0099] 第二執(zhí)行模塊,用于在所述第三判斷模塊的判斷結(jié)果為在預(yù)定時(shí)間段后所述Li+1 未合并完成時(shí),執(zhí)行所述將所述Q中的數(shù)據(jù)記錄添加至所述Li+1'中,將所述Li+1'中的所有 頁面所對應(yīng)的頁面記錄添加至所述Q中步驟。
[0100] 結(jié)合第四方面、第四方面的第一種可能的實(shí)施方式、第四方面的第二種可能的實(shí) 施方式、第四方面的第三種可能的實(shí)施方式或者第四方面的第四種可能的實(shí)施方式,在第 五種可能的實(shí)施方式中,所述裝置,還包括:
[0101] 第四判斷模塊,用于從所述第一檢測模塊檢測到所述Li+1正在合并起的所述預(yù)定 時(shí)間段后,判斷所述L i+1是否合并完成;
[0102] 第三執(zhí)行模塊,用于在所述第四判斷模塊的判斷結(jié)果為所述Li+1未合并完成時(shí),執(zhí) 行所述檢測所述L i+1'是否已經(jīng)達(dá)到容量上限的步驟;
[0103] 第七合并模塊,用于在所述第四判斷模塊的判斷結(jié)果為所述Li+1合并完成時(shí),將所 述Q以及所述L i+1'中的數(shù)據(jù)記錄添加至所述Li+1中,將所述Li+1中的所有頁面所對應(yīng)的頁 面記錄添加至所述Q中,合并后的所述1^為包含有用于指向合并后的所述L i+1中的所有頁 面所對應(yīng)的頁面記錄的有序搜索樹。
[0104] 第五方面,提供了一種搜索裝置,用于在包括有權(quán)利要求1所述的存儲裝置的設(shè) 備中搜索數(shù)據(jù),所述裝置,包括:
[0105] 獲取模塊,用于獲取對所述第i層存儲單元的主數(shù)據(jù)區(qū)Li的上一數(shù)據(jù)區(qū)搜索指定 對象時(shí)返回的頁面記錄,所述上一數(shù)據(jù)區(qū)為第i-1層存儲單元的主數(shù)據(jù)區(qū)Lh或所述第i層 存儲單元的從數(shù)據(jù)區(qū)L/ ;
[0106] 第一搜索模塊,用于當(dāng)所述Li為有序數(shù)組時(shí),根據(jù)所述獲取模塊獲取到的頁面記 錄所指的位于所述的頁面搜索所述指定對象;
[0107] 第二搜索模塊,用于當(dāng)所述Q為有序搜索樹時(shí),從所述Q的根節(jié)點(diǎn)所在頁面搜索 用于指向第i+1層存儲單元中符合條件的頁面記錄,
[0108] 其中,所述i為大于0的自然數(shù),所述指定對象為指定搜索的指定鍵值或指定搜索 的指定鍵值范圍。
[0109] 在第五面的第一種可能的實(shí)施方式中,所述第二搜索模塊,包括:
[0110] 第一搜索單元,用于當(dāng)所述指定對象為指定鍵值時(shí),則從所述Li的根節(jié)點(diǎn)所在頁 面搜索用于指向第i+1層存儲單元中符合第一條件的頁面記錄;
[0111] 第二搜索單元,用于當(dāng)所述指定對象為指定鍵值范圍時(shí),則從所述Q的根節(jié)點(diǎn)所 在頁面搜索用于指向第i+1層存儲單元中符合第二條件的頁面記錄,
[0112] 其中,所述指定鍵值范圍包括從左邊界值至右邊界值的值,所述第一條件為不大 于所述指定鍵值的最大鍵值,所述第二條件為不大于所述左邊界值的最大鍵值,或,大于所 述左邊界值且不大于所述右邊界值的最小鍵值,所述左邊界值小于所述右邊界值。
[0113] 結(jié)合第五方面或者第五方面的第一種可能的實(shí)施方式,在第二種可能的實(shí)施方式 中,所述獲取模塊,包括:
[0114] 獲取單元,用于獲取根據(jù)所述第i_l層存儲單元搜索所述指定對象時(shí)返回的頁面 記錄;
[0115] 判斷單元,用于判斷所述第i層存儲單元是否存在所述L/ ;
[0116] 搜索單元,用于在所述判斷單元的判斷結(jié)果為所述第i層存儲單元存在所述IV 時(shí),根據(jù)所述第i-1層存儲單元返回的頁面記錄搜索所述L/以搜索所述指定對象;
[0117] 第一返回單元,用于當(dāng)所述指定對象為所述指定鍵值時(shí),則在所述搜索單元在所 述L/中未搜索到所述指定對象時(shí),返回所述L/中用于指向所述1^中符合所述第一條件 的頁面記錄;
[0118] 第二返回單元,當(dāng)所述指定對象為所述指定鍵值范圍時(shí),則返回所述L/中用于指 向所述Q中符合所述第二條件的頁面記錄;
[0119] 第一作為單元,用于將所述第一返回單元返回的符合所述第一條件或所述第二返 回單元返回的符合所述第二條件的頁面記錄作為對所述Q的上一數(shù)據(jù)區(qū)搜索指定對象時(shí) 返回的頁面記錄;
[0120] 第二作為單元,用于在所述判斷單元的判斷結(jié)果為所述第i層存儲單元不存在所 述L/時(shí),將獲取的根據(jù)所述第i-1層存儲單元搜索所述指定對象時(shí)返回的頁面記錄作為 對所述k的上一數(shù)據(jù)區(qū)搜索時(shí)返回的頁面記錄。
[0121] 結(jié)合第五方面、第五方面的第一種可能的實(shí)施方式或者第五方面的第二種可能的 實(shí)施方式,在第三種可能的實(shí)施方式中,具有有序數(shù)組形式的主數(shù)據(jù)區(qū)或從數(shù)據(jù)區(qū)包括用 于存放數(shù)據(jù)記錄的數(shù)據(jù)記錄存儲區(qū)和用于存放頁面記錄的頁面記錄存儲區(qū),
[0122] 所述第一搜索模塊,包括:
[0123] 第三搜索單元,用于根據(jù)所述獲取模塊獲取到的頁面記錄所指的頁面搜索所述1^ 中的數(shù)據(jù)記錄存儲區(qū),以搜索所述指定對象;
[0124] 第四搜索單元,用于當(dāng)所述指定對象為指定鍵值時(shí),則在所述第三搜索單元在所 述1^中的數(shù)據(jù)記錄存儲區(qū)中未搜索到所述指定對象后,搜索所述Q的頁面記錄存儲區(qū)以搜 索用于指向所述1^的下一數(shù)據(jù)區(qū)的符合所述第一條件的頁面記錄;
[0125] 第五搜索單元,用于當(dāng)所述指定對象為指定鍵值范圍時(shí),則搜索所述Q的頁面記 錄存儲區(qū)以搜索用于指向所述1^的下一數(shù)據(jù)區(qū)的符合所述第二條件的頁面記錄;
[0126] 所述搜索單元,包括:
[0127] 第一搜索子單元,用于根據(jù)所述第i_l層存儲單元返回的頁面記錄搜索所述1^'中 的數(shù)據(jù)記錄存儲區(qū)以搜索所述指定對象;
[0128] 第二搜索子單元,用于當(dāng)所述指定對象為指定鍵值時(shí),則在所述第一搜索子單元 在所述第一搜索子單元在所述L/中的數(shù)據(jù)記錄存儲區(qū)中未搜索到所述指定對象后,搜索 所述L/中的頁面記錄存儲區(qū)以搜索用于指向所述Q的符合所述第一條件的頁面記錄;
[0129] 第三搜索子單元,用于當(dāng)所述指定對象為指定鍵值范圍時(shí),則搜索所述L/的頁面 記錄存儲區(qū)以搜索用于指向所述Q的符合所述第二條件的頁面記錄;,
[0130] 其中,所述Q的下一數(shù)據(jù)區(qū)第i+1層的主數(shù)據(jù)區(qū)Li+1或第i+1層的從數(shù)據(jù)區(qū)L i+1'。
[0131] 結(jié)合第五方面、第五方面的第一種可能的實(shí)施方式、第五方面的第二種可能的實(shí) 施方式或者第五方面的第三種可能的實(shí)施方式,在第四種可能的實(shí)施方式中,所述裝置,還 包括:
[0132] 接收模塊,用于在所述第0層存儲單元接收搜索請求,所述搜索請求中包括所述 指定對象;
[0133] 第五判斷模塊,用于在所述接收模塊接收到所述搜索請求之后,判斷所述第0層 存儲單元是否存在從數(shù)據(jù)區(qū)U' ;
[0134] 第三搜索模塊,用于在所述第五判斷模塊的判斷結(jié)果為所述第0層存儲單元存在 從數(shù)據(jù)區(qū)IV時(shí),根據(jù)所述U'搜索所述指定對象;
[0135] 第四搜索模塊,用于當(dāng)所述指定對象為指定鍵值時(shí),則在所述第三搜索模塊根據(jù) 所述U'未搜索到所述指定對象后,則搜索所述第0層存儲單元的主數(shù)據(jù)區(qū)U以搜索所述 指定對象;
[0136] 第五搜索模塊,用于當(dāng)所述指定對象為指定鍵值范圍時(shí),則在搜索完所述U'之 后,搜索所述U以搜索所述指定對象;
[0137] 第六搜索模塊,用于在所述第五判斷模塊的判斷結(jié)果為所述第0層存儲單元不存 在從數(shù)據(jù)區(qū)IV時(shí),根據(jù)所述U搜索所述指定對象。
[0138] 第六方面,提供了一種存儲設(shè)備,該存儲設(shè)備包含第一方面提供的存儲裝置的特 性,該存儲設(shè)備中包括處理器。
[0139] 所述處理器,在所述第i層存儲單元的主數(shù)據(jù)區(qū)Q達(dá)到容量上限后,檢測第i+1層 存儲單元的主數(shù)據(jù)區(qū)L i+1是否正在合并;
[0140] 所述處理器,還用于檢測結(jié)果為所述Li+1正在合并時(shí),檢測所述第i+1層存儲單元 的從數(shù)據(jù)區(qū)L i+1'是否已經(jīng)達(dá)到容量上限;
[0141] 所述處理器,還用于在檢測結(jié)果為所述Li+1'未達(dá)到容量上限時(shí),將所述1^中的數(shù) 據(jù)記錄添加至所述L i+1'中,將所述Li+1'中的所有頁面所對應(yīng)的頁面記錄添加至所述Q中, 合并后的所述Q為包含有用于指向合并后的所述L i+1'中的所有頁面所對應(yīng)的頁面記錄的 有序搜索樹,其中,所述i為大于〇的自然數(shù)。
[0142] 在第一種可能的實(shí)施方式中,在所述檢測Li+1是否正在合并之前,所述處理器,還 用于判斷所述L i+1是否為有序搜索樹以及所述第i+1層存儲單元是否存在從數(shù)據(jù)區(qū)Li+1' ;
[0143] 所述處理器,還用于在判斷結(jié)果為所述Li+1為有序搜索樹且所述第i+1層存儲單 元存在L i+1'時(shí),則將所述Q和所述Li+1'中的數(shù)據(jù)記錄添加至所述Li+1中,將所述L i+1中的 所有頁面所對應(yīng)的頁面記錄添加至所述Q中,合并后的所述1^為包含有用于指向合并后的 所述L i+1中的所有頁面所對應(yīng)的頁面記錄的有序搜索樹;
[0144] 所述處理器,還用于在判斷結(jié)果為所述Li+1不為有序搜索樹時(shí),則執(zhí)行所述檢測 L i+1是否正在合并的步驟;
[0145] 在所述檢測Li+1是否正在合并之后,所述處理器,還用于在檢測結(jié)果為所述L i+1未 在合并時(shí),將所述Q中的數(shù)據(jù)記錄添加至所述Li+1中,將所述Li+1中的所有頁面所對應(yīng)的頁 面記錄添加至所述Q中,合并后的所述1^為包含有用于指向合并后的所述L i+1中的所有頁 面所對應(yīng)的頁面記錄的有序搜索樹。
[0146] 結(jié)合第六方面或者第六方面的第一種可能的實(shí)施方式,在第二種可能的實(shí)施方式 中,所述處理器,還用于當(dāng)所述Q合并為有序搜索樹后,判斷第i-1層存儲單元的主數(shù)據(jù)區(qū) Lh是否正在合并以及所述第i層存儲單元是否存在從數(shù)據(jù)區(qū)L/ ;
[0147] 所述處理器,還用于在判斷結(jié)果為所述Lg未在合并且所述第i層存儲單元存在 L/時(shí),則將所述L/以及所述Lh中的數(shù)據(jù)記錄添加至所述Q中,將所述1^中的所有頁面 所對應(yīng)的頁面記錄添加至所述Lh中,合并后的所述Lh為包含有用于指向合并后的所述Q 中的所有頁面所對應(yīng)的頁面記錄的有序搜索樹;
[0148] 所述處理器,還用于在判斷結(jié)果為所述Lg未在合并且所述第i層存儲單元不存 在k'時(shí),則將所述Lh中的數(shù)據(jù)記錄添加至所述Q中,將所述Q中的所有頁面所對應(yīng)的頁 面記錄添加至所述Lh中,合并后的所述Lh為包含有用于指向合并后的所述Q中的所有 頁面所對應(yīng)的頁面記錄的有序搜索樹。
[0149] 結(jié)合第六方面、第六方面的第一種可能的實(shí)施方式或者第六方面的第二種可能的 實(shí)施方式,在第三種可能的實(shí)施方式中,當(dāng)具有有序數(shù)組形式的所述Lg包括用于存放頁面 記錄的頁面記錄存儲區(qū)時(shí),所述處理器,還用于將所述1^中的所有頁面所對應(yīng)的頁面記錄 添加至所述Lg中的所述頁面記錄存儲區(qū)中;
[0150] 所述處理器,還用于將所述Q中的所有頁面所對應(yīng)的頁面記錄添加至所述Lg中 的所述頁面記錄存儲區(qū)中。
[0151] 結(jié)合第六方面、第六方面的第一種可能的實(shí)施方式、第六方面的第二種可能的實(shí) 施方式或者第六方面的第三種可能的實(shí)施方式,在第四種可能的實(shí)施方式中,在所述檢測 所述L i+1 '是否已經(jīng)達(dá)到容量上限之后,所述處理器還可以用于在檢測結(jié)果為所述Li+1 '未達(dá) 到容量上限時(shí),則在預(yù)定時(shí)間段后判斷所述Li+1是否合并完成;
[0152] 所述處理器,還可以用于在判斷結(jié)果為在預(yù)定時(shí)間段后所述Li+1合并完成時(shí),則將 所述Q以及所述L i+1'中的數(shù)據(jù)記錄添加至所述Li+1中,將所述Li+1中的所有頁面所對應(yīng)的 頁面記錄添加至所述Q中,合并后的所述1^為包含有用于指向合并后的所述L i+1中的所有 頁面所對應(yīng)的頁面記錄的有序搜索樹;
[0153] 所述處理器,還可以用于在判斷結(jié)果為在預(yù)定時(shí)間段后所述Li+1未合并完成時(shí),則 執(zhí)行所述將所述1^中的數(shù)據(jù)記錄添加至所述L i+1'中,將所述Li+1'中的所有頁面所對應(yīng)的 頁面記錄添加至所述Q中的步驟。
[0154] 結(jié)合第六方面、第六方面的第一種可能的實(shí)施方式、第六方面的第二種可能的實(shí) 施方式、第六方面的第三種可能的實(shí)施方式或者第六方面的第四種可能的實(shí)施方式,在第 五種可能的實(shí)施方式中,在所述檢測所述L i+1'是否已經(jīng)達(dá)到容量上限之前,所述處理器還 可以用于從檢測到所述Li+1正在合并起的所述預(yù)定時(shí)間段后,判斷所述L i+1是否合并完成;
[0155] 所述處理器,還可以用于在判斷結(jié)果為所述Li+1未合并完成時(shí),則執(zhí)行所述檢測所 述L i+1'是否已經(jīng)達(dá)到容量上限的步驟;
[0156] 所述處理器,還可以用于在判斷結(jié)果為所述Li+1合并完成時(shí),則將所述1^以及所述 L i+1'中的數(shù)據(jù)記錄添加至所述Li+1中,將所述Li+1中的所有頁面所對應(yīng)的頁面記錄添加至 所述k中,合并后的所述Q為包含有用于指向合并后的所述L i+1中的所有頁面所對應(yīng)的頁 面記錄的有序搜索樹。
[0157] 第七方面,提供了一種存儲設(shè)備,該存儲設(shè)備包含第一方面提供的存儲裝置的特 性,該存儲設(shè)備中包括處理器。
[0158] 所述處理器,用于獲取對所述第i層存儲單元的主數(shù)據(jù)區(qū)Q的上一數(shù)據(jù)區(qū)搜索指 定對象時(shí)返回的頁面記錄,所述上一數(shù)據(jù)區(qū)為第i-1層存儲單元的主數(shù)據(jù)區(qū)Lg或所述第i 層存儲單元的從數(shù)據(jù)區(qū)L/ ;
[0159] 所述處理器,還用于當(dāng)所述Q為有序數(shù)組時(shí),根據(jù)所述頁面記錄所指的位于所述 Q的頁面搜索所述指定對象;
[0160] 所述處理器,還用于所述Q為有序搜索樹時(shí),從所述Q的根節(jié)點(diǎn)所在頁面搜索用 于指向第i+1層存儲單元中符合條件的頁面記錄,其中,所述i為大于〇的自然數(shù),所述指 定對象為指定搜索的指定鍵值或指定搜索的指定鍵值范圍。
[0161] 在第一種可能實(shí)施方式中,所述處理器,還用于當(dāng)所述指定對象為指定鍵值時(shí),則 從所述Q的根節(jié)點(diǎn)所在頁面搜索用于指向第i+1層存儲單元中符合第一條件的頁面記錄;
[0162] 所述處理器,還用于當(dāng)所述指定對象為指定鍵值范圍時(shí),則從所述Q的根節(jié)點(diǎn)所 在頁面搜索用于指向第i+1層存儲單元中符合第二條件的頁面記錄,
[0163] 其中,所述指定鍵值范圍包括從左邊界值至右邊界值的值,所述第一條件為不大 于所述指定鍵值的最大鍵值,所述第二條件為不大于所述左邊界值的最大鍵值,或,大于所 述左邊界值且不大于所述右邊界值的最小鍵值,所述左邊界值小于所述右邊界值。
[0164] 結(jié)合第七方面或者第七方面的第一種可能的實(shí)施方式,在第二種可能的實(shí)施方式 中,所述處理器,還用于獲取根據(jù)所述第i_l層存儲單元搜索所述指定對象時(shí)返回的頁面 記錄;
[0165] 所述處理器,還用于判斷所述第i層存儲單元是否存在所述L/ ;
[0166] 所述處理器,還用于在判斷結(jié)果為所述第i層存儲單元存在所述L/時(shí),則根據(jù)所 述第i-1層存儲單元返回的頁面記錄搜索所述L/以搜索所述指定對象;
[0167] 所述處理器,還用于當(dāng)所述指定對象為所述指定鍵值時(shí),則在所述L/中未搜索到 所述指定對象時(shí),返回所述L/中用于指向所述1^中符合所述第一條件的頁面記錄;
[0168] 所述處理器,還用于當(dāng)所述指定對象為所述指定鍵值范圍時(shí),則返回所述L/中用 于指向所述Q中符合所述第二條件的頁面記錄;
[0169] 所述處理器,還用于將所述符合第一條件或所述第二條件的頁面記錄作為對所述 Q的上一數(shù)據(jù)區(qū)搜索指定對象時(shí)返回的頁面記錄;
[0170] 所述處理器,還用于在判斷結(jié)果為所述第i層存儲單元不存在所述L/時(shí),則將獲 取的根據(jù)所述第i_l層存儲單元搜索所述指定對象時(shí)返回的頁面記錄作為對所述k的上 一數(shù)據(jù)區(qū)搜索時(shí)返回的頁面記錄,
[0171] 其中,所述指定鍵值范圍包括從左邊界值至右邊界值的值,所述第一條件為不大 于所述指定鍵值,所述第二條件為不大于所述左邊界值的最大鍵值,或,大于所述左邊界值 且不大于所述右邊界值的最小鍵值,所述左邊界值小于所述右邊界值。
[0172] 結(jié)合第七方面、第七方面的第一種可能的實(shí)施方式或者第七方面的第二種可能的 實(shí)施方式,在第三種可能的實(shí)施方式中,具有有序數(shù)組形式的主數(shù)據(jù)區(qū)或從數(shù)據(jù)區(qū)包括用 于存放數(shù)據(jù)記錄的數(shù)據(jù)記錄存儲區(qū)和用于存放頁面記錄的頁面記錄存儲區(qū),
[0173] 所述處理器,還用于根據(jù)所述頁面記錄所指的頁面搜索所述Q中的數(shù)據(jù)記錄存儲 區(qū),以搜索所述指定對象;
[0174] 所述處理器,還用于當(dāng)所述指定對象為指定鍵值時(shí),則在所述k中的數(shù)據(jù)記錄存 儲區(qū)中未搜索到所述指定對象后,搜索所述Q的頁面記錄存儲區(qū)以搜索用于指向所述Q的 下一數(shù)據(jù)區(qū)的符合所述第一條件的頁面記錄;
[0175] 所述處理器,還用于當(dāng)所述指定對象為指定鍵值范圍時(shí),則搜索所述Q的頁面記 錄存儲區(qū)以搜索用于指向所述1^的下一數(shù)據(jù)區(qū)的符合所述第二條件的頁面記錄;
[0176] 所述處理器,還用于根據(jù)所述第i_l層存儲單元返回的頁面記錄搜索所述1^'中 的數(shù)據(jù)記錄存儲區(qū)以搜索所述指定對象;
[0177] 所述處理器,還用于當(dāng)所述指定對象為指定鍵值時(shí),則在所述L/中的數(shù)據(jù)記錄存 儲區(qū)中未搜索到所述指定對象后,則搜索所述L/中的頁面記錄存儲區(qū)以搜索用于指向所 述Q的符合所述第一條件的頁面記錄;
[0178] 當(dāng)所述指定對象為指定鍵值范圍時(shí),則搜索所述L/的頁面記錄存儲區(qū)以搜索用 于指向所述1^的符合所述第二條件的頁面記錄;,
[0179] 其中,所述Q的下一數(shù)據(jù)區(qū)第i+1層的主數(shù)據(jù)區(qū)Li+1或第i+1層的從數(shù)據(jù)區(qū)L i+1'。
[0180] 結(jié)合第七方面、第七方面的第一種可能的實(shí)施方式、第七方面的第二種可能的實(shí) 施方式或者第七方面的第三種可能的實(shí)施方式,在第四種可能的實(shí)施方式中,所述處理器, 還用于在所述第0層存儲單元接收搜索請求,所述搜索請求中包括所述指定對象;
[0181] 所述處理器,還用于在接收到所述搜索請求之后,判斷所述第0層存儲單元是否 存在從數(shù)據(jù)區(qū)U' ;
[0182] 所述處理器,還用于在判斷結(jié)果為所述第0層存儲單元存在從數(shù)據(jù)區(qū)U'時(shí),則根 據(jù)所述U'搜索所述指定對象;
[0183] 所述處理器,還用于當(dāng)所述指定對象為指定鍵值時(shí),則根據(jù)所述U'未搜索到所述 指定對象后,則搜索所述第〇層存儲單元的主數(shù)據(jù)區(qū)U以搜索所述指定對象;
[0184] 所述處理器,還用于當(dāng)所述指定對象為指定鍵值范圍時(shí),則在搜索完所述U'之 后,搜索所述U以搜索所述指定對象;
[0185] 所述處理器,還用于在判斷結(jié)果為所述第0層存儲單元不存在從數(shù)據(jù)區(qū)U'時(shí),則 根據(jù)所述U搜索所述指定對象。
[0186] 本發(fā)明實(shí)施例提供的技術(shù)方案帶來的有益效果是:
[0187] 通過在第i層存儲單元的主數(shù)據(jù)區(qū)Q達(dá)到容量上限后,若第i+1層存儲單元的主 數(shù)據(jù)區(qū)L i+1正在合并,則將Q與第i+1層存儲單元的從數(shù)據(jù)區(qū)Li+1'進(jìn)行合并,合并后的Q 為有序搜索樹,其中,i為大于〇的自然數(shù);解決了現(xiàn)有技術(shù)中索引機(jī)制FD樹在合并過程中 占用較長時(shí)間的問題;由于在L i+1正在合并的過程中,可以同時(shí)進(jìn)行1^與1^+1'的合并過程, 因此實(shí)現(xiàn)了多線程合并,達(dá)到了可以很大程度上提高了合并速率的效果。
【專利附圖】
【附圖說明】
[0188] 為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對實(shí)施例描述中所需要使 用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于 本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他 的附圖。
[0189] 圖1是現(xiàn)有技術(shù)中提供的FD樹的結(jié)構(gòu)示意圖;
[0190] 圖2A是本發(fā)明部分實(shí)施例中提供的存儲裝置的示意圖;
[0191] 圖2B是本發(fā)明部分實(shí)施例中提供的存儲裝置中存儲單元的示意圖;
[0192] 圖2C是本發(fā)明部分實(shí)施例中提供的索引機(jī)制中任意兩層存儲單元之間的指向關(guān) 系的不意圖;
[0193] 表2D是本發(fā)明部分實(shí)施例中提供的主數(shù)據(jù)區(qū)層次目錄表;
[0194] 表2E是本發(fā)明部分實(shí)施例中提供的從數(shù)據(jù)區(qū)層次目錄表;
[0195] 圖3是本發(fā)明一個(gè)實(shí)施例提供的索引機(jī)制合并方法的方法流程圖;
[0196] 圖4是本發(fā)明另一個(gè)實(shí)施例提供的索引機(jī)制合并方法的方法流程圖;
[0197] 圖5是本發(fā)明再一個(gè)實(shí)施例中索引機(jī)制合并方法的方法流程圖;
[0198] 圖6是本發(fā)明再一個(gè)實(shí)施例中索引機(jī)制合并方法的方法流程圖;
[0199] 圖7是本發(fā)明再一個(gè)實(shí)施例中索引機(jī)制合并方法的方法流程圖;
[0200] 圖8是本發(fā)明一個(gè)實(shí)施例中提供的搜索方法的方法流程圖;
[0201] 圖9是本發(fā)明另一個(gè)實(shí)施例中提供的搜索方法的方法流程圖;
[0202] 圖10是本發(fā)明一個(gè)實(shí)施例中第0層搜索數(shù)據(jù)記錄的流程圖;
[0203] 圖11是本發(fā)明一個(gè)實(shí)施例中第i層搜索數(shù)據(jù)記錄的流程圖;
[0204] 圖12是本發(fā)明另一個(gè)實(shí)施例中第0層搜索指定范圍的流程圖;
[0205] 圖13是本發(fā)明另一個(gè)實(shí)施例中第i層搜索指定范圍的流程圖;
[0206] 圖14是本發(fā)明再一個(gè)實(shí)施例中第i層搜索數(shù)據(jù)記錄的流程圖;
[0207] 圖15是本發(fā)明再一個(gè)實(shí)施例中第i層搜索數(shù)據(jù)記錄的流程圖;
[0208] 圖16是本發(fā)明一個(gè)實(shí)施例中索引機(jī)制合并裝置的結(jié)構(gòu)示意圖;
[0209] 圖17是本發(fā)明另一個(gè)實(shí)施例中索引機(jī)制合并裝置的結(jié)構(gòu)示意圖;
[0210] 圖18是本發(fā)明一個(gè)實(shí)施例中搜索裝置的結(jié)構(gòu)示意圖;
[0211] 圖19是本發(fā)明另一個(gè)實(shí)施例中搜索裝置的結(jié)構(gòu)示意圖;
[0212] 圖20是本發(fā)明一個(gè)實(shí)施例中存儲設(shè)備的結(jié)構(gòu)示意圖;
[0213] 圖21是本發(fā)明另一個(gè)實(shí)施例中存儲設(shè)備的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0214] 為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對本發(fā)明實(shí)施方 式作進(jìn)一步地詳細(xì)描述。下文中所講的"i"為大于〇的自然數(shù)。
[0215] 請參見圖2A,其示出了本發(fā)明部分實(shí)施例中提供的存儲裝置的示意圖。該存儲裝 置包含內(nèi)存和閃存,其中內(nèi)存中可以包含合并管理單元和層次目錄單元,閃存中可以包括 層次目錄單元和日志單元。此外,該存儲裝置通常還會包含有設(shè)置在內(nèi)存中的一層存儲單 元(即第〇層存儲單元)和設(shè)置在閃存中的至少兩層存儲單元。
[0216] 需要說明的是,在包含有該存儲裝置的系統(tǒng)剛開始運(yùn)行時(shí),閃存中可能并不包含 存儲單元,隨著內(nèi)存不斷的存儲數(shù)據(jù),當(dāng)內(nèi)存達(dá)到容量上限后,在閃存中建立存儲單元,以 用于存儲數(shù)據(jù),當(dāng)數(shù)據(jù)越來越多時(shí),閃存中建立的存儲單元也越來越多。
[0217] 存儲單元用于存儲并組織數(shù)據(jù)記錄,請參見圖2B,其示出了本發(fā)明部分實(shí)施例中 提供的存儲裝置中存儲單元的示意圖。該存儲裝置中的每層存儲單元可以包括主數(shù)據(jù)區(qū), 至少一層存儲單元還可以包括從數(shù)據(jù)區(qū)。
[0218] 第0層存儲單元的主數(shù)據(jù)區(qū)U可以為有序搜索樹,當(dāng)?shù)?層存儲單元存在從數(shù)據(jù) 區(qū)U'時(shí),第〇層存儲單元的從數(shù)據(jù)區(qū)U'也可以為有序搜索樹,第〇層存儲單元中的有序 搜索樹可以包括數(shù)據(jù)記錄和/或頁面記錄。
[0219] 第i層存儲單元的主數(shù)據(jù)區(qū)Q可以為有序搜索樹,也可以為有序數(shù)組,當(dāng)該第i層 存儲單元存在從數(shù)據(jù)區(qū)L/時(shí),該第i層存儲單元的從數(shù)據(jù)區(qū)L/可以為有序數(shù)組,其中,i 為大于〇的自然數(shù)。比如,圖2B中的第1層存儲單元中的主數(shù)據(jù)區(qū)U為有序搜索樹,從數(shù) 據(jù)區(qū)L/為有序數(shù)組,第2層存儲單元中主數(shù)據(jù)gL 2和從數(shù)據(jù)區(qū)L2'均為有序數(shù)組。
[0220] 第i層存儲單元中的有序搜索樹可以包括頁面記錄,第i層存儲單元中的有序數(shù) 組中可以包括數(shù)據(jù)記錄和/或頁面記錄,其中,數(shù)據(jù)記錄可以包括鍵值和記錄值,頁面記錄 可以包括鍵值和頁面地址。
[0221] 當(dāng)?shù)趇層存儲單元中存在從數(shù)據(jù)區(qū)L/時(shí),從數(shù)據(jù)區(qū)L/為該第i層存儲單元的第 一搜索數(shù)據(jù)區(qū),該第i層存儲單元中的主數(shù)據(jù)區(qū)Q為該第i層存儲單元的第二搜索數(shù)據(jù)區(qū); 當(dāng)該第i層存儲單元中不存在從數(shù)據(jù)區(qū)L/時(shí),主數(shù)據(jù)區(qū)Q為該第i層存儲單元的第一搜 索數(shù)據(jù)區(qū)。也就是說,如果第i層存儲單元同時(shí)存在主數(shù)據(jù)區(qū)Q和從數(shù)據(jù)區(qū)L/時(shí),則該從 數(shù)據(jù)區(qū)L/為該第i層存儲單元的第一搜索數(shù)據(jù)區(qū),如果該第i層存儲單元僅存在主數(shù)據(jù) 區(qū)Q時(shí),則該主數(shù)據(jù)區(qū)Q為該第i層存儲單元的第一搜索數(shù)據(jù)區(qū)。通常來講,在第i層存 儲單元上進(jìn)行搜索時(shí),先從該第i層存儲單元的第一搜索數(shù)據(jù)區(qū)開始搜索,如果該第i層存 儲單元存在第二搜索數(shù)據(jù)區(qū)時(shí),再從該第二搜索數(shù)據(jù)區(qū)開始搜索。
[0222] 在實(shí)際應(yīng)用中,第i層存儲單元中主數(shù)據(jù)區(qū)和從數(shù)據(jù)區(qū)之間的指向關(guān)系以及第i 層與第i+1層存儲單元的指向關(guān)系可以參見圖2C所示,圖2C為本發(fā)明部分實(shí)施例中提供 的索引機(jī)制中其中兩層存儲單元之間的指向關(guān)系的示意圖。其中,從數(shù)據(jù)區(qū)L/為該第i層 存儲單元中的第一搜索數(shù)據(jù)區(qū),該第一搜索數(shù)據(jù)區(qū)按序保存指向第i層存儲單元的第二搜 索數(shù)據(jù)區(qū)k的所有頁面對應(yīng)的頁面記錄&按序保存指向第i+1層存儲單元中的第一搜索 數(shù)據(jù)區(qū)的所有頁面對應(yīng)的頁面記錄,從數(shù)據(jù)區(qū)L/按序保存指向主數(shù)據(jù)區(qū)Q的所有頁面對 應(yīng)的頁面記錄。
[0223] 在實(shí)際應(yīng)用中,當(dāng)?shù)趇+1層存儲單元中的第一搜索數(shù)據(jù)區(qū)為有序搜索樹時(shí),則Q 的頁面記錄是無效記錄,也即在對第i+1層存儲單元中的第一搜索數(shù)據(jù)區(qū)進(jìn)行實(shí)際搜索的 過程中,直接從第i+1層存儲單元中的第一搜索數(shù)據(jù)區(qū)的根節(jié)點(diǎn)開始搜索,而不需要利用Q 的頁面記錄搜索第i+1層存儲單元中的第一搜索數(shù)據(jù)區(qū);當(dāng)Q為有序搜索樹時(shí),則L/的頁 面記錄為無效記錄,也即在對1^進(jìn)行實(shí)際搜索的過程中,直接從1^的根節(jié)點(diǎn)開始搜索,而不 需要利用Q '的頁面記錄搜索Q。
[0224] 而通常,第0層存儲單元的主數(shù)據(jù)區(qū)和從數(shù)據(jù)區(qū)是沒有指向關(guān)系,也即當(dāng)主數(shù)據(jù) 區(qū)達(dá)到容量上限之后,將主數(shù)據(jù)區(qū)中的內(nèi)容轉(zhuǎn)移到第1層存儲單元,將該從數(shù)據(jù)區(qū)作為第〇 層存儲單元中最新的主數(shù)據(jù)區(qū),并指向第1層存儲單元,然后還可以釋放掉第〇層存儲單元 的原有的主數(shù)據(jù)區(qū)。
[0225] 層次目錄單元管理存儲單元中的層次的相關(guān)信息,層次目錄單元分別為主數(shù)據(jù)區(qū) 和從數(shù)據(jù)區(qū)組織信息,請參見表2D所示,其示出了本發(fā)明部分實(shí)施例中提供的主數(shù)據(jù)區(qū)層 次目錄表,如下 :
[0226]
【權(quán)利要求】
1. 一種存儲裝置,其特征在于,所述存儲裝置包括至少三層存儲單元,第〇層存儲單元 位于內(nèi)存中,第i層存儲單元位于閃存中,每層存儲單元包括主數(shù)據(jù)區(qū),其中: 所述第0層存儲單元中的主數(shù)據(jù)區(qū)為有序搜索樹,當(dāng)所述第0層存儲單元中存在從數(shù) 據(jù)區(qū)時(shí),所述從數(shù)據(jù)區(qū)為有序搜索樹,所述有序搜索樹包括數(shù)據(jù)記錄和/或頁面記錄; 所述第i層存儲單元中的主數(shù)據(jù)區(qū)為有序搜索樹或有序數(shù)組,當(dāng)所述第i層存儲單元 中存在從數(shù)據(jù)區(qū)時(shí),所述從數(shù)據(jù)區(qū)為有序數(shù)組,所述有序搜索樹包括頁面記錄,所述有序數(shù) 組包括數(shù)據(jù)記錄和/或頁面記錄; 所述數(shù)據(jù)記錄包括鍵值和記錄值,所述頁面記錄包括鍵值和頁面地址; 當(dāng)所述第i層存儲單元中存在從數(shù)據(jù)區(qū)L/時(shí),所述L/為所述第i層存儲單元的第一 搜索數(shù)據(jù)區(qū),所述第i層存儲單元中的主數(shù)據(jù)區(qū)Q為所述第i層存儲單元的第二搜索數(shù)據(jù) 區(qū);當(dāng)所述第i層存儲單元中不存在所述L/時(shí),所述Q為所述第i層存儲單元的所述第一 搜索數(shù)據(jù)區(qū); 所述Q按序保存指向第i+1層存儲單元中的第一搜索數(shù)據(jù)區(qū)的所有頁面對應(yīng)的頁面 記錄;當(dāng)所述第i+1層存儲單元中的第一搜索數(shù)據(jù)區(qū)為有序搜索樹時(shí),則所述Q的頁面記 錄是無效記錄; 所述L/按序保存指向所述1^的所有頁面對應(yīng)的頁面記錄;當(dāng)所述Q為有序搜索樹時(shí), 則所述L/的頁面記錄為無效記錄, 其中,所述i為大于〇的自然數(shù)。
2. -種索引機(jī)制合并方法,其特征在于,用于包括有權(quán)利要求1所述的存儲裝置的設(shè) 備中,所述方法,包括: 在所述第i層存儲單元的主數(shù)據(jù)區(qū)Q達(dá)到容量上限后,檢測第i+1層存儲單元的主數(shù) 據(jù)區(qū)Li+1是否正在合并; 若檢測結(jié)果為所述Li+1正在合并,則檢測所述第i+1層存儲單元的從數(shù)據(jù)區(qū)Li+1'是否 已經(jīng)達(dá)到容量上限; 若檢測結(jié)果為所述Li+1'未達(dá)到容量上限,則將所述Q中的數(shù)據(jù)記錄添加至所述Li+1' 中,將所述Li+1'中的所有頁面所對應(yīng)的頁面記錄添加至所述Q中,合并后的所述Q為包含 有用于指向合并后的所述Li+1'中的所有頁面所對應(yīng)的頁面記錄的有序搜索樹, 其中,所述i為大于〇的自然數(shù)。
3. 根據(jù)權(quán)利要求2所述的方法,其特征在于,在所述檢測Li+1是否正在合并之前,還包 括: 判斷所述Li+1是否為有序搜索樹以及所述第i+1層存儲單元是否存在從數(shù)據(jù)區(qū)Li+1' ; 若判斷結(jié)果為所述Li+1為有序搜索樹且所述第i+1層存儲單元存在Li+1'時(shí),則將所述 Q和所述Li+1'中的數(shù)據(jù)記錄添加至所述Li+1中,將所述Li+1中所有頁面所對應(yīng)的頁面記錄 添加至所述k中,合并后的所述1^為包含有用于指向合并后的所述Li+1中的所有頁面所對 應(yīng)的頁面記錄的有序搜索樹; 若判斷結(jié)果為所述Li+1不為有序搜索樹時(shí),則執(zhí)行所述檢測Li+1是否正在合并的步驟; 在所述檢測Li+1是否正在合并之后,還包括: 若檢測結(jié)果為所述Li+1未在合并,則將所述Q中的數(shù)據(jù)記錄添加至所述Li+1中,將所述 Li+1中的所有頁面所對應(yīng)的頁面記錄添加至所述Q中,合并后的所述Q為包含有用于指向 合并后的所述Li+1中的所有頁面所對應(yīng)的頁面記錄的有序搜索樹。
4. 根據(jù)權(quán)利要求3所述的方法,其特征在于,所述方法,還包括: 當(dāng)所述Q合并為有序搜索樹后,判斷第i-1層存儲單元的主數(shù)據(jù)區(qū)Lg是否正在合并 以及所述第i層存儲單元是否存在從數(shù)據(jù)區(qū)L/ ; 若判斷結(jié)果為所述Lg未在合并且所述第i層存儲單元存在L/,則將所述L/以及所 述Lg中的數(shù)據(jù)記錄添加至所述Q中,將所述1^中的所有頁面所對應(yīng)的頁面記錄添加至所 述Lg中,合并后的所述Lg為包含有用于指向合并后的所述Q中的所有頁面所對應(yīng)的頁 面記錄的有序搜索樹; 若判斷結(jié)果為所述Lg未在合并且所述第i層存儲單元不存在L/,則將所述Lg中的 數(shù)據(jù)記錄添加至所述Q中,將所述Q中的所有頁面所對應(yīng)的頁面記錄添加至所述Lh中, 合并后的所述Lh為包含有用于指向合并后的所述Q中的所有頁面所對應(yīng)的頁面記錄的有 序搜索樹。
5. 根據(jù)權(quán)利要求4所述的方法,其特征在于,當(dāng)具有有序數(shù)組形式的所述Lh包括用于 存放頁面記錄的頁面記錄存儲區(qū)時(shí),所述將所述Q中的所有頁面所對應(yīng)的頁面記錄添加至 所述Lg中,包括: 將所述Q中的所有頁面所對應(yīng)的頁面記錄添加至所述Lh中的所述頁面記錄存儲區(qū) 中; 所述將所述Q中的所有頁面所對應(yīng)的頁面記錄添加至所述Lg中,包括: 將所述Q中的所有頁面所對應(yīng)的頁面記錄添加至所述Lh中的所述頁面記錄存儲區(qū) 中。
6. 根據(jù)權(quán)利要求2至5中任一所述的方法,其特征在于,在所述檢測所述Li+1'是否已 經(jīng)達(dá)到容量上限之后,還包括: 若檢測結(jié)果為所述Li+1'未達(dá)到容量上限,則在預(yù)定時(shí)間段后判斷所述Li+1是否合并完 成; 若判斷結(jié)果為在預(yù)定時(shí)間段后所述Li+1合并完成,則將所述Q以及所述Li+1'中的數(shù)據(jù) 記錄添加至所述Li+1中,將所述Li+1中的所有頁面所對應(yīng)的頁面記錄添加至所述Q中,合并 后的所述Q為包含有用于指向合并后的所述Li+1中所有頁面所對應(yīng)的頁面記錄的有序搜索 樹; 若判斷結(jié)果為在預(yù)定時(shí)間段后所述Li+1未合并完成,則執(zhí)行所述將所述Q中的數(shù)據(jù)記 錄添加至所述Li+1'中,將所述Li+1'中的所有頁面所對應(yīng)的頁面記錄添加至所述Q中的步 驟。
7. 根據(jù)權(quán)利要求2至5中任一所述的方法,其特征在于,在所述檢測所述Li+1'是否已 經(jīng)達(dá)到容量上限之前,還包括: 從檢測到所述Li+1正在合并起的所述預(yù)定時(shí)間段后,判斷所述Li+1是否合并完成; 若判斷結(jié)果為所述Li+1未合并完成,則執(zhí)行所述檢測所述Li+1'是否已經(jīng)達(dá)到容量上限 的步驟; 若判斷結(jié)果為所述Li+1合并完成,則將所述Q以及所述Li+1'中的數(shù)據(jù)記錄添加至所述 Li+1中,將所述Li+1中的所有頁面所對應(yīng)的頁面記錄添加至所述Q中,合并后的所述Q為包 含有用于指向合并后的所述Li+1中的所有頁面所對應(yīng)的頁面記錄的有序搜索樹。
8. -種搜索方法,其特征在于,用于在包括有權(quán)利要求1所述的存儲裝置的設(shè)備中搜 索數(shù)據(jù),所述方法,包括: 獲取對所述第i層存儲單元的主數(shù)據(jù)區(qū)Q的上一數(shù)據(jù)區(qū)搜索指定對象時(shí)返回的頁面 記錄,所述上一數(shù)據(jù)區(qū)為第i-1層存儲單元的主數(shù)據(jù)區(qū)Lg或所述第i層存儲單元的從數(shù) 據(jù)區(qū)L/ ; 當(dāng)所述Q為有序數(shù)組時(shí),根據(jù)所述頁面記錄所指的位于所述Q的頁面搜索所述指定對 象; 當(dāng)所述Q為有序搜索樹時(shí),從所述Q的根節(jié)點(diǎn)所在頁面搜索用于指向第i+1層存儲單 元中符合條件的頁面記錄, 其中,所述i為大于〇的自然數(shù),所述指定對象為指定搜索的指定鍵值或指定搜索的指 定鍵值范圍。
9. 根據(jù)權(quán)利要求8所述的方法,其特征在于,所述從所述Q的根節(jié)點(diǎn)所在頁面搜索用 于指向第i+1層存儲單元中符合條件的頁面記錄,包括: 當(dāng)所述指定對象為指定鍵值時(shí),則從所述Q的根節(jié)點(diǎn)所在頁面搜索用于指向第i+1層 存儲單元中符合第一條件的頁面記錄; 當(dāng)所述指定對象為指定鍵值范圍時(shí),則從所述Q的根節(jié)點(diǎn)所在頁面搜索用于指向第 i+1層存儲單元中符合第二條件的頁面記錄, 其中,所述指定鍵值范圍包括從左邊界值至右邊界值的值,所述第一條件為不大于所 述指定鍵值的最大鍵值,所述第二條件為不大于所述左邊界值的最大鍵值,或,大于所述左 邊界值且不大于所述右邊界值的最小鍵值,所述左邊界值小于所述右邊界值。
10. 根據(jù)權(quán)利要求9所述的方法,其特征在于,所述獲取對所述k的上一數(shù)據(jù)區(qū)搜索指 定對象時(shí)返回的頁面記錄,包括: 獲取根據(jù)所述第i_l層存儲單元搜索所述指定對象時(shí)返回的頁面記錄; 判斷所述第i層存儲單元是否存在所述L/ ; 若判斷結(jié)果為所述第i層存儲單元存在所述L/,則根據(jù)所述第i-1層存儲單元返回的 頁面記錄搜索所述L/以搜索所述指定對象; 當(dāng)所述指定對象為所述指定鍵值時(shí),則在所述L/中未搜索到所述指定對象時(shí),返回所 述L/中用于指向所述Q中符合所述第一條件的頁面記錄; 當(dāng)所述指定對象為所述指定鍵值范圍時(shí),則返回所述L/中用于指向所述Q中符合所 述第二條件的頁面記錄; 將符合所述第一條件或所述第二條件的頁面記錄作為對所述Q的上一數(shù)據(jù)區(qū)搜索指 定對象時(shí)返回的頁面記錄; 若判斷結(jié)果為所述第i層存儲單元不存在所述L/,則將獲取的根據(jù)所述第i-1層存儲 單元搜索所述指定對象時(shí)返回的頁面記錄作為對所述Q的上一數(shù)據(jù)區(qū)搜索時(shí)返回的頁面 記錄。
11. 根據(jù)權(quán)利要求10所述的方法,其特征在于,具有有序數(shù)組形式的主數(shù)據(jù)區(qū)或從數(shù) 據(jù)區(qū)包括用于存放數(shù)據(jù)記錄的數(shù)據(jù)記錄存儲區(qū)和用于存放頁面記錄的頁面記錄存儲區(qū), 所述根據(jù)所述頁面記錄所指的位于所述^的頁面搜索所述指定對象,包括: 根據(jù)所述頁面記錄所指的頁面搜索所述Q中的數(shù)據(jù)記錄存儲區(qū),以搜索所述指定對 象; 當(dāng)所述指定對象為指定鍵值時(shí),則在所述Li中的數(shù)據(jù)記錄存儲區(qū)中未搜索到所述指定 對象后,搜索所述Q的頁面記錄存儲區(qū)以搜索用于指向所述Q的下一數(shù)據(jù)區(qū)的符合所述第 一條件的頁面記錄; 當(dāng)所述指定對象為指定鍵值范圍時(shí),則搜索所述Q的頁面記錄存儲區(qū)以搜索用于指向 所述Q的下一數(shù)據(jù)區(qū)的符合所述第二條件的頁面記錄; 所述根據(jù)所述第i_l層存儲單元返回的頁面記錄搜索所述IV以搜索所述指定對象, 包括: 根據(jù)所述第i-1層存儲單元返回的頁面記錄搜索所述L/中的數(shù)據(jù)記錄存儲區(qū)以搜索 所述指定對象; 當(dāng)所述指定對象為指定鍵值時(shí),則在所述IV中的數(shù)據(jù)記錄存儲區(qū)中未搜索到所述指 定對象后,則搜索所述L/中的頁面記錄存儲區(qū)以搜索用于指向所述Li的符合所述第一條 件的頁面記錄; 當(dāng)所述指定對象為指定鍵值范圍時(shí),則搜索所述L/的頁面記錄存儲區(qū)以搜索用于指 向所述Q的符合所述第二條件的頁面記錄, 其中,所述Q的下一數(shù)據(jù)區(qū)為第i+1層的主數(shù)據(jù)區(qū)Li+1或第i+1層的從數(shù)據(jù)區(qū)Li+1'。
12. 根據(jù)權(quán)利要求8至11任一所述的方法,其特征在于,所述方法,還包括: 在所述第〇層存儲單元接收搜索請求,所述搜索請求中包括所述指定對象; 在接收到所述搜索請求之后,判斷所述第〇層存儲單元是否存在從數(shù)據(jù)區(qū)U' ; 若判斷結(jié)果為所述第〇層存儲單元存在從數(shù)據(jù)區(qū)U',則根據(jù)所述U'搜索所述指定對 象; 當(dāng)所述指定對象為指定鍵值時(shí),則在根據(jù)所述U'未搜索到所述指定對象后,則搜索所 述第〇層存儲單元的主數(shù)據(jù)區(qū)U以搜索所述指定對象; 當(dāng)所述指定對象為指定鍵值范圍時(shí),則在搜索完所述U'之后,搜索所述U以搜索所述 指定對象; 若判斷結(jié)果為所述第〇層存儲單元不存在從數(shù)據(jù)區(qū)U',則根據(jù)所述U搜索所述指定 對象。
13. -種索引機(jī)制合并裝置,其特征在于,用于包括有權(quán)利要求1所述的存儲裝置的設(shè) 備中,所述裝置,包括: 第一檢測模塊,用于在所述第i層存儲單元的主數(shù)據(jù)區(qū)Li達(dá)到容量上限后,檢測第i+1 層存儲單元的主數(shù)據(jù)區(qū)Li+1是否正在合并; 第二檢測模塊,用于在所述第一檢測模塊的檢測結(jié)果為所述Li+1正在合并時(shí),檢測所述 第i+1層存儲單元的從數(shù)據(jù)區(qū)Li+1'是否已經(jīng)達(dá)到容量上限; 第一合并模塊,用于在所述第二檢測模塊的檢測結(jié)果為所述Li+1'未達(dá)到容量上限時(shí), 將所述Q中的數(shù)據(jù)記錄添加至所述Li+1'中,將所述Li+1'中的所有頁面所對應(yīng)的頁面記錄 添加至所述Q中,合并后的所述Q為包含有用于指向合并后的所述Li+1'中的所有頁面所 對應(yīng)的頁面記錄的有序搜索樹, 其中,所述i為大于〇的自然數(shù)。
14. 根據(jù)權(quán)利要求13所述的裝置,其特征在于,所述裝置,還包括: 第一判斷模塊,用于判斷所述Li+1是否為有序搜索樹以及所述第i+1層存儲單元是否 存在從數(shù)據(jù)區(qū)Li+1' ; 第二合并模塊,用于在所述第一判斷模塊的判斷結(jié)果為所述Li+1為有序搜索樹且所述 第i+1層存儲單元存在Li+1'時(shí),將所述Q和所述Li+1'中的數(shù)據(jù)記錄添加至所述L i+1中,將 所述Li+1中的所有頁面所對應(yīng)的頁面記錄添加至所述Q中,合并后的所述Q為包含有用于 指向合并后的所述Li+1中的所有頁面所對應(yīng)的頁面記錄的有序搜索樹; 第一執(zhí)行模塊,用于在所述第一判斷模塊的判斷結(jié)果為所述Li+1不為有序搜索樹時(shí),執(zhí) 行所述檢測Li+1是否正在合并的步驟; 所述裝置,還包括: 第三合并模塊,用于在所述第一檢測模塊的檢測結(jié)果為所述Li+1未在合并時(shí),將所述Q 中的數(shù)據(jù)記錄添加至所述Li+1中,將所述Li+1中的所有頁面所對應(yīng)的頁面記錄添加至所述Q 中,合并后的所述Q為包含有用于指向合并后的所述Li+1中的所有頁面所對應(yīng)的頁面記錄 的有序搜索樹。
15. 根據(jù)權(quán)利要求14所述的裝置,其特征在于,所述裝置,還包括: 第二判斷模塊,用于當(dāng)所述Q合并為有序搜索樹后,判斷第i-1層存儲單元的主數(shù)據(jù) 區(qū)Lg是否正在合并以及所述第i層存儲單元是否存在從數(shù)據(jù)區(qū)L/ ; 第四合并模塊,用于在所述第二判斷模塊的判斷結(jié)果為所述Lg未在合并且所述第i 層存儲單元存在L/時(shí),將所述L/以及所述Lg中的數(shù)據(jù)記錄添加至所述Q中,將所述1^ 中的所有頁面所對應(yīng)的頁面記錄添加至所述Lh中,合并后的所述Lg為包含有用于指向 合并后的所述Q中的所有頁面所對應(yīng)的頁面記錄的有序搜索樹; 第五合并模塊,用于在所述第二判斷模塊的判斷結(jié)果為所述Lg未在合并且所述第i 層存儲單元不存在Q ',則將所述Lh中的數(shù)據(jù)記錄添加至所述Q中,將所述Q中的所有頁 面所對應(yīng)的頁面記錄添加至所述Lh中,合并后的所述Lg為包含有用于指向合并后的所 述Q中的所有頁面所對應(yīng)的頁面記錄的有序搜索樹。
16. 根據(jù)權(quán)利要求15所述的裝置,其特征在于,當(dāng)具有有序數(shù)組形式的所述L包括用 于存放頁面記錄的頁面記錄存儲區(qū)時(shí),所述第四合并模塊,用于: 將所述Q中的所有頁面所對應(yīng)的頁面記錄添加至所述Lh中的所述頁面記錄存儲區(qū) 中; 所述第五合并模塊,用于: 將所述Q中的所有頁面所對應(yīng)的頁面記錄添加至所述Lh中的所述頁面記錄存儲區(qū) 中。
17. 根據(jù)權(quán)利要求13至16中任一所述的裝置,其特征在于,所述裝置,還包括: 第三判斷模塊,用于在所述第二檢測模塊的檢測結(jié)果為所述Li+1'未達(dá)到容量上限時(shí), 在預(yù)定時(shí)間段后判斷所述Li+1是否合并完成; 第六合并模塊,用于在所述第三判斷模塊的判斷結(jié)果為在預(yù)定時(shí)間段后所述Li+1合并 完成時(shí),將所述Q以及所述Li+1'中的數(shù)據(jù)記錄添加至所述Li+1中,將所述Li+1中的所有頁面 所對應(yīng)的頁面記錄添加至所述Q中,合并后的所述Q為包含有用于指向合并后的所述Li+1中的所有頁面所對應(yīng)的頁面記錄的有序搜索樹; 第二執(zhí)行模塊,用于在所述第三判斷模塊的判斷結(jié)果為在預(yù)定時(shí)間段后所述Li+1未合 并完成時(shí),執(zhí)行所述將所述Li中的數(shù)據(jù)記錄添加至所述Li+1'中,將所述Li+1 '中的所有頁面 所對應(yīng)的頁面記錄添加至所述Q中步驟。
18. 根據(jù)權(quán)利要求13至16中任一所述的裝置,其特征在于,所述裝置,還包括: 第四判斷模塊,用于從所述第一檢測模塊檢測到所述Li+1正在合并起的所述預(yù)定時(shí)間 段后,判斷所述Li+1是否合并完成; 第三執(zhí)行模塊,用于在所述第四判斷模塊的判斷結(jié)果為所述Li+1未合并完成時(shí),執(zhí)行所 述檢測所述Li+1'是否已經(jīng)達(dá)到容量上限的步驟; 第七合并模塊,用于在所述第四判斷模塊的判斷結(jié)果為所述Li+1合并完成時(shí),將所述Q 以及所述Li+1'中的數(shù)據(jù)記錄添加至所述Li+1中,將所述Li+1中的所有頁面所對應(yīng)的頁面記 錄添加至所述Q中,合并后的所述Q為包含有用于指向合并后的所述Li+1中的所有頁面所 對應(yīng)的頁面記錄的有序搜索樹。
19. 一種搜索裝置,其特征在于,用于在包括有權(quán)利要求1所述的存儲裝置的設(shè)備中搜 索數(shù)據(jù),所述裝置,包括: 獲取模塊,用于獲取對所述第i層存儲單元的主數(shù)據(jù)區(qū)Q的上一數(shù)據(jù)區(qū)搜索指定對象 時(shí)返回的頁面記錄,所述上一數(shù)據(jù)區(qū)為第i_l層存儲單元的主數(shù)據(jù)區(qū)Lg或所述第i層存 儲單元的從數(shù)據(jù)區(qū)L/ ; 第一搜索模塊,用于當(dāng)所述Q為有序數(shù)組時(shí),根據(jù)所述獲取模塊獲取到的頁面記錄所 指的位于所述^的頁面搜索所述指定對象; 第二搜索模塊,用于當(dāng)所述Q為有序搜索樹時(shí),從所述Q的根節(jié)點(diǎn)所在頁面搜索用于 指向第i+1層存儲單元中符合條件的頁面記錄, 其中,所述i為大于〇的自然數(shù),所述指定對象為指定搜索的指定鍵值或指定搜索的指 定鍵值范圍。
20. 根據(jù)權(quán)利要求19所述的裝置,其特征在于,所述第二搜索模塊,包括: 第一搜索單元,用于當(dāng)所述指定對象為指定鍵值時(shí),則從所述k的根節(jié)點(diǎn)所在頁面搜 索用于指向第i+1層存儲單元中符合第一條件的頁面記錄; 第二搜索單元,用于當(dāng)所述指定對象為指定鍵值范圍時(shí),則從所述Q的根節(jié)點(diǎn)所在頁 面搜索用于指向第i+1層存儲單元中符合第二條件的頁面記錄, 其中,所述指定鍵值范圍包括從左邊界值至右邊界值的值,所述第一條件為不大于所 述指定鍵值的最大鍵值,所述第二條件為不大于所述左邊界值的最大鍵值,或,大于所述左 邊界值且不大于所述右邊界值的最小鍵值,所述左邊界值小于所述右邊界值。
21. 根據(jù)權(quán)利要求20所述的裝置,其特征在于,所述獲取模塊,包括: 獲取單元,用于獲取根據(jù)所述第i-1層存儲單元搜索所述指定對象時(shí)返回的頁面記 錄; 判斷單元,用于判斷所述第i層存儲單元是否存在所述L/ ; 搜索單元,用于在所述判斷單元的判斷結(jié)果為所述第i層存儲單元存在所述L/時(shí),根 據(jù)所述第i_l層存儲單元返回的頁面記錄搜索所述L/以搜索所述指定對象; 第一返回單元,用于當(dāng)所述指定對象為所述指定鍵值時(shí),則在所述搜索單元在所述L/ 中未搜索到所述指定對象時(shí),返回所述L/中用于指向所述"中符合所述第一條件的頁面 記錄; 第二返回單元,當(dāng)所述指定對象為所述指定鍵值范圍時(shí),則返回所述L/中用于指向所 述Q中符合所述第二條件的頁面記錄; 第一作為單元,用于將所述第一返回單元返回的符合所述第一條件或所述第二返回單 元返回的符合所述第二條件的頁面記錄作為對所述^的上一數(shù)據(jù)區(qū)搜索指定對象時(shí)返回 的頁面記錄; 第二作為單元,用于在所述判斷單元的判斷結(jié)果為所述第i層存儲單元不存在所述L/ 時(shí),將獲取的根據(jù)所述第i-1層存儲單元搜索所述指定對象時(shí)返回的頁面記錄作為對所述 Q的上一數(shù)據(jù)區(qū)搜索時(shí)返回的頁面記錄。
22. 根據(jù)權(quán)利要求21所述的裝置,其特征在于,具有有序數(shù)組形式的主數(shù)據(jù)區(qū)或從數(shù) 據(jù)區(qū)包括用于存放數(shù)據(jù)記錄的數(shù)據(jù)記錄存儲區(qū)和用于存放頁面記錄的頁面記錄存儲區(qū), 所述第一搜索模塊,包括: 第三搜索單元,用于根據(jù)所述獲取模塊獲取到的頁面記錄所指的頁面搜索所述1^中的 數(shù)據(jù)記錄存儲區(qū),以搜索所述指定對象; 第四搜索單元,用于當(dāng)所述指定對象為指定鍵值時(shí),則在所述第三搜索單元在所述Q 中的數(shù)據(jù)記錄存儲區(qū)中未搜索到所述指定對象后,搜索所述Q的頁面記錄存儲區(qū)以搜索用 于指向所述Q的下一數(shù)據(jù)區(qū)的符合所述第一條件的頁面記錄; 第五搜索單元,用于當(dāng)所述指定對象為指定鍵值范圍時(shí),則搜索所述Q的頁面記錄存 儲區(qū)以搜索用于指向所述k的下一數(shù)據(jù)區(qū)的符合所述第二條件的頁面記錄; 所述搜索單元,包括: 第一搜索子單元,用于根據(jù)所述第i-1層存儲單元返回的頁面記錄搜索所述IV中的 數(shù)據(jù)記錄存儲區(qū)以搜索所述指定對象; 第二搜索子單元,用于當(dāng)所述指定對象為指定鍵值時(shí),則在所述第一搜索子單元在所 述L/中的數(shù)據(jù)記錄存儲區(qū)中未搜索到所述指定對象后,搜索所述L/中的頁面記錄存儲區(qū) 以搜索用于指向所述Q的符合所述第一條件的頁面記錄; 第三搜索子單元,用于當(dāng)所述指定對象為指定鍵值范圍時(shí),則搜索所述L/的頁面記錄 存儲區(qū)以搜索用于指向所述Q的符合所述第二條件的頁面記錄, 其中,所述Q的下一數(shù)據(jù)區(qū)第i+1層的主數(shù)據(jù)區(qū)Li+1或第i+1層的從數(shù)據(jù)區(qū)Li+1'。
23. 根據(jù)權(quán)利要求20至22任一所述的裝置,其特征在于,所述裝置,還包括: 接收模塊,用于在所述第0層存儲單元接收搜索請求,所述搜索請求中包括所述指定 對象; 第五判斷模塊,用于在所述接收模塊接收到所述搜索請求之后,判斷所述第0層存儲 單元是否存在從數(shù)據(jù)區(qū)IV ; 第三搜索模塊,用于在所述第五判斷模塊的判斷結(jié)果為所述第0層存儲單元存在從數(shù) 據(jù)區(qū)U'時(shí),根據(jù)所述U'搜索所述指定對象; 第四搜索模塊,用于當(dāng)所述指定對象為指定鍵值時(shí),則在所述第三搜索模塊根據(jù)所述 IV未搜索到所述指定對象后,則搜索所述第0層存儲單元的主數(shù)據(jù)區(qū)U以搜索所述指定 對象; 第五搜索模塊,用于當(dāng)所述指定對象為指定鍵值范圍時(shí),則在搜索完所述U'之后,搜 索所述U以搜索所述指定對象; 第六搜索模塊,用于在所述第五判斷模塊的判斷結(jié)果為所述第0層存儲單元不存在從 數(shù)據(jù)區(qū)U'時(shí),根據(jù)所述U搜索所述指定對象。
【文檔編號】G06F17/30GK104424204SQ201310367741
【公開日】2015年3月18日 申請日期:2013年8月21日 優(yōu)先權(quán)日:2013年8月21日
【發(fā)明者】朱俊華, 楊俊 , 羅瓊, 王偉松 申請人:華為技術(shù)有限公司