亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

數(shù)據(jù)檢索裝置、數(shù)據(jù)存儲(chǔ)方法和數(shù)據(jù)檢索方法

文檔序號(hào):6526207閱讀:228來(lái)源:國(guó)知局
數(shù)據(jù)檢索裝置、數(shù)據(jù)存儲(chǔ)方法和數(shù)據(jù)檢索方法
【專利摘要】本發(fā)明公開(kāi)了一種數(shù)據(jù)檢索裝置、數(shù)據(jù)存儲(chǔ)方法和數(shù)據(jù)檢索方法。計(jì)算機(jī)(1)執(zhí)行的處理包括:將數(shù)據(jù)集劃分為多個(gè)數(shù)據(jù)集;確定用于數(shù)據(jù)集的哈希函數(shù);生成用于指定哈希函數(shù)的哈希系數(shù)值信息(20)和在哈希系數(shù)值與數(shù)據(jù)集之間的對(duì)應(yīng)關(guān)系信息(21);以及生成用于數(shù)據(jù)集的哈希信息(22)。在哈希函數(shù)確定中,基于數(shù)據(jù)集的數(shù)據(jù)的鍵、利用候選哈希函數(shù)來(lái)計(jì)算哈希值,并且將候選哈希函數(shù)確定為如下數(shù)據(jù)集的哈希函數(shù):關(guān)于該數(shù)據(jù)集,判定了所有數(shù)據(jù)能夠被存儲(chǔ)到基于哈希值的第一地址或與第一地址鄰接的第二地址。在哈希信息生成中,通過(guò)將數(shù)據(jù)和鍵存儲(chǔ)到第一或第二地址中來(lái)生成用于數(shù)據(jù)集的哈希信息。
【專利說(shuō)明】數(shù)據(jù)檢索裝置、數(shù)據(jù)存儲(chǔ)方法和數(shù)據(jù)檢索方法
【技術(shù)領(lǐng)域】
[0001]本文中論述的實(shí)施方式涉及數(shù)據(jù)檢索裝置、數(shù)據(jù)存儲(chǔ)方法以及數(shù)據(jù)檢索方法。
【背景技術(shù)】
[0002]常規(guī)地,作為數(shù)據(jù)檢索方法之一,利用哈希表的數(shù)據(jù)檢索方法是可用的。
[0003]這里,哈希表是表類型數(shù)據(jù)結(jié)構(gòu)的一種類型,其利用哈希函數(shù)作為確定要在其中存儲(chǔ)數(shù)據(jù)的表的位置的措施或者作為確定要從其獲取數(shù)據(jù)的表的位置的措施。
[0004]與其它數(shù)據(jù)檢索方法(例如,二叉樹(shù)搜索方法)相比,利用哈希表的數(shù)據(jù)檢索方法的優(yōu)點(diǎn)在于數(shù)據(jù)檢索效率較高,即,對(duì)檢索目標(biāo)數(shù)據(jù)進(jìn)行檢索或判定不存在檢索目標(biāo)數(shù)據(jù)所需的時(shí)間較短。
[0005]另一方面,利用哈希表的數(shù)據(jù)檢索方法使用通過(guò)如下方式生成的哈希表:將數(shù)據(jù)存儲(chǔ)到基于通過(guò)哈希函數(shù)計(jì)算的哈希值而指定的存儲(chǔ)位置處。通過(guò)哈希函數(shù)計(jì)算的哈希值可能在不同數(shù)據(jù)間是相等的,并且在此情況下,取決于將數(shù)據(jù)存儲(chǔ)到哈希表中以及檢索數(shù)據(jù)的方式,數(shù)據(jù)檢索的效率降低。
[0006]另一方面,利用保證在存儲(chǔ)到哈希表中的所有數(shù)據(jù)間哈希值彼此不重疊的完美哈希函數(shù)似乎是可能的構(gòu)思。當(dāng)使用利用完美哈希函數(shù)生成的哈希表時(shí),由于不同數(shù)據(jù)間存儲(chǔ)位置彼此不重疊,所以能夠在數(shù)據(jù)檢索時(shí)唯一地指定存儲(chǔ)位置,數(shù)據(jù)檢索效率在理論上是最高的并且保證了最高的數(shù)據(jù)檢索效率。
[0007]然而,確定用于給定數(shù)據(jù)集的完美哈希函數(shù)是不容易的。具體地,不容易確定用于大規(guī)模數(shù)據(jù)集的完美哈希函數(shù)。例如,在通過(guò)蠻力法(brute force method)計(jì)算完美哈希函數(shù)的情況下,計(jì)算成本相對(duì)于數(shù)據(jù)數(shù)量的增加呈指數(shù)增加。
[0008]另一方面,作為用于抑制在計(jì)算完美哈希函數(shù)時(shí)的計(jì)算成本的方法,CHD算法是可用的,其中大規(guī)模數(shù)據(jù)集被劃分成多個(gè)小規(guī)模數(shù)據(jù)集,并且針對(duì)多個(gè)小規(guī)模數(shù)據(jù)集中的每個(gè)數(shù)據(jù)集來(lái)計(jì)算單獨(dú)的完美哈希函數(shù)。

【發(fā)明內(nèi)容】

[0009]順便提及,在上述CHD算法中,作為與多個(gè)小規(guī)模數(shù)據(jù)集中的每個(gè)數(shù)據(jù)集相對(duì)應(yīng)的單獨(dú)的完美哈希函數(shù),確定由兩個(gè)哈希函數(shù)fl(x)和f2(x)以及兩個(gè)算子α和β —即,表達(dá)式χ=Π (x) + a F2 (X) + β——定義的完美哈希函數(shù),并且利用該完美哈希函數(shù)計(jì)算哈希值X。然后,基于通過(guò)完美哈希函數(shù)計(jì)算的哈希值來(lái)存儲(chǔ)數(shù)據(jù)以生成哈希表。然而,需要很多時(shí)間來(lái)確定完美哈希函數(shù)、計(jì)算哈希值以及生成哈希表。因此,需要時(shí)間來(lái)存儲(chǔ)數(shù)據(jù)并且數(shù)據(jù)存儲(chǔ)速度降低。
[0010]另外,在上述CHD算法中,與多個(gè)小規(guī)模數(shù)據(jù)集相對(duì)應(yīng)的各個(gè)完美哈希函數(shù)的算子α和β被壓縮并保留,并且在數(shù)據(jù)檢索時(shí)所壓縮的算子α和β被解壓縮以用作原始算子。然后,通過(guò)上述完美哈希函數(shù)利用原始算子來(lái)計(jì)算哈希值,并且利用所計(jì)算的哈希值來(lái)檢索數(shù)據(jù)。然而,需要時(shí)間來(lái)計(jì)算哈希值。因此,需要時(shí)間來(lái)檢索數(shù)據(jù)并且數(shù)據(jù)檢索速度較低。
[0011]因此,期望提高數(shù)據(jù)存儲(chǔ)速度和數(shù)據(jù)檢索速度,同時(shí)盡可能地抑制數(shù)據(jù)檢索效率的降低。
[0012]根據(jù)實(shí)施方式的方面,數(shù)據(jù)檢索裝置包括:數(shù)據(jù)劃分單元,其將數(shù)據(jù)集劃分為多個(gè)數(shù)據(jù)集;哈希函數(shù)確定單元,其確定與多個(gè)數(shù)據(jù)集相對(duì)應(yīng)的多個(gè)哈希函數(shù);哈希系數(shù)值信息生成單元,其生成包括指定多個(gè)哈希函數(shù)的多個(gè)哈希系數(shù)的值的哈希系數(shù)值信息;對(duì)應(yīng)關(guān)系信息生成單元,其生成將指定多個(gè)哈希函數(shù)的多個(gè)哈希系數(shù)的值與多個(gè)數(shù)據(jù)集彼此關(guān)聯(lián)的對(duì)應(yīng)關(guān)系信息;以及哈希信息生成單元,其生成與多個(gè)數(shù)據(jù)集相對(duì)應(yīng)的多個(gè)哈希信息;其中,哈希函數(shù)確定單元執(zhí)行以下操作:針對(duì)數(shù)據(jù)集中的每個(gè)數(shù)據(jù)集,基于包括在該數(shù)據(jù)集中的多個(gè)數(shù)據(jù)的鍵,利用候選哈希函數(shù)來(lái)計(jì)算哈希值,并且判定所述多個(gè)數(shù)據(jù)的全部是否能夠被存儲(chǔ)到基于哈希值指定的第一存儲(chǔ)位置或與第一存儲(chǔ)位置鄰接的第二存儲(chǔ)位置;以及將所述候選哈希函數(shù)確定為與這樣的數(shù)據(jù)集相對(duì)應(yīng)的哈希函數(shù):關(guān)于該數(shù)據(jù)集,判定了所述多個(gè)數(shù)據(jù)的全部能夠被存儲(chǔ)到第一存儲(chǔ)位置或第二存儲(chǔ)位置;并且,哈希信息生成單元通過(guò)以下方式生成用于該數(shù)據(jù)集的哈希信息:針對(duì)數(shù)據(jù)集中的每個(gè)數(shù)據(jù)集,將數(shù)據(jù)和鍵存儲(chǔ)到基于根據(jù)所述多個(gè)數(shù)據(jù)的鍵,利用與該數(shù)據(jù)集相對(duì)應(yīng)的哈希函數(shù)計(jì)算的哈希值指定的第一存儲(chǔ)位置或者第二存儲(chǔ)位置。
[0013]因此,實(shí)施方式的該方面的優(yōu)點(diǎn)在于能夠提高數(shù)據(jù)存儲(chǔ)速度和數(shù)據(jù)檢索速度,同時(shí)盡可能地抑制數(shù)據(jù)檢索效率的降低。
【專利附圖】

【附圖說(shuō)明】
[0014]圖1是描繪根據(jù)實(shí)施方式的數(shù)據(jù)檢索裝置的配置的視圖;
[0015]圖2是描繪包括根據(jù)本實(shí)施方式的數(shù)據(jù)檢索裝置的信息處理裝置的硬件配置的視圖;
[0016]圖3至圖5是示出由設(shè)置在根據(jù)本實(shí)施方式的數(shù)據(jù)檢索裝置中的數(shù)據(jù)存儲(chǔ)處理單元(數(shù)據(jù)存儲(chǔ)程序)執(zhí)行的處理(數(shù)據(jù)存儲(chǔ)方法)的流程圖;
[0017]圖6是示出設(shè)置在根據(jù)本實(shí)施方式的數(shù)據(jù)檢索裝置中的哈希函數(shù)索引表(對(duì)應(yīng)關(guān)系表)和哈希函數(shù)實(shí)體管理表(哈希系數(shù)值表)的示意圖;
[0018]圖7至圖9是示出由設(shè)置在根據(jù)本實(shí)施方式的數(shù)據(jù)檢索裝置中的數(shù)據(jù)存儲(chǔ)處理單元(數(shù)據(jù)存儲(chǔ)程序)執(zhí)行的處理(數(shù)據(jù)存儲(chǔ)方法)的流程圖;
[0019]圖10是示出應(yīng)用根據(jù)本實(shí)施方式的數(shù)據(jù)檢索裝置的雇員ID檢索系統(tǒng)中的存儲(chǔ)目標(biāo)的數(shù)據(jù)集的視圖;
[0020]圖11是示出應(yīng)用根據(jù)本實(shí)施方式的數(shù)據(jù)檢索裝置的雇員ID檢索系統(tǒng)中的檢索目標(biāo)數(shù)據(jù)集中的每個(gè)數(shù)據(jù)的CRC32值,以及在CRC32值除以“5”(小規(guī)模數(shù)據(jù)集的數(shù)量)的情況下的余數(shù)的值的視圖;
[0021]圖12是示出將應(yīng)用根據(jù)本實(shí)施方式的數(shù)據(jù)檢索裝置的雇員ID檢索系統(tǒng)中的檢索目標(biāo)的數(shù)據(jù)集劃分為多個(gè)小規(guī)模數(shù)據(jù)集的情況下的結(jié)果的視圖;
[0022]圖13是示出對(duì)應(yīng)用根據(jù)本實(shí)施方式的數(shù)據(jù)檢索裝置的雇員ID檢索系統(tǒng)中的小規(guī)模數(shù)據(jù)集中的每個(gè)數(shù)據(jù)集分配哈希函數(shù)的結(jié)果的視圖;
[0023]圖14是示出應(yīng)用根據(jù)本實(shí)施方式的數(shù)據(jù)檢索裝置的雇員ID檢索系統(tǒng)中的哈希函數(shù)實(shí)體管理表(哈希系數(shù)值表)的視圖;
[0024]圖15是示出應(yīng)用根據(jù)本實(shí)施方式的數(shù)據(jù)檢索裝置的雇員ID檢索系統(tǒng)中的哈希函數(shù)索引表(對(duì)應(yīng)關(guān)系表)的視圖;
[0025]圖16是示出將應(yīng)用根據(jù)本實(shí)施方式的數(shù)據(jù)檢索裝置的雇員ID檢索系統(tǒng)的數(shù)據(jù)集號(hào)碼“O”中包括的每個(gè)數(shù)據(jù)的哈希值除以“5”(哈希表的大小)的情況下的余數(shù)的值的視圖;
[0026]圖17是示出將應(yīng)用根據(jù)本實(shí)施方式的數(shù)據(jù)檢索裝置的雇員ID檢索系統(tǒng)的數(shù)據(jù)集號(hào)碼“O”中包括的每個(gè)數(shù)據(jù)存儲(chǔ)到與數(shù)據(jù)集號(hào)碼“O”相對(duì)應(yīng)的哈希表中的情況下的結(jié)果的視圖;
[0027]圖18是示出將應(yīng)用根據(jù)本實(shí)施方式的數(shù)據(jù)檢索裝置的雇員ID檢索系統(tǒng)的數(shù)據(jù)集號(hào)碼“I”中包括的每個(gè)數(shù)據(jù)的哈希值除以“5”(哈希表的大小)的情況下的余數(shù)的值的視圖;
[0028]圖19是示出將應(yīng)用根據(jù)本實(shí)施方式的數(shù)據(jù)檢索裝置的雇員ID檢索系統(tǒng)的數(shù)據(jù)集號(hào)碼“ I”中包括的每個(gè)數(shù)據(jù)存儲(chǔ)到與數(shù)據(jù)集號(hào)碼“ I”相對(duì)應(yīng)的哈希表中的情況下的結(jié)果的視圖;
[0029]圖20是示出將應(yīng)用根據(jù)本實(shí)施方式的數(shù)據(jù)檢索裝置的雇員ID檢索系統(tǒng)的數(shù)據(jù)集號(hào)碼“2”中包括的每個(gè)數(shù)據(jù)的哈希值除以“5”(哈希表的大小)的情況下的余數(shù)的值的視圖;
[0030]圖21是示出將應(yīng)用根據(jù)本實(shí)施方式的數(shù)據(jù)檢索裝置的雇員ID檢索系統(tǒng)的數(shù)據(jù)集號(hào)碼“2”中包括的每個(gè)數(shù)據(jù)存儲(chǔ)到與數(shù)據(jù)集號(hào)碼“2”相對(duì)應(yīng)的哈希表中的情況下的結(jié)果的視圖;
[0031]圖22是示出將應(yīng)用根據(jù)本實(shí)施方式的數(shù)據(jù)檢索裝置的雇員ID檢索系統(tǒng)的數(shù)據(jù)集號(hào)碼“3”中包括的每個(gè)數(shù)據(jù)的哈希值除以“5”(哈希表的大小)的情況下的余數(shù)的值的視圖;
[0032]圖23是示出將應(yīng)用根據(jù)本實(shí)施方式的數(shù)據(jù)檢索裝置的雇員ID檢索系統(tǒng)的數(shù)據(jù)集號(hào)碼“3”中包括的每個(gè)數(shù)據(jù)存儲(chǔ)到與數(shù)據(jù)集號(hào)碼“3”相對(duì)應(yīng)的哈希表中的情況下的結(jié)果的視圖;
[0033]圖24是示出將應(yīng)用根據(jù)本實(shí)施方式的數(shù)據(jù)檢索裝置的雇員ID檢索系統(tǒng)的數(shù)據(jù)集號(hào)碼“4”中包括的每個(gè)數(shù)據(jù)的哈希值除以“5”(哈希表的大小)的情況下的余數(shù)的值的視圖;
[0034]圖25是示出將應(yīng)用根據(jù)本實(shí)施方式的數(shù)據(jù)檢索裝置的雇員ID檢索系統(tǒng)的數(shù)據(jù)集號(hào)碼“4”中包括的每個(gè)數(shù)據(jù)存儲(chǔ)到與數(shù)據(jù)集號(hào)碼“4”相對(duì)應(yīng)的哈希表中的情況下的結(jié)果的視圖;
[0035]圖26是示出由應(yīng)用根據(jù)本實(shí)施方式的數(shù)據(jù)檢索裝置的雇員ID檢索系統(tǒng)中的數(shù)據(jù)檢索處理單元(數(shù)據(jù)檢索程序)執(zhí)行的處理(數(shù)據(jù)檢索方法)的流程圖;
[0036]圖27是示出應(yīng)用根據(jù)本實(shí)施方式的數(shù)據(jù)檢索裝置的字典型數(shù)據(jù)壓縮系統(tǒng)中的存儲(chǔ)目標(biāo)的數(shù)據(jù)集的視圖;
[0037]圖28是示出應(yīng)用根據(jù)本實(shí)施方式的數(shù)據(jù)檢索裝置的字典型數(shù)據(jù)壓縮系統(tǒng)的存儲(chǔ)目標(biāo)的數(shù)據(jù)集中的每個(gè)數(shù)據(jù)的CRC32值,以及在將CRC32值除以“4”(小規(guī)模數(shù)據(jù)集的數(shù)量)的情況下的余數(shù)值的視圖;
[0038]圖29是示出將應(yīng)用根據(jù)本實(shí)施方式的數(shù)據(jù)檢索裝置的字典型數(shù)據(jù)壓縮系統(tǒng)中的存儲(chǔ)目標(biāo)數(shù)據(jù)集劃分為多個(gè)小規(guī)模數(shù)據(jù)集的情況下的結(jié)果的視圖;
[0039]圖30是示出應(yīng)用根據(jù)本實(shí)施方式的數(shù)據(jù)檢索裝置的字典型數(shù)據(jù)壓縮系統(tǒng)的小規(guī)模數(shù)據(jù)集中的每個(gè)數(shù)據(jù)集的哈希函數(shù)的分配結(jié)果的視圖;
[0040]圖31是示出應(yīng)用根據(jù)本實(shí)施方式的數(shù)據(jù)檢索裝置的字典型數(shù)據(jù)壓縮系統(tǒng)中的哈希函數(shù)實(shí)體管理表(哈希系數(shù)值表)的視圖;
[0041]圖32是示出應(yīng)用根據(jù)本實(shí)施方式的數(shù)據(jù)檢索裝置的字典型數(shù)據(jù)壓縮系統(tǒng)中的哈希函數(shù)索引表(對(duì)應(yīng)關(guān)系表)的視圖;
[0042]圖33是示出將應(yīng)用根據(jù)本實(shí)施方式的數(shù)據(jù)檢索裝置的字典型數(shù)據(jù)壓縮系統(tǒng)的數(shù)據(jù)集號(hào)碼“O”中包括的每個(gè)數(shù)據(jù)的哈希值除以“4”(哈希表的大小)的情況下的余數(shù)的值的視圖;
[0043]圖34是示出將應(yīng)用根據(jù)本實(shí)施方式的數(shù)據(jù)檢索裝置的字典型數(shù)據(jù)壓縮系統(tǒng)的數(shù)據(jù)集號(hào)碼“O”中包括的每個(gè)數(shù)據(jù)存儲(chǔ)到與數(shù)據(jù)集號(hào)碼“O”相對(duì)應(yīng)的哈希表中的情況下的結(jié)果的視圖;
[0044]圖35是示出將應(yīng)用根據(jù)本實(shí)施方式的數(shù)據(jù)檢索裝置的字典型數(shù)據(jù)壓縮系統(tǒng)的數(shù)據(jù)集號(hào)碼“I”中包括的每個(gè)數(shù)據(jù)的哈希值除以“5”(哈希表的大小)的情況下的余數(shù)的值的視圖;
[0045]圖36是示出將應(yīng)用根據(jù)本實(shí)施方式的數(shù)據(jù)檢索裝置的字典型數(shù)據(jù)壓縮系統(tǒng)的數(shù)據(jù)集號(hào)碼“ I”中包括的每個(gè)數(shù)據(jù)存儲(chǔ)到與數(shù)據(jù)集號(hào)碼“ I”相對(duì)應(yīng)的哈希表中的情況下的結(jié)果的視圖;
[0046]圖37是示出將應(yīng)用根據(jù)本實(shí)施方式的數(shù)據(jù)檢索裝置的字典型數(shù)據(jù)壓縮系統(tǒng)的數(shù)據(jù)集號(hào)碼“2”中包括的每個(gè)數(shù)據(jù)的哈希值除以“4”(哈希表的大小)的情況下的余數(shù)的值的視圖;
[0047]圖38是示出將應(yīng)用根據(jù)本實(shí)施方式的數(shù)據(jù)檢索裝置的字典型數(shù)據(jù)壓縮系統(tǒng)的數(shù)據(jù)集號(hào)碼“2”中包括的每個(gè)數(shù)據(jù)存儲(chǔ)到與數(shù)據(jù)集號(hào)碼“2”相對(duì)應(yīng)的哈希表中的情況下的結(jié)果的視圖;
[0048]圖39是示出將應(yīng)用根據(jù)本實(shí)施方式的數(shù)據(jù)檢索裝置的字典型數(shù)據(jù)壓縮系統(tǒng)的數(shù)據(jù)集號(hào)碼“3”中包括的每個(gè)數(shù)據(jù)的哈希值除以“5”(哈希表的大小)的情況下的余數(shù)的值的視圖;
[0049]圖40是示出將應(yīng)用根據(jù)本實(shí)施方式的數(shù)據(jù)檢索裝置的字典型數(shù)據(jù)壓縮系統(tǒng)的數(shù)據(jù)集號(hào)碼“3”中包括的每個(gè)數(shù)據(jù)存儲(chǔ)到與數(shù)據(jù)集號(hào)碼“3”相對(duì)應(yīng)的哈希表中的情況下的結(jié)果的視圖;
[0050]圖41是由應(yīng)用根據(jù)本實(shí)施方式的數(shù)據(jù)檢索裝置的字典型數(shù)據(jù)壓縮系統(tǒng)中的數(shù)據(jù)檢索處理單元(數(shù)據(jù)檢索程序)執(zhí)行的處理(數(shù)據(jù)檢索方法)的流程圖;以及
[0051]圖42是包括由應(yīng)用根據(jù)本實(shí)施方式的數(shù)據(jù)檢索裝置的字典型數(shù)據(jù)壓縮系統(tǒng)中的數(shù)據(jù)檢索處理單元(數(shù)據(jù)檢索程序)執(zhí)行的處理(數(shù)據(jù)檢索方法)的數(shù)據(jù)壓縮處理的流程圖。
【具體實(shí)施方式】[0052]在下文中,將參照?qǐng)D1至圖42的圖來(lái)描述根據(jù)本公開(kāi)內(nèi)容的實(shí)施方式的數(shù)據(jù)存儲(chǔ)程序、數(shù)據(jù)檢索程序、數(shù)據(jù)檢索裝置、數(shù)據(jù)存儲(chǔ)方法以及數(shù)據(jù)檢索方法。
[0053]根據(jù)本實(shí)施方式的數(shù)據(jù)檢索裝置被設(shè)置在信息處理裝置如服務(wù)器中,并且用于執(zhí)行數(shù)據(jù)的存儲(chǔ)和檢索。
[0054]首先,參照?qǐng)D2描述包括本數(shù)據(jù)檢索裝置的信息處理裝置的硬件配置。
[0055]可以利用計(jì)算機(jī)如服務(wù)器來(lái)實(shí)現(xiàn)包括本數(shù)據(jù)檢索裝置的信息處理裝置,并且其硬件配置包括CPU (中央處理單元)102、主存儲(chǔ)器101、通信控制單元109、輸入裝置106、顯示控制單元103、顯示裝置104、存儲(chǔ)裝置105以及用于例如便攜式記錄介質(zhì)108的驅(qū)動(dòng)裝置107,如圖2所示。所提及的組件通過(guò)總線110彼此連接。注意,本裝置的硬件配置不限于此。
[0056]這里,CPU102控制整個(gè)計(jì)算機(jī),將程序讀出到主存儲(chǔ)器101中,并且執(zhí)行該程序以執(zhí)行包括數(shù)據(jù)檢索裝置的信息處理裝置所需的處理。此外,CPU102中包括可高速訪問(wèn)的高速緩沖存儲(chǔ)器111,高速緩沖存儲(chǔ)器111的容量小于主存儲(chǔ)器101。作為高速緩沖存儲(chǔ)器111,例如,使用SRAM。在進(jìn)行程序等的執(zhí)行時(shí),高速緩沖存儲(chǔ)器111暫時(shí)存儲(chǔ)頻繁訪問(wèn)的數(shù)據(jù)。其在下文中被稱為CPU高速緩存或CPU高速緩沖存儲(chǔ)器。
[0057]在進(jìn)行程序等的執(zhí)行時(shí),主存儲(chǔ)器101中臨時(shí)存儲(chǔ)程序或數(shù)據(jù)。作為主存儲(chǔ)器101,例如,使用DRAM。
[0058]通信控制單元109 (通信接口)用于通過(guò)網(wǎng)絡(luò)(如局域網(wǎng)(LAN)或因特網(wǎng))與不同的裝置通信。通信控制單元109可以最初被并入計(jì)算機(jī)中,或者可以后來(lái)附接至計(jì)算機(jī)的NIC (網(wǎng)絡(luò)接口卡)。
[0059]輸入裝置106為定點(diǎn)設(shè)備,如鼠標(biāo)或鍵盤(pán)。
[0060]顯示裝置104為顯示單元,如液晶顯示單元。
[0061]顯示控制單元103執(zhí)行控制以使顯示裝置104顯示例如處理結(jié)果等。
[0062]要注意,輸入裝置106和顯示裝置104可以是設(shè)置在連接到網(wǎng)絡(luò)的不同計(jì)算機(jī)中的輸入裝置和輸出裝置。
[0063]存儲(chǔ)裝置105例如是硬盤(pán)驅(qū)動(dòng)器(HDD),并且在存儲(chǔ)裝置105中存儲(chǔ)各種程序和各種數(shù)據(jù)。在本實(shí)施方式中,在存儲(chǔ)裝置105中存儲(chǔ)下文中描述的數(shù)據(jù)存儲(chǔ)程序和數(shù)據(jù)檢索程序并且存儲(chǔ)在下文中描述的大規(guī)模數(shù)據(jù)集。要注意,例如,將ROM (只讀存儲(chǔ)器)與存儲(chǔ)裝置105單獨(dú)地設(shè)置,并且可以在ROM中存儲(chǔ)各種程序和各種數(shù)據(jù)。
[0064]設(shè)置驅(qū)動(dòng)裝置107以用于訪問(wèn)便攜式記錄介質(zhì)108 (例如,光盤(pán)或磁光盤(pán))的存儲(chǔ)內(nèi)容。
[0065]在具有如上所述的硬件配置的計(jì)算機(jī)中,CPU102將存儲(chǔ)在存儲(chǔ)裝置105中的數(shù)據(jù)存儲(chǔ)程序或數(shù)據(jù)檢索程序讀出到主存儲(chǔ)器101中,并且執(zhí)行所讀出的程序以實(shí)現(xiàn)本數(shù)據(jù)檢索裝置的各種功能,即,諸如數(shù)據(jù)存儲(chǔ)處理功能、數(shù)據(jù)檢索處理功能、哈希系數(shù)值表存儲(chǔ)功能、對(duì)應(yīng)關(guān)系表存儲(chǔ)功能以及哈希表存儲(chǔ)功能的功能。
[0066]為此,如圖1所示,本數(shù)據(jù)檢索裝置I包括數(shù)據(jù)存儲(chǔ)處理單元2、數(shù)據(jù)檢索處理單元
3、哈希系數(shù)值表存儲(chǔ)單元4、對(duì)應(yīng)關(guān)系表存儲(chǔ)單元5以及哈希表存儲(chǔ)單元6。
[0067]這里,數(shù)據(jù)存儲(chǔ)處理單元2包括數(shù)據(jù)劃分單元7、哈希函數(shù)確定單元8、哈希系數(shù)值表生成單元9、對(duì)應(yīng)關(guān)系表生成單元10以及哈希表生成單元11。[0068]數(shù)據(jù)劃分單元7將數(shù)據(jù)集劃分為多個(gè)數(shù)據(jù)集。
[0069]哈希函數(shù)確定單元8確定分別用于多個(gè)數(shù)據(jù)集的多個(gè)哈希函數(shù)。具體地,針對(duì)數(shù)據(jù)集中的每個(gè),哈希函數(shù)確定單元8基于包括在該數(shù)據(jù)集中的多個(gè)數(shù)據(jù)的鍵,通過(guò)候選哈希函數(shù)來(lái)計(jì)算哈希值,并且判定該多個(gè)數(shù)據(jù)的全部是否能夠被存儲(chǔ)到基于哈希值指定的第一存儲(chǔ)位置或與第一存儲(chǔ)位置鄰接的第二存儲(chǔ)位置。然后,哈希函數(shù)確定單元8將候選哈希函數(shù)確定為用于如下數(shù)據(jù)集的哈希函數(shù):關(guān)于該數(shù)據(jù)集,判定了多個(gè)數(shù)據(jù)的全部能夠存儲(chǔ)到第一存儲(chǔ)位置或第二存儲(chǔ)位置。這里,哈希函數(shù)確定單元8優(yōu)選地使用如下哈希函數(shù)作為候選函數(shù):在數(shù)據(jù)的鍵串(鍵字符串)Ix1, x2) X3,, x?}被表示為xK (I ^ η)的情況下,該哈希函數(shù)由哈希系數(shù)R(1 ^ R ^ 256)的值指定并且包括在由fR (Xk) =f K(Xim) X R+XK [其中fR (X。) =Rtl (Rci是初始值)]表示的函數(shù)組中。此外,哈希函數(shù)確定單元8優(yōu)選地在發(fā)現(xiàn)如下兩個(gè)或更多個(gè)數(shù)據(jù)集時(shí)將候選函數(shù)值作為用于該兩個(gè)或更多個(gè)數(shù)據(jù)集中的每個(gè)數(shù)據(jù)集的哈希函數(shù):關(guān)于該兩個(gè)或更多個(gè)數(shù)據(jù)集,判定了多個(gè)數(shù)據(jù)的全部能夠存儲(chǔ)到第一存儲(chǔ)位置或第二存儲(chǔ)位置。此外,哈希函數(shù)確定單元8優(yōu)選地確定16個(gè)或32個(gè)哈希函數(shù)作為分別用于多個(gè)數(shù)據(jù)集的多個(gè)哈希函數(shù)。
[0070]哈希系數(shù)值表生成單元9生成哈希系數(shù)值表20 (參照?qǐng)D6),以用于在其中存儲(chǔ)用于指定多個(gè)哈希函數(shù)的多個(gè)哈希系數(shù)的值。這里,哈希系數(shù)值表生成單元9將用于分別指定多個(gè)哈希函數(shù)的多個(gè)哈希系數(shù)的值存儲(chǔ)到CPU高速緩沖存儲(chǔ)器111中,以在CPU高速緩沖存儲(chǔ)器111中生成哈希系數(shù)值表20 (參照?qǐng)D6)。因此,哈希系數(shù)值表20 (參照?qǐng)D6)被保留在CPU高速緩沖存儲(chǔ)器111中,并且在CPU高速緩沖存儲(chǔ)器111中生成存儲(chǔ)哈希系數(shù)值表20 (參照?qǐng)D6)的哈希系數(shù)值表存儲(chǔ)單元4。以此方式,哈希系數(shù)值表生成單元9優(yōu)選地生成具有能夠保留在CPU高速緩沖存儲(chǔ)器111中的信息量的哈希系數(shù)值表20 (參照?qǐng)D6)。要注意,由于哈希系數(shù)的值是哈希函數(shù)的實(shí)體,所以哈希系數(shù)值表20 (參照?qǐng)D6)在下文中也被稱為哈希函數(shù)實(shí)體管理表或哈希系數(shù)值信息。此外,哈希系數(shù)值表生成單元9在下文中也被稱為哈希函數(shù)實(shí)體管理表生成單元或哈希系數(shù)值信息生成單元。
[0071] 對(duì)應(yīng)關(guān)系表生成單元10生成對(duì)應(yīng)關(guān)系表21 (參照?qǐng)D6),該對(duì)應(yīng)關(guān)系表21將分別指定多個(gè)哈希函數(shù)的多個(gè)哈希系數(shù)值與多個(gè)數(shù)據(jù)集彼此相關(guān)聯(lián)。這里,對(duì)應(yīng)關(guān)系表生成單元10使將分別指定多個(gè)哈希函數(shù)的多個(gè)哈希系數(shù)值與多個(gè)數(shù)據(jù)集彼此相關(guān)聯(lián)的對(duì)應(yīng)關(guān)系表21 (參照?qǐng)D6)存儲(chǔ)到CPU高速緩沖存儲(chǔ)器111中,以在CPU高速緩沖存儲(chǔ)器111中生成對(duì)應(yīng)關(guān)系表21 (參照?qǐng)D6)。因此,對(duì)應(yīng)關(guān)系表21 (參照?qǐng)D6)被保留在CPU高速緩沖存儲(chǔ)器111中,并且在CPU高速緩沖存儲(chǔ)器111中生成存儲(chǔ)對(duì)應(yīng)關(guān)系表21 (參照?qǐng)D6)的對(duì)應(yīng)關(guān)系表存儲(chǔ)單元5。以此方式,對(duì)應(yīng)關(guān)系表生產(chǎn)單元10優(yōu)選地生成具有能夠保留在CPU高速緩沖存儲(chǔ)器111中的信息量的對(duì)應(yīng)關(guān)系表21(參照?qǐng)D6)。此外,對(duì)應(yīng)關(guān)系表生成單元10優(yōu)選地在候選哈希函數(shù)被確定為用于所述兩個(gè)或更多個(gè)數(shù)據(jù)集中的每個(gè)數(shù)據(jù)集的哈希函數(shù)時(shí),生成將指定一個(gè)哈希函數(shù)的哈希系數(shù)值與該兩個(gè)或更多個(gè)數(shù)據(jù)集彼此相關(guān)聯(lián)的對(duì)應(yīng)關(guān)系表。此外,對(duì)應(yīng)關(guān)系表生成單元10優(yōu)選地在16個(gè)或32個(gè)哈希函數(shù)要被確定為用于多個(gè)數(shù)據(jù)集的多個(gè)哈希函數(shù)的情況下,生成將指定多個(gè)哈希函數(shù)的多個(gè)哈希系數(shù)值與多個(gè)數(shù)據(jù)集彼此相關(guān)聯(lián),并且包括根據(jù)4位或5位進(jìn)行配置的多個(gè)索引的對(duì)應(yīng)關(guān)系表。要注意,對(duì)應(yīng)關(guān)系表21 (參照?qǐng)D6)在下文中被稱為哈希函數(shù)索引表或?qū)?yīng)關(guān)系信息。此外,對(duì)應(yīng)關(guān)系表生成單元10在下文中被稱為哈希函數(shù)索引表生成單元或?qū)?yīng)關(guān)系信息生成單元。[0072]哈希表生成單元11生成分別用于多個(gè)數(shù)據(jù)集的多個(gè)哈希表22。具體地,哈希表生成單元11針對(duì)每個(gè)數(shù)據(jù)集將數(shù)據(jù)和鍵存儲(chǔ)到基于哈希值指定的第一存儲(chǔ)位置,或者第二存儲(chǔ)位置,以生成用于該數(shù)據(jù)集的哈希表22,其中該哈希值是基于多個(gè)數(shù)據(jù)的鍵,通過(guò)用于該數(shù)據(jù)集的哈希函數(shù)而計(jì)算的。要注意,哈希表22在下文中也稱為哈希信息。此外,哈希表生成單元11在下文中也稱為哈希信息生成單元。
[0073]數(shù)據(jù)檢索處理單元3包括哈希表指定單元12、哈希系數(shù)值獲取單元13、哈希值計(jì)算單元14、讀出單元15以及輸出單元16。
[0074]哈希表指定單元12基于檢索目標(biāo)數(shù)據(jù)的鍵,從存儲(chǔ)由數(shù)據(jù)集劃分出的多個(gè)數(shù)據(jù)集的多個(gè)哈希表22中指定存儲(chǔ)包括該檢索目標(biāo)數(shù)據(jù)的一個(gè)數(shù)據(jù)集一個(gè)哈希表22。要注意,哈希表指定單元12在下文中也被稱為哈希信息指定單元。
[0075]利用將多個(gè)數(shù)據(jù)集與分別指定多個(gè)哈希函數(shù)的哈希系數(shù)的值彼此相關(guān)聯(lián)的對(duì)應(yīng)關(guān)系表21 (參照?qǐng)D6)和存儲(chǔ)分別指定多個(gè)哈希函數(shù)的多個(gè)哈希系數(shù)的值的哈希系數(shù)值表
20(參照?qǐng)D6),哈希系數(shù)值獲取單元13獲取指定與一個(gè)數(shù)據(jù)集相對(duì)應(yīng)的一個(gè)哈希函數(shù)的一個(gè)哈希系數(shù)的值。在此情況下,對(duì)應(yīng)關(guān)系表21和哈希系數(shù)值表20 (參照?qǐng)D6)優(yōu)選地具有能夠保留在CPU高速緩沖存儲(chǔ)器111中的信息量。此外,對(duì)應(yīng)關(guān)系表優(yōu)選地將指定一個(gè)哈希函數(shù)的哈希系數(shù)的值與兩個(gè)或更多個(gè)數(shù)據(jù)集彼此相關(guān)聯(lián)。此外,對(duì)應(yīng)關(guān)系表優(yōu)選地包括將多個(gè)數(shù)據(jù)集與分別指定多個(gè)哈希函數(shù)的哈希系數(shù)的值相關(guān)聯(lián)的多個(gè)索引,并且該多個(gè)索引優(yōu)選地根據(jù)4位或5位進(jìn)行配置。此外,在數(shù)據(jù)的鍵串(鍵字符串)Ix1, X2, X3,, xn}被表示為χκ(1 < K < η)的情況下,多個(gè)哈希函數(shù)優(yōu)選地由哈希系數(shù)的值R(1256)指定,并且包括在由f R (Xk) =f R (Xk-D X R+XK [其中fR (X。) =Ro (Rt)是初始值)]表示的函數(shù)組中。此外,多個(gè)哈希函數(shù)優(yōu)選地為16個(gè)或32個(gè)哈希函數(shù)。
[0076]哈希值計(jì)算單元14利用檢索目標(biāo)數(shù)據(jù)的鍵和一個(gè)哈希系數(shù)的值,通過(guò)一個(gè)哈希函數(shù)來(lái)計(jì)算哈希值。
[0077]讀出單元15從一個(gè)哈希表22讀出被存儲(chǔ)在基于哈希值指定的第一存儲(chǔ)位置和與第一存儲(chǔ)位置鄰接的第二存儲(chǔ)位置的數(shù)據(jù)和鍵。
[0078]在判定從第一存儲(chǔ)位置或第二存儲(chǔ)位置讀出的鍵與檢索目標(biāo)數(shù)據(jù)的鍵相一致的情況下,輸出單元16輸出與被判定為一致的鍵相關(guān)聯(lián)的數(shù)據(jù)作為檢索目標(biāo)數(shù)據(jù)。
[0079]哈希系數(shù)值表存儲(chǔ)單元4存儲(chǔ)哈希系數(shù)值表20 (參照?qǐng)D6),哈希系數(shù)值表20 (參照?qǐng)D6)存儲(chǔ)分別指定多個(gè)哈希函數(shù)的多個(gè)哈希系數(shù)的值。具體地,哈希系數(shù)值表存儲(chǔ)單元4存儲(chǔ)由上述哈希系數(shù)值表生成單元9生成的哈希系數(shù)值表20 (參照?qǐng)D6)。要注意,由于哈希系數(shù)的值是哈希函數(shù)的實(shí)體,所以哈希系數(shù)值表存儲(chǔ)單元4也被稱為哈希函數(shù)實(shí)體管理表存儲(chǔ)單元。此外,哈希系數(shù)值表存儲(chǔ)單元4也被稱為哈希系數(shù)值信息存儲(chǔ)單元。在本實(shí)施方式中,CPU高速緩沖存儲(chǔ)器111的存儲(chǔ)區(qū)域的一部分被用作哈希系數(shù)值表存儲(chǔ)單元
4。換言之,由上述哈希系數(shù)值表生成單元9生成的哈希系數(shù)值表20 (參照?qǐng)D6)被保留在CPU高速緩沖存儲(chǔ)器111中。
[0080]對(duì)應(yīng)關(guān)系表存儲(chǔ)單元5存儲(chǔ)將分別指定多個(gè)哈希函數(shù)的多個(gè)哈希系數(shù)的值與多個(gè)數(shù)據(jù)集彼此相關(guān)聯(lián)的對(duì)應(yīng)關(guān)系表21 (參照?qǐng)D6)。簡(jiǎn)言之,對(duì)應(yīng)關(guān)系表存儲(chǔ)單元5存儲(chǔ)由上述對(duì)應(yīng)關(guān)系表生成單兀10生成的對(duì)應(yīng)關(guān)系表21 (參照?qǐng)D6)。要注意,對(duì)應(yīng)關(guān)系表存儲(chǔ)單元5也被稱為哈希函數(shù)索引表存儲(chǔ)單元或?qū)?yīng)關(guān)系信息存儲(chǔ)單元。在本實(shí)施方式中,CPU高速緩沖存儲(chǔ)器111的存儲(chǔ)區(qū)域的一部分被用作對(duì)應(yīng)關(guān)系表存儲(chǔ)單元5。換言之,由上述對(duì)應(yīng)關(guān)系表生成單元10生成的對(duì)應(yīng)關(guān)系表21 (參照?qǐng)D6)被保留在CPU高速緩沖存儲(chǔ)器111中。
[0081]哈希表存儲(chǔ)單元6存儲(chǔ)分別用于多個(gè)數(shù)據(jù)集的多個(gè)哈希表22 (哈希表集)。具體地,哈希表存儲(chǔ)單元6存儲(chǔ)由上述哈希表生成單元11生成的多個(gè)哈希表22。要注意,哈希表存儲(chǔ)單元6也被稱為哈希信息存儲(chǔ)單元。在本實(shí)施方式中,主存儲(chǔ)器101的存儲(chǔ)區(qū)域的一部分被用作哈希表存儲(chǔ)單元6。換言之,由哈希表生成單元11生成的多個(gè)哈希表22被保留在主存儲(chǔ)器101中。
[0082]現(xiàn)在,參照?qǐng)D3至圖9來(lái)描述由本數(shù)據(jù)檢索裝置中的CPU102根據(jù)在主存儲(chǔ)器101中讀取的數(shù)據(jù)存儲(chǔ)程序或數(shù)據(jù)檢索程序而執(zhí)行的處理(數(shù)據(jù)存儲(chǔ)方法、數(shù)據(jù)檢索方法)。
[0083]首先,參照?qǐng)D3至圖8來(lái)描述由設(shè)置在本數(shù)據(jù)檢索裝置中的數(shù)據(jù)存儲(chǔ)處理單元2執(zhí)行的處理,即,由數(shù)據(jù)檢索裝置I中的CPU102根據(jù)在主存儲(chǔ)器101中讀取的數(shù)據(jù)存儲(chǔ)程序而執(zhí)行的處理(數(shù)據(jù)存儲(chǔ)方法)。
[0084]這里,如果數(shù)據(jù)存儲(chǔ)處理單元2接收到對(duì)數(shù)據(jù)集的存儲(chǔ)請(qǐng)求,那么其按照以下過(guò)程將該數(shù)據(jù)集存儲(chǔ)到在主存儲(chǔ)器101中生成的哈希表22 (哈希信息)中。
[0085]首先,當(dāng)數(shù)據(jù)存儲(chǔ)處理單元2接收存儲(chǔ)對(duì)象的數(shù)據(jù)集時(shí),如圖3所示,數(shù)據(jù)存儲(chǔ)處理單元2使其數(shù)據(jù)劃分單元7將存儲(chǔ)目標(biāo)的數(shù)據(jù)集劃分為多個(gè)數(shù)據(jù)集(步驟S10)。
[0086]這里,數(shù)據(jù)存儲(chǔ)處理單元2使其數(shù)據(jù)劃分單元7將存儲(chǔ)目標(biāo)的大規(guī)模數(shù)據(jù)集劃分為多個(gè)小規(guī)模數(shù)據(jù)集。例如,構(gòu)成大規(guī)模數(shù)據(jù)集的多個(gè)數(shù)據(jù)被劃分為多個(gè)小規(guī)模數(shù)據(jù)集,使得多個(gè)小規(guī)模數(shù)據(jù)集中的每個(gè)數(shù)據(jù)集平均包括四個(gè)數(shù)據(jù)。在此情況下,在構(gòu)成要存儲(chǔ)的大規(guī)模數(shù)據(jù)集的數(shù)據(jù)的總數(shù)為η時(shí),例如可以通過(guò)ROUND (n + 4)來(lái)確定小規(guī)模數(shù)據(jù)集的數(shù)量m。具體地,計(jì)算構(gòu)成存儲(chǔ)目標(biāo)的大規(guī)模數(shù)據(jù)集的多個(gè)數(shù)據(jù)中的每個(gè)數(shù)據(jù)的鍵的CRC32值,并且計(jì)算在將每個(gè)所計(jì)算的CRC32值除以小規(guī)模數(shù)據(jù)集的數(shù)量m的情況下的余數(shù)的值(CRC值)。然后,將包括η個(gè)數(shù)據(jù)的大規(guī)模數(shù)據(jù)集劃分為m個(gè)小規(guī)模數(shù)據(jù)集,使得在同一小規(guī)模數(shù)據(jù)集中包含具有相等的所計(jì)算CRC值的數(shù)據(jù)。換言之,所計(jì)算的CRC值被用作m個(gè)小規(guī)模數(shù)據(jù)集的標(biāo)識(shí)號(hào)碼(數(shù)據(jù)集號(hào)碼)以將包括η個(gè)數(shù)據(jù)的大規(guī)模數(shù)據(jù)集劃分為m個(gè)小規(guī)模數(shù)據(jù)集。例如,在使用支持SSE4.2擴(kuò)展指令集的CPU的情況下,可以利用作為硬件內(nèi)置的CRC32c操作指令(內(nèi)置函數(shù)名稱:crc32)以高速地將大規(guī)模數(shù)據(jù)集劃分為多個(gè)小規(guī)模數(shù)據(jù)集。
[0087]然后,數(shù)據(jù)存儲(chǔ)處理單元2使其哈希函數(shù)確定單元8確定分別用于多個(gè)數(shù)據(jù)集的多個(gè)哈希函數(shù)(步驟S20)。換言之,確定要用于生成分別用于多個(gè)數(shù)據(jù)集的哈希表22的多個(gè)哈希函數(shù)。具體地,數(shù)據(jù)存儲(chǔ)處理單元2使其哈希函數(shù)確定單元8針對(duì)每個(gè)數(shù)據(jù)集,基于包括在該數(shù)據(jù)集中的多個(gè)數(shù)據(jù)中的每個(gè)數(shù)據(jù)的鍵,通過(guò)候選哈希函數(shù)來(lái)計(jì)算哈希值。然后,判定該多個(gè)數(shù)據(jù)的全部是否可以存儲(chǔ)到基于哈希值指定的第一存儲(chǔ)位置或與第一存儲(chǔ)位置鄰接的第二存儲(chǔ)位置。然后,將候選哈希函數(shù)確定為用于如下數(shù)據(jù)集哈希函數(shù):關(guān)于該數(shù)據(jù)集,判定了多個(gè)數(shù)據(jù)的全部可以被存儲(chǔ)到基于哈希值指定的第一存儲(chǔ)位置或與第一存儲(chǔ)位置鄰接的第二存儲(chǔ)位置。此外,當(dāng)發(fā)現(xiàn)如下兩個(gè)或更多個(gè)數(shù)據(jù)集時(shí),候選哈希函數(shù)被確定為用于該兩個(gè)或更多個(gè)數(shù)據(jù)集中的每個(gè)數(shù)據(jù)集的哈希函數(shù):關(guān)于該兩個(gè)或更多個(gè)的數(shù)據(jù)集,判定多個(gè)數(shù)據(jù)的全部可以存儲(chǔ)到第一存儲(chǔ)位置或第二存儲(chǔ)位置。[0088]然后,數(shù)據(jù)存儲(chǔ)處理單元2使其哈希系數(shù)值表生成單元9(哈希函數(shù)實(shí)體管理表生成單元、哈希系數(shù)值信息生成單元)生成哈希系數(shù)值表20 (哈希函數(shù)實(shí)體管理表;哈希系數(shù)值信息;參照?qǐng)D6),哈希系數(shù)值表20存儲(chǔ)分別指定多個(gè)哈希函數(shù)的多個(gè)哈希系數(shù)的值(步驟S30)。這里,數(shù)據(jù)存儲(chǔ)處理單元2使其哈希系數(shù)值表生成單元9將分別指定多個(gè)哈希函數(shù)的多個(gè)哈希系數(shù)的值存儲(chǔ)到CPU高速緩沖存儲(chǔ)器111中,以在CPU高速緩沖存儲(chǔ)器111中生成哈希系數(shù)值表20 (參照?qǐng)D6)。因此,哈希系數(shù)值表20 (參照?qǐng)D6)被保留在CPU高速緩沖存儲(chǔ)器111中,并且在CPU高速緩沖存儲(chǔ)器111中生成存儲(chǔ)哈希系數(shù)表值20 (參閱圖6)的哈希系數(shù)值表存儲(chǔ)單元4 (哈希系數(shù)值信息存儲(chǔ)單元)。以此方式,數(shù)據(jù)存儲(chǔ)處理單元2優(yōu)選地使其哈希系數(shù)值表生成單元9生成具有能夠保留在CPU高速緩沖存儲(chǔ)器111中的信息量的哈希系數(shù)值表20 (參照?qǐng)D6)。
[0089]然后,數(shù)據(jù)存儲(chǔ)處理單元2使其對(duì)應(yīng)關(guān)系表生成單元10 (哈希函數(shù)索引表生成單元;對(duì)應(yīng)關(guān)系信息生成單元)生成對(duì)應(yīng)關(guān)系表21 (哈希函數(shù)索引表;對(duì)應(yīng)關(guān)系信息,參照?qǐng)D6),對(duì)應(yīng)關(guān)系表21使分別指定多個(gè)哈希函數(shù)的多個(gè)哈希系數(shù)的值與多個(gè)數(shù)據(jù)集彼此相關(guān)聯(lián)(步驟S40)。這里,數(shù)據(jù)存儲(chǔ)處理單元2使其對(duì)應(yīng)關(guān)系表生成單元10將對(duì)應(yīng)關(guān)系表21(參照?qǐng)D6)存儲(chǔ)到CPU高速緩沖存儲(chǔ)器111中以在CPU高速緩沖存儲(chǔ)器111中生成對(duì)應(yīng)關(guān)系表21 (參照?qǐng)D6),對(duì)應(yīng)關(guān)系表21 (參照?qǐng)D6)將分別指定多個(gè)哈希函數(shù)的多個(gè)哈希系數(shù)的值與多個(gè)對(duì)數(shù)據(jù)集彼此相關(guān)聯(lián)。因此,對(duì)應(yīng)關(guān)系表21 (參照?qǐng)D6)被保留在CPU高速緩沖存儲(chǔ)器111中,并且在CPU高速緩沖存儲(chǔ)器111中生成用于存儲(chǔ)對(duì)應(yīng)關(guān)系表21 (參照?qǐng)D6)的對(duì)應(yīng)關(guān)系表存儲(chǔ)單元5 (對(duì)應(yīng)關(guān)系信息存儲(chǔ)單元)。以此方式,數(shù)據(jù)存儲(chǔ)處理單元2優(yōu)選地使其對(duì)應(yīng)關(guān)系表生成單元10生成具有能夠保留在CPU高速緩沖存儲(chǔ)器111中的信息量的對(duì)應(yīng)關(guān)系表21 (參照?qǐng)D6)。此外,當(dāng)數(shù)據(jù)存儲(chǔ)處理單元2將候選哈希函數(shù)確定為用于兩個(gè)或更多個(gè)數(shù)據(jù)集中的各個(gè)數(shù)據(jù)集的哈希函數(shù)時(shí),優(yōu)選地由對(duì)應(yīng)關(guān)系表生成單元10生成將指定一個(gè)哈希函數(shù)的哈希系數(shù)的值與兩個(gè)或更多個(gè)數(shù)據(jù)集相關(guān)聯(lián)的對(duì)應(yīng)關(guān)系表。
[0090]這里,將如下情況用作示例并且在下面參照?qǐng)D4對(duì)其進(jìn)行具體描述:其中用于確定多個(gè)哈希函數(shù)的處理(步驟S20)、用于生成哈希系數(shù)值表的處理(步驟S30)以及用于生成對(duì)應(yīng)關(guān)系表的處理(步驟S40)并行地執(zhí)行,并且將16個(gè)哈希函數(shù)被分配給多個(gè)小規(guī)模數(shù)據(jù)集。
[0091]要注意,“i”從“I”依次遞增1,直至“16” (l^i^ 16),以確定分別與索引號(hào)I至16相對(duì)應(yīng)的16個(gè)哈希函數(shù)。
[0092]首先,如圖4所示,數(shù)據(jù)存儲(chǔ)處理單元2使其哈希函數(shù)確定單元8將“i”設(shè)置為“l(fā)”(i=l)(步驟A10),并且在數(shù)據(jù)的鍵串Ix1, x2,x3,...,Xj被表示為χκ(1≤K≤η)的情況下,選擇由哈希系數(shù)的值R(1≤R≤256)指定并且包括在由fK(?) =^(Xih) XR+xK[其中fK(Xci) =Rci(Rci是初始值)]表示的函數(shù)組中的一個(gè)哈希函數(shù)作為候選哈希函數(shù)(步驟A20)。例如,
[0093]哈希系數(shù)的值R可以被設(shè)置為“ I ”以選擇一個(gè)哈希函數(shù),使得該一個(gè)哈希函數(shù)被用作候選哈希函數(shù)。
[0094]然后,數(shù)據(jù)存儲(chǔ)處理單元2使其哈希函數(shù)確定單元8針對(duì)每個(gè)小規(guī)模數(shù)據(jù)集,通過(guò)所選擇的候選哈希函數(shù),基于包括在該小規(guī)模數(shù)據(jù)集中的多個(gè)數(shù)據(jù)的鍵來(lái)計(jì)算哈希值(步驟A30)。這里,數(shù)據(jù)存儲(chǔ)處理單元2使其哈希函數(shù)確定單元8按照m個(gè)小規(guī)模數(shù)據(jù)集的標(biāo)識(shí)號(hào)碼(數(shù)據(jù)集號(hào)碼)的升序,針對(duì)每個(gè)小規(guī)模數(shù)據(jù)集,通過(guò)所選擇的候選哈希函數(shù),基于包括在該小規(guī)模數(shù)據(jù)集的多個(gè)數(shù)據(jù)中的每個(gè)數(shù)據(jù)的鍵來(lái)計(jì)算哈希值。
[0095]例如,在數(shù)據(jù)的鍵串(X1, X2, X3, , XnI被表示為xK (I≤K≤η)并且由哈希系數(shù)的值R (I ^ 256)指定并且包括在由fE (xK) =fE (Xh) X R+xk [其中fK (x0) =R0 (R0是初始值)]表示的函數(shù)組中的一個(gè)哈希函數(shù)被選擇作為候選哈希函數(shù)的情況下,上面給出的表達(dá)式可以展開(kāi)為以下乘積和(product sum)表達(dá)式以計(jì)算哈希值。
[0096]fE( (X1, x2, x3,...,xn}) =R0*Rn+x1>l<Rn_1+x2>l<Rn_2+X3*Rn 3+...+XnJIHXn
[0097]通過(guò)以此方式從函數(shù)組選擇候選哈希函數(shù),使候選哈希函數(shù)的選擇簡(jiǎn)化并容易,并且可以提高選擇速度。此外,通過(guò)如上所述將遞歸函數(shù)轉(zhuǎn)換成非遞歸函數(shù),可以利用例如多處理器并行處理或CPU指令預(yù)取來(lái)提高哈希值的計(jì)算速度。此外,通過(guò)使用包括乘積和算術(shù)運(yùn)算或矢量算術(shù)運(yùn)算(例如,通過(guò)使用CPU的單指令多數(shù)據(jù)(SIMD)指令)的計(jì)算功能的CPU并且由CPU的計(jì)算功能執(zhí)行上面給出的乘積和表達(dá)式的計(jì)算,或者通過(guò)使用可以進(jìn)行并行計(jì)算(同時(shí)并行計(jì)算)的CPU (例如,多核CPU,即具有多個(gè)CPU單元的單個(gè)CPU設(shè)備)或通過(guò)使用多個(gè)CPU并且執(zhí)行上面給出的乘積和表達(dá)式的并行計(jì)算,可以高速地進(jìn)行哈希值的計(jì)算。此外,由于通過(guò)單個(gè)哈希函數(shù)fK(X)來(lái)計(jì)算哈希值,所以與上述CHD算法相比可以高速執(zhí)行哈希值的計(jì)算,其中在上述CHD算法中,通過(guò)由f I (X) + a f2 (x) + β表示的完美哈希函數(shù)來(lái)計(jì)算哈希值,即,需要計(jì)算兩個(gè)哈希函數(shù)fl(x)和f2(x)。因此,可以高速進(jìn)行數(shù)據(jù)的存儲(chǔ)處理。
[0098]然后,數(shù)據(jù)存儲(chǔ)處理單元2使其哈希函數(shù)確定單元8針對(duì)每個(gè)小規(guī)模數(shù)據(jù)集來(lái)判定多個(gè)數(shù)據(jù)的全部是否可以存儲(chǔ)到基于由所選擇的候選哈希函數(shù)計(jì)算的哈希值而指定的存儲(chǔ)位置(第一存儲(chǔ)位置)或與第一存儲(chǔ)位置鄰接的另一存儲(chǔ)位置(第二存儲(chǔ)位置)(步驟A40)。這里,數(shù)據(jù)存儲(chǔ)處理單元2使其哈希函數(shù)確定單元8按照m個(gè)小規(guī)模數(shù)據(jù)集的標(biāo)識(shí)號(hào)碼(數(shù)據(jù)集號(hào)碼)的升序,針對(duì)每個(gè)小規(guī)模數(shù)據(jù)集來(lái)判定多個(gè)數(shù)據(jù)的全部是否可以存儲(chǔ)到基于由所選擇的候選哈希函數(shù)計(jì)算的哈希值而指定的存儲(chǔ)位置(第一存儲(chǔ)位置)或與第一存儲(chǔ)位置鄰接的另一存儲(chǔ)位置(第二存儲(chǔ)位置)。
[0099]在下文中,將如下情況用作示例并且參照?qǐng)D5對(duì)其進(jìn)行描述:其中,針對(duì)每個(gè)小規(guī)模數(shù)據(jù)集來(lái)判定多個(gè)數(shù)據(jù)的全部是否可以存儲(chǔ)到基于由所選擇的候選哈希函數(shù)計(jì)算的哈希值所指定的地址(第一存儲(chǔ)位置)或下一地址(第二存儲(chǔ)位置)。
[0100] 例如,數(shù)據(jù)存儲(chǔ)處理單元2使其哈希函數(shù)確定單元8首先計(jì)算在將由所選擇的候選哈希函數(shù)基于包括在第一小規(guī)模數(shù)據(jù)集中的第一數(shù)據(jù)的鍵而計(jì)算的哈希值除以用于第一小規(guī)模數(shù)據(jù)集的哈希表的大小的情況下的余數(shù)的值(步驟B10),并且將第一數(shù)據(jù)存儲(chǔ)到與該余數(shù)值相對(duì)應(yīng)的臨時(shí)存儲(chǔ)哈希表的地址(行;存儲(chǔ)位置)(步驟B20)。這里,當(dāng)包括在第一小規(guī)模數(shù)據(jù)集中的數(shù)據(jù)的數(shù)量η’為“4”時(shí),用于第一小規(guī)模數(shù)據(jù)集的哈希表的大小可以通過(guò)ROUND (η’+0.8)而設(shè)置為“5”。要注意,哈希表的大小“5”表示哈希表可以存儲(chǔ)五個(gè)數(shù)據(jù)。然后,計(jì)算在將由所選擇的候選哈希函數(shù)基于包括在第一小規(guī)模數(shù)據(jù)集中的第二數(shù)據(jù)的鍵而計(jì)算的哈希值除以用于第一小規(guī)模數(shù)據(jù)集的哈希表的大小的情況下的余數(shù)的值(步驟Β10)。然后,將第二數(shù)據(jù)存儲(chǔ)到與該余數(shù)值相對(duì)應(yīng)的臨時(shí)存儲(chǔ)表的地址(步驟Β20)。此后,針對(duì)包括在第一小規(guī)模數(shù)據(jù)集中的多個(gè)數(shù)據(jù)的全部來(lái)執(zhí)行類似處理。結(jié)果,生成用于第一小規(guī)模數(shù)據(jù)集的臨時(shí)存儲(chǔ)表。[0101]然后,判定在以上述方式生成的用于第一小規(guī)模數(shù)據(jù)集的臨時(shí)存儲(chǔ)表的第一地址中存儲(chǔ)的數(shù)據(jù)的數(shù)量是否為3或更多(步驟B30)。
[0102]如果作為上述判定的結(jié)果判定了不滿足所描述的條件,則處理前進(jìn)到“否”路徑,在該“否”路徑中判定:(i)在用于第一小規(guī)模數(shù)據(jù)集的臨時(shí)存儲(chǔ)表的下一地址中存儲(chǔ)的數(shù)據(jù)的數(shù)量是否為3或更多;以及(ii)是否在下一地址中存儲(chǔ)的數(shù)據(jù)的數(shù)量是否為2而且在第一地址中存儲(chǔ)的數(shù)據(jù)的數(shù)量為2 (步驟MO)。
[0103]如果作為上述判定的結(jié)果判定了兩個(gè)條件(i)和(ii)未滿足,則處理前進(jìn)到“否”路徑。在該“否”路徑中,依次關(guān)于在用于第一小規(guī)模數(shù)據(jù)集的臨時(shí)存儲(chǔ)表的后續(xù)地址中的每個(gè)地址中存儲(chǔ)的數(shù)據(jù)來(lái)判定:(iii)在該地址中存儲(chǔ)的數(shù)據(jù)的數(shù)量是否為3或更多;(iv)是否該地址中存儲(chǔ)的數(shù)據(jù)的數(shù)量為2而且緊接在前面的地址中存儲(chǔ)的數(shù)據(jù)的數(shù)量為2 ; (V)是否該地址中存儲(chǔ)的數(shù)據(jù)的數(shù)量為2并且該地址為最后一個(gè)地址;以及(vi)是否該地址中存儲(chǔ)的數(shù)據(jù)的數(shù)量為I且該地址為最后一個(gè)地址而且緊接在前面的地址中存儲(chǔ)的數(shù)據(jù)的數(shù)量為2 (步驟B50)。
[0104]如果作為上述判定的結(jié)果判定了在用于第一小規(guī)模數(shù)據(jù)集的臨時(shí)存儲(chǔ)表的后續(xù)地址的全部地址中存儲(chǔ)的數(shù)據(jù)不滿足(iii)至(vi)的四個(gè)條件中的任意條件,則處理前進(jìn)到“否”路徑。在該“否”路徑中,判定第一小規(guī)模數(shù)據(jù)集的多個(gè)數(shù)據(jù)的全部可以被存儲(chǔ)到基于由所選擇的候選哈希函數(shù)計(jì)算的哈希值而指定的地址(第一存儲(chǔ)位置)或下一地址(第二存儲(chǔ)位置)(步驟B60)。在此情況下,作為在圖4的流程圖的步驟A40的判定結(jié)果,處理前進(jìn)到步驟A40的“是”路徑。
[0105]另一方面,如果判定在用于第一小規(guī)模數(shù)據(jù)集的臨時(shí)存儲(chǔ)表的一些地址中存儲(chǔ)的數(shù)據(jù)滿足上述條件中的一些條件,即,如果在步驟B30、B40或B50處判定一個(gè)或更多個(gè)條件被滿足,則這表示全部數(shù)據(jù)不能被存儲(chǔ)到基于由所選擇的候選哈希函數(shù)計(jì)算的哈希值而指定的地址或下一地址。因此,判定第一小規(guī)模數(shù)據(jù)集的多個(gè)數(shù)據(jù)的全部不能被存儲(chǔ)到基于由所選擇的候選哈希函數(shù)計(jì)算的哈希值而指定的地址(第一存儲(chǔ)位置)或下一地址(第二存儲(chǔ)位置)(步驟B70)。在此情況下,作為在圖4的流程圖的步驟A40的判定結(jié)果,處理前進(jìn)到步驟A40的“否”路徑。
[0106]要注意,這里采用如下示例為例并對(duì)其進(jìn)行描述,但判定不限于此:在該示例中,判定多個(gè)數(shù)據(jù)的全部是否可以存儲(chǔ)到基于通過(guò)候選哈希函數(shù)計(jì)算的哈希值而指定的地址(第一存儲(chǔ)位置)或下一地址(第二存儲(chǔ)位置)。具體地,可以判定多個(gè)數(shù)據(jù)的全部是否可以存儲(chǔ)到基于通過(guò)候選哈希函數(shù)計(jì)算的哈希值而指定的存儲(chǔ)位置(第一存儲(chǔ)位置)或與第一存儲(chǔ)位置鄰接的存儲(chǔ)位置(第二存儲(chǔ)位置)。例如,可以判定多個(gè)數(shù)據(jù)的全部是否可以存儲(chǔ)到基于通過(guò)候選哈希函數(shù)計(jì)算的哈希值而指定的地址(第一存儲(chǔ)位置)或多個(gè)后續(xù)地址(第二存儲(chǔ)位置)。這里,要被判定為第二存儲(chǔ)位置的,在作為第一存儲(chǔ)位置的地址后面的地址位置的數(shù)量可以基于如下數(shù)據(jù)的大小來(lái)確定:該數(shù)據(jù)是在數(shù)據(jù)檢索處理時(shí)在所使用的CPU中通過(guò)執(zhí)行一次加載指令所能夠加載的數(shù)據(jù)。例如,在所使用的CPU中,每個(gè)地址的數(shù)據(jù)和鍵的總大小由d表示,并且可以通過(guò)執(zhí)行一次加載指令(例如,通用寄存器的通用加載指令或與SIMD指令寄存器(如XMM寄存器或YMM寄存器)相對(duì)應(yīng)的SIMD加載指令)而加載到CPU的寄存器中的數(shù)據(jù)的大小的最大值由D表示。此外,將第一存儲(chǔ)位置后面的第y個(gè)地址的地址位置確定為第二存儲(chǔ)位置。在此情況下,y可以被確定為在FLOOR (D + d)的范圍內(nèi)。另外,可以判定多個(gè)數(shù)據(jù)的全部是否可以存儲(chǔ)到基于通過(guò)候選哈希函數(shù)計(jì)算的哈希值而指定的存儲(chǔ)位置(第一存儲(chǔ)位置)或在第一存儲(chǔ)位置前面的存儲(chǔ)位置(第二存儲(chǔ)位置)。
[0107]同時(shí),小規(guī)模數(shù)據(jù)集的多個(gè)數(shù)據(jù)的全部是否可以被保存到基于通過(guò)候選哈希函數(shù)計(jì)算的哈希值而指定的第一存儲(chǔ)位置或與第一存儲(chǔ)位置鄰接的第二存儲(chǔ)位置的判定是如下判定:該候選哈希函數(shù)是否為用于小規(guī)模數(shù)據(jù)集或存儲(chǔ)包括在小規(guī)模數(shù)據(jù)集中的多個(gè)數(shù)據(jù)的哈希表的近乎完美(半完美)的哈希函數(shù)。這里,如果包括在小規(guī)模數(shù)據(jù)集中的多個(gè)數(shù)據(jù)的全部在哈希表中的實(shí)際存儲(chǔ)位置為基于通過(guò)某一哈希函數(shù)計(jì)算的哈希值而指定的第一存儲(chǔ)位置或與第一存儲(chǔ)位置鄰接的第二存儲(chǔ)位置的條件滿足,則該哈希函數(shù)被稱為近乎完美的哈希函數(shù)。此外,與在上述CHD算法中通過(guò)判定某一哈希函數(shù)是否為用于小規(guī)模數(shù)據(jù)集的完美哈希函數(shù)來(lái)將該哈希函數(shù)選擇為完美哈希函數(shù)的概率相比,可以通過(guò)判定候選哈希函數(shù)是否為用于小規(guī)模數(shù)據(jù)集的近乎完美的函數(shù)來(lái)將該候選哈希函數(shù)選擇為近乎完美的哈希函數(shù)的概率更高。換言之,通過(guò)判定數(shù)據(jù)是否可以被存儲(chǔ)到基于通過(guò)候選哈希函數(shù)計(jì)算的哈希值而指定的第一存儲(chǔ)位置或與第一存儲(chǔ)位置鄰接的第二存儲(chǔ)位置以選擇哈希函數(shù),與選擇完美哈希函數(shù)的替代情況不同,哈希函數(shù)的選擇條件被減輕,使得可以容易且高速地進(jìn)行哈希函數(shù)的選擇。因此,可以高速進(jìn)行用于每個(gè)小規(guī)模數(shù)據(jù)集的哈希函數(shù)的確定。
[0108]附帶地,如果數(shù)據(jù)存儲(chǔ)處理單元2使其哈希函數(shù)確定單元8在圖4的步驟A40針對(duì)每個(gè)小規(guī)模數(shù)據(jù)集來(lái)判定多個(gè)數(shù)據(jù)的全部可以被存儲(chǔ)到基于由所選擇的候選哈希函數(shù)計(jì)算的哈希值而指定的存儲(chǔ)位置(第一存儲(chǔ)位置)或與第一存儲(chǔ)位置鄰接的另一存儲(chǔ)位置(第二存儲(chǔ)位置),那么處理前進(jìn)到步驟A40的“是”路徑。在該“是”路徑中,表示小規(guī)模數(shù)據(jù)集滿足條件的標(biāo)記F,即,表示候選哈希函數(shù)為用于該小規(guī)模數(shù)據(jù)集的近乎完美的哈希函數(shù)的標(biāo)記F,被設(shè)置為“I” (F=I ;步驟A50),此后,處理前進(jìn)到步驟A60。
[0109]另一方面,如果數(shù)據(jù)存儲(chǔ)處理單元2使其哈希函數(shù)確定單元8在圖4的步驟A40針對(duì)每個(gè)小規(guī)模數(shù)據(jù)集判定多個(gè)數(shù)據(jù)的全部不能被存儲(chǔ)到基于由所選擇的候選哈希函數(shù)計(jì)算的哈希值而指定的存儲(chǔ)位置(第一存儲(chǔ)位置)或與第一存儲(chǔ)位置鄰接的另一存儲(chǔ)位置(第二存儲(chǔ)位置),那么處理前進(jìn)到步驟A40的“否”路徑并且在該“否”路徑中前進(jìn)到步驟A60。在此情況下,標(biāo)記F具有初始設(shè)定值“O”。
[0110]然后,在步驟A60,判定是否已經(jīng)針對(duì)未被分配哈希函數(shù)的小規(guī)模數(shù)據(jù)集的全部執(zhí)行了以下處理:用于通過(guò)所選擇的候選哈希函數(shù)計(jì)算哈希值的處理;以及用于判定多個(gè)數(shù)據(jù)的全部是否可以存儲(chǔ)到基于所計(jì)算的哈希值而指定的地址(第一存儲(chǔ)位置)或與第一存儲(chǔ)位置鄰接的另一地址(第二存儲(chǔ)位置)的處理。
[0111]在目前階段,未給小規(guī)模數(shù)據(jù)集中的任何一個(gè)分配哈希函數(shù),并且已經(jīng)執(zhí)行了僅針對(duì)第一小規(guī)模數(shù)據(jù)集的處理。因此,判定了尚未針對(duì)未被分配哈希函數(shù)的小規(guī)模數(shù)據(jù)集的全部執(zhí)行上述處理,并且處理前進(jìn)到步驟A60的“否”路徑。在該“否”路徑中,處理返回到步驟A30使得針對(duì)第二或后續(xù)小規(guī)模數(shù)據(jù)集重復(fù)類似的處理(步驟A30至A60以及BlO至 B70)。
[0112]如果在步驟A60判定已經(jīng)針對(duì)未被分配哈希函數(shù)的所有小規(guī)模數(shù)據(jù)集執(zhí)行了上述處理,則處理前進(jìn)到步驟A60的“是”路徑。在此情況下,關(guān)于未被分配哈希函數(shù)的小規(guī)模數(shù)據(jù)集的全部獲得以下判定的結(jié)果:多個(gè)數(shù)據(jù)的全部是否可以被存儲(chǔ)到基于由所選擇的候選函數(shù)計(jì)算的哈希值而指定的地址(第一存儲(chǔ)位置)或后續(xù)地址(第二存儲(chǔ)位置)。
[0113]然后,數(shù)據(jù)存儲(chǔ)處理單元2使其哈希函數(shù)確定單元8將候選哈希函數(shù)判定為用于如下小規(guī)模數(shù)據(jù)集的哈希函數(shù):關(guān)于該小規(guī)模數(shù)據(jù)集,多個(gè)數(shù)據(jù)的全部可以存儲(chǔ)到第一存儲(chǔ)位置或第二存儲(chǔ)位置。然后,數(shù)據(jù)存儲(chǔ)處理單元2使其哈希系數(shù)值表生成單元9生成哈希系數(shù)值表20 (參照?qǐng)D6),哈希系數(shù)值表20 (參照?qǐng)D6)存儲(chǔ)分別指定多個(gè)哈希函數(shù)的多個(gè)哈希系數(shù)的值。此外,數(shù)據(jù)存儲(chǔ)處理單元2使其對(duì)應(yīng)關(guān)系表生成單元10生成對(duì)應(yīng)關(guān)系表
21(參照?qǐng)D6),對(duì)應(yīng)關(guān)系表21 (參照?qǐng)D6)將指定多個(gè)哈希函數(shù)的多個(gè)哈希系數(shù)的值與多個(gè)數(shù)據(jù)集彼此相關(guān)聯(lián)(步驟A70和步驟A80)。
[0114]例如,如果關(guān)于其判定了所有數(shù)據(jù)可以存儲(chǔ)到基于由候選哈希函數(shù)計(jì)算的哈希值而指定的第一存儲(chǔ)位置或第二存儲(chǔ)位置的那些小規(guī)模數(shù)據(jù)集的數(shù)量為a,那么當(dāng)m-a等于或小于閾值thd時(shí),該候選哈希函數(shù)被用作哈希函數(shù)并且被分配為用于小規(guī)模數(shù)據(jù)集的哈希函數(shù)。以此方式,當(dāng)小規(guī)模數(shù)據(jù)集的總數(shù)量和滿足條件的小規(guī)模數(shù)據(jù)集的數(shù)量之間的差較小時(shí),即,當(dāng)滿足條件的小規(guī)模數(shù)據(jù)集數(shù)量較大時(shí),候選哈希函數(shù)被采用為哈希函數(shù)。從而,將一個(gè)哈希函數(shù)分配給盡可能多的小規(guī)模數(shù)據(jù)集。
[0115]為此,在步驟A70處判定m-a是否等于或小于閾值thd。然后,如果作為上述判定的結(jié)果判定了 m-a等于或小于閾值thd,則處理前進(jìn)到步驟A70的“是”路徑,在該“是”路徑中處理前進(jìn)到步驟A80。在步驟A80,將指定被采用為哈希函數(shù)的候選哈希函數(shù)的哈希系數(shù)的值(這里為值R1至R8)以與索引號(hào)I相關(guān)聯(lián)的關(guān)系存儲(chǔ)到在CPU高速緩沖存儲(chǔ)器111中生成的哈希系數(shù)值表,即,存儲(chǔ)到將哈希函數(shù)的索引號(hào)與指定哈希函數(shù)的哈希系數(shù)的值(在此,值R1至R8)彼此相關(guān)聯(lián)的哈希函數(shù)實(shí)體管理表20 (參照?qǐng)D6)中(步驟A80)。此外,將作為哈希函數(shù)分配給小規(guī)模數(shù)據(jù)集的哈希函數(shù)的索引號(hào)I以與作為小規(guī)模數(shù)據(jù)集的標(biāo)識(shí)號(hào)碼的CRC值相關(guān)聯(lián)的關(guān)系存儲(chǔ)到在CPU高速緩存存儲(chǔ)器111中生成的對(duì)應(yīng)關(guān)系表中,即,存儲(chǔ)到將作為小規(guī)模數(shù)據(jù)集的標(biāo)識(shí)號(hào)碼的CRC值與哈希函數(shù)的索引號(hào)彼此相關(guān)聯(lián)的哈希函數(shù)索引表21 (參照?qǐng)D6)中(步驟A80)。要注意,閾值thd在i滿足1≤i≤15時(shí)為“2174”,并且在i滿足i=16時(shí)為“O”。因此,哈希函數(shù)的采用條件逐漸變嚴(yán)格。
[0116]然后,判定i是否為“16”,即,是否滿足i=16 (步驟A90),并且如果不滿足i=16,則i遞增,即,i增加至i=i+l (步驟A100),此后,處理返回到步驟A20。在本階段,由于i不滿足i=16,其被設(shè)置為i=2,然后處理返回到步驟A20。在數(shù)據(jù)的鍵串Ix1, x2,x3,...,xn}由χκ(1≤K≤η)表示的情況下,在步驟Α20,選擇由哈希系數(shù)R(1≤R≤256)的值指定并且包括在由fK (Xk) =Fk(Xih) XR+XK[其中fK (X。) =R(| (R(|是初始值)]表示的函數(shù)組中的一個(gè)哈希函數(shù)作為候選哈希函數(shù)。例如,哈希系數(shù)的值R可以被設(shè)置為“2”以選擇一個(gè)哈希函數(shù),并且所選擇的哈希函數(shù)可以被確定為候選哈希函數(shù)。此后,重復(fù)與上述類似的處理。
[0117]另一方面,如果在步驟A70判定m-a大于閾值thd,則處理前進(jìn)到“否”路徑,在該“否”路徑中處理返回到步驟S20而不采用候選哈希函數(shù)作為索引號(hào)I的哈希函數(shù)。在步驟A20,保持i=l,并且在數(shù)據(jù)的鍵串(X1, x2,X3,...,xn}被表示為χκ(1≤K≤η)的情況下,選擇由哈希系數(shù)R(1 ≤ R ≤ 256)的值指定并且包括在由400=40^) XR+xK[其中fK(Xci) =Rci (Rci是初始值)]表示的函數(shù)組中的一個(gè)哈希函數(shù)作為候選哈希函數(shù)。例如,哈希系數(shù)的值R可以被設(shè)置為“2”以選擇一個(gè)哈希函數(shù),并且所選擇的哈希函數(shù)可以被確定為候選哈希函數(shù)。此后,重復(fù)與上述類似的處理。[0118]此后,如果在步驟A90判定滿足i=16,那么由于這表示索引號(hào)I至16的16個(gè)哈希函數(shù)已經(jīng)被確定,所以處理結(jié)束。
[0119]要注意,在數(shù)據(jù)的鍵串(X1, X2, X3, , xj被表示為xK (I ^ K ^ η)并且選擇由哈希系數(shù)R(1 ^ 256)的值指定并且包括在由fK (?) =^(Xih) XR+xK[其中f K (xQ) =Rtl (Rtl是初始值)]表示的函數(shù)組中的一個(gè)哈希函數(shù)作為候選哈希函數(shù)的情況下,哈希系數(shù)的值R可以從“I”依次增加,或者可以依次選擇I至256中的任意值作為哈希系數(shù)的值R。然而,為了防止已被選擇為候選哈希函數(shù)并且已經(jīng)經(jīng)受上述處理的哈希函數(shù)再次被選擇,哈希函數(shù)優(yōu)選地在執(zhí)行上述處理之后(例如,在步驟A70或步驟A90的“否”路徑中)被標(biāo)注為“已使用”。這使得可以在步驟A20選擇候選哈希函數(shù)時(shí)選擇未使用的哈希函數(shù)。此外,在如上所述從索引號(hào)I至索引號(hào)16依次確定哈希函數(shù)的情況下,在用于確定索引號(hào)I的哈希函數(shù)的過(guò)程中,有必要執(zhí)行這樣的處理:如用于計(jì)算用于所有小規(guī)模數(shù)據(jù)集的哈希值的處理。然而,在用于確定索引號(hào)2和后續(xù)索引號(hào)的哈希函數(shù)的過(guò)程中,可以針對(duì)未被分配哈希函數(shù)的那些小規(guī)模數(shù)據(jù)集執(zhí)行諸如用于計(jì)算哈希值的處理等的處理。此外,如上所述,在i=16的情況下,閾值thd被設(shè)置為“O”使得:在未被分配哈希函數(shù)的那些小規(guī)模數(shù)據(jù)集的全部仍滿足上述步驟A40處的條件時(shí),確定索引號(hào)16的哈希函數(shù)使得沒(méi)有剩下未被分配哈希函數(shù)的小規(guī)模數(shù)據(jù)集。然而,哈希函數(shù)的確定不限于此,而是可以采取任何措施來(lái)防止剩下未被分配哈希函數(shù)的小規(guī)模數(shù)據(jù)集。例如,可以采取以下措施。具體地,固定閾值thd使其不改變,并且在步驟A80之前執(zhí)行關(guān)于是否滿足i=16的判定(步驟A90)。然后,如果在步驟A90處判定不滿足i=16,則處理前進(jìn)到步驟A100,但是如果判定滿足i=16,則進(jìn)一步判定是否剩下未被分配哈希函數(shù)的小規(guī)模數(shù)據(jù)集。然后,如果判定沒(méi)有剩下未被分配哈希函數(shù)的小規(guī)模數(shù)據(jù)集,則處理前進(jìn)到A80,而如果判定有剩下的未被分配哈希函數(shù)的小規(guī)模數(shù)據(jù)集,則處理返回到步驟A20。然后,重復(fù)類似的處理,直到判定沒(méi)有剩下未被分配哈希函數(shù)的小規(guī)模數(shù)據(jù)集。[0120]在此方式,數(shù)據(jù)存儲(chǔ)處理單元2使其哈希函數(shù)確定單元8確定要使用的16個(gè)哈希函數(shù),即,要分配給多個(gè)小規(guī)模數(shù)據(jù)集的索引號(hào)I至16的16個(gè)哈希函數(shù)。由以此方式確定的16個(gè)哈希函數(shù)構(gòu)成哈希函數(shù)池。然后,從由16個(gè)哈希函數(shù)構(gòu)成的哈希函數(shù)池,分配用于每個(gè)小規(guī)模數(shù)據(jù)集的哈希函數(shù)。為此,數(shù)據(jù)存儲(chǔ)處理單元2使其哈希函數(shù)確定單元8確定由16個(gè)哈希函數(shù)構(gòu)成的哈希函數(shù)池。此外,數(shù)據(jù)存儲(chǔ)處理單元2使其哈希系數(shù)值表生成單元9將用于指定16個(gè)哈希函數(shù)的哈希系數(shù)的值(這里為R1至R8的值;由2個(gè)字節(jié)構(gòu)成值中的每個(gè)值)與索引號(hào)I至16相關(guān)聯(lián),從而在CPU高速緩沖存儲(chǔ)器111中生成哈希系數(shù)值表20 (參照?qǐng)D6)。要注意,哈希系數(shù)值表20也被稱為哈希系數(shù)集。此外,數(shù)據(jù)存儲(chǔ)處理單元2使其對(duì)應(yīng)關(guān)系表生成單元10將16個(gè)哈希函數(shù)的索引號(hào)I至16中的所分配哈希函數(shù)的索引號(hào)與分別作為多個(gè)小規(guī)模數(shù)據(jù)集的標(biāo)識(shí)號(hào)碼的CRC值相關(guān)聯(lián),從而在CPU高速緩沖存儲(chǔ)器111中生成對(duì)應(yīng)關(guān)系表21 (參照?qǐng)D6)。由于以此方式僅需要生成對(duì)應(yīng)關(guān)系表21和哈希系數(shù)值表20 (參照?qǐng)D6),所以與涉及算子的壓縮處理的上述CHD算法的替換情況相比,可以高速地進(jìn)行數(shù)據(jù)存儲(chǔ)處理。
[0121]這里,由于分配給多個(gè)小規(guī)模數(shù)據(jù)集的哈希函數(shù)的數(shù)量為16,所以可以由4位(固定長(zhǎng)度)來(lái)表示與每個(gè)小規(guī)模數(shù)據(jù)集的CRC值相關(guān)聯(lián)的哈希函數(shù)的索引號(hào),即,用于標(biāo)識(shí)16個(gè)哈希函數(shù)中的每個(gè)哈希函數(shù)的標(biāo)識(shí)符。換言之,在m個(gè)小規(guī)模數(shù)據(jù)集的情況下,可以通過(guò)如下方式生成對(duì)應(yīng)關(guān)系表:使用m行、I列的矩陣,并且將由4位表示的16個(gè)哈希函數(shù)的索引號(hào)之一存儲(chǔ)到每行中。這里,盡管小規(guī)模數(shù)據(jù)集的數(shù)量取決于要存儲(chǔ)的數(shù)據(jù)的數(shù)量,例如,如果在一個(gè)小規(guī)模數(shù)據(jù)集中平均包含四個(gè)數(shù)據(jù),那么小規(guī)模數(shù)據(jù)集的數(shù)量變成數(shù)據(jù)的總數(shù)的四分之一。此外,由于將哈希函數(shù)與每個(gè)小規(guī)模數(shù)據(jù)集相關(guān)聯(lián)所需的信息量為4位,所以每個(gè)數(shù)據(jù)所需的信息量為約I位。此外,如果使用16個(gè)哈希函數(shù),如果將例如R1至R8的8個(gè)值作為用于16個(gè)哈希函數(shù)中的每個(gè)哈希函數(shù)的哈希系數(shù)的值存儲(chǔ)到哈希系數(shù)值表中并且八個(gè)值中每個(gè)值的大小均為2字節(jié),那么哈希系數(shù)值表的大小為256字節(jié)。因此,當(dāng)要存儲(chǔ)的數(shù)據(jù)的數(shù)量為η時(shí),將哈希函數(shù)與每個(gè)小規(guī)模數(shù)據(jù)集相關(guān)聯(lián)所需的每一個(gè)數(shù)據(jù)的信息量為約(η+2048)位。例如,每一個(gè)數(shù)據(jù)的信息量在η為1,000,OOO時(shí)為1.002η位,在η為100,000時(shí)為L(zhǎng) 020η位,以及在η為10,000時(shí)為L(zhǎng) 205η位(存儲(chǔ)效率為約80%)。以此方式,與每一個(gè)數(shù)據(jù)的信息量為1.62η位(存儲(chǔ)效率81%)或2.3η位(存儲(chǔ)效率100%)的CHD算法相比,可以減少每一個(gè)數(shù)據(jù)的信息量。具體地,隨著數(shù)據(jù)集的規(guī)模增大,可以減少每一個(gè)數(shù)據(jù)的信息量。因此,當(dāng)大規(guī)模數(shù)據(jù)集被劃分并存儲(chǔ)為小規(guī)模數(shù)據(jù)集時(shí),可以減少將哈希函數(shù)與每個(gè)小規(guī)模數(shù)據(jù)集相關(guān)聯(lián)所需的信息量。從而,可以在CPU高速緩沖存儲(chǔ)器111中確定地保留信息,并且因此,可以實(shí)現(xiàn)高速數(shù)據(jù)檢索。簡(jiǎn)言之,通過(guò)減少用于所有小規(guī)模數(shù)據(jù)集的哈希函數(shù)的標(biāo)識(shí)符長(zhǎng)度以減少存儲(chǔ)器的使用量,可以提高高速緩存器命中率并且實(shí)現(xiàn)更高速的數(shù)據(jù)檢索。[0122]要注意,雖然例如將R1至R8的八個(gè)值存儲(chǔ)作為用于16個(gè)哈希函數(shù)中的每個(gè)哈希函數(shù)的哈希系數(shù)的值的以生成哈希系數(shù)值表,但是哈希系數(shù)值表的生成不限于此。具體地,可以將一個(gè)值或多個(gè)值存儲(chǔ)作為用于16個(gè)哈希函數(shù)中的每個(gè)哈希函數(shù)的哈希系數(shù)的一個(gè)或更多個(gè)值。例如,可以將R1的一個(gè)值存儲(chǔ)作為用于16個(gè)哈希函數(shù)中的每個(gè)哈希函數(shù)的哈希系數(shù)的值以生成哈希系數(shù)值表?;蛘撸梢詫1至Rs的S (S≥ 2)個(gè)值存儲(chǔ)為用于16個(gè)哈希函數(shù)中的每個(gè)哈希函數(shù)的哈希系數(shù)的值以生成哈希系數(shù)值表。在數(shù)據(jù)的鍵串Ix1, χ2,χ3,…,χη}被表示為χκ(1≤K≤η)以及由哈希系數(shù)的值R (I≤R≤256)指定并且將包括在由fK(xK) =^(Xih) XR+xk[其中400=4(1^是初始值)]表示的函數(shù)組中的一個(gè)哈希函數(shù)用于計(jì)算哈希值的情況下,如可以從上面給出的乘積和表達(dá)式確認(rèn)的,需要R1至Rn的η個(gè)值作為哈希系數(shù)的值。因此,如果存儲(chǔ)小于η的一個(gè)值或多個(gè)值作為用于16個(gè)哈希函數(shù)中的每個(gè)哈希函數(shù)的哈希系數(shù)的值以生成哈希系數(shù)值表,那么在計(jì)算哈希值時(shí),可以使用存儲(chǔ)在哈希系數(shù)值表中的哈希系數(shù)的值來(lái)計(jì)算未存儲(chǔ)在哈希系數(shù)值表中的哈希系數(shù)的值。例如,如果僅存儲(chǔ)R1的值作為哈希系數(shù)的值以生成哈希系數(shù)值表,那么當(dāng)計(jì)算哈希值時(shí),可以使用R1的值來(lái)計(jì)算R2至Rn的值。此外,如果使用具有乘積和算術(shù)運(yùn)算或矢量算術(shù)運(yùn)算的計(jì)算功能的CPU (例如,使用CPU的SMD指令)來(lái)由計(jì)算功能執(zhí)行上述乘積和表達(dá)式的計(jì)算,或使用能夠執(zhí)行并行計(jì)算(同時(shí)并行計(jì)算)的CPU (例如,多核CPU,即,具有多個(gè)CPU單元的單個(gè)CPU設(shè)備)或多個(gè)CPU來(lái)實(shí)施上面給出的乘積和表達(dá)式的并行計(jì)算以由此計(jì)算出哈希值,那么可以利用要使用的一個(gè)或更多個(gè)CPU來(lái)確定要存儲(chǔ)到哈希系數(shù)值表中的哈希系數(shù)的值的數(shù)量。例如,在上面給出的乘積和表達(dá)式被劃分為Z項(xiàng)(乘法構(gòu)成的部分表達(dá)式)并且利用例如CPU的SMD指令來(lái)依次計(jì)算這Z項(xiàng)以計(jì)算哈希值時(shí),可以存儲(chǔ)R1至Rz的Z個(gè)值作為用于16個(gè)哈希函數(shù)中的每個(gè)哈希函數(shù)的哈希系數(shù)的值以生成哈希系數(shù)值表。例如,當(dāng)上面給出的乘積和表達(dá)式被劃分為8項(xiàng)并且利用例如CPU的SMD指令來(lái)依次計(jì)算這8項(xiàng)以計(jì)算哈希值時(shí),可以存儲(chǔ)R1至R8的8個(gè)值作為用于16個(gè)哈希函數(shù)中的每個(gè)哈希函數(shù)的哈希系數(shù)的值以生成哈希系數(shù)值表。在此情況下,在數(shù)據(jù)的鍵串為(X1, X2, X3,, XnI (η ( 8)的情況下,在計(jì)算哈希值時(shí),可以通過(guò)利用存儲(chǔ)在哈希系數(shù)值表中的R1至R8的八個(gè)值,使用例如CPU的SIMD指令來(lái)依次計(jì)算包括R1至R8的8項(xiàng),從而高速地計(jì)算哈希值。此外,在數(shù)據(jù)的鍵串為(X1, X2, X3,...,χη} (η>8)的情況下,在計(jì)算哈希值時(shí),可以任意使用存儲(chǔ)在哈希系數(shù)值表中的R1至R8的8個(gè)值來(lái)計(jì)算Rn(n ^ 9)的值,并且針對(duì)每8項(xiàng)利用例如CPU的SIMD指令來(lái)依次計(jì)算包括R1至Rn的η項(xiàng)以高速地計(jì)算哈希值。此外,例如,在上面給出的乘積和表達(dá)式被劃分為Z項(xiàng)(乘法構(gòu)成的部分表達(dá)式)并且利用可以執(zhí)行并行計(jì)算的CPU或多個(gè)CPU來(lái)依次并行計(jì)算這Z項(xiàng)以計(jì)算哈希值時(shí),可以存儲(chǔ)R1至Rz的Z個(gè)值作為用于16個(gè)哈希函數(shù)中的每個(gè)哈希函數(shù)的哈希系數(shù)的值以生成哈希系數(shù)值表。例如,在上面給出的乘積和表達(dá)式被劃分為8項(xiàng)并且利用可以執(zhí)行并行計(jì)算的CPU或多個(gè)CPU來(lái)并行計(jì)算這8項(xiàng)以計(jì)算哈希值時(shí),可以存儲(chǔ)R1至R8的8個(gè)值作為用于16個(gè)哈希函數(shù)中的每個(gè)哈希函數(shù)的哈希系數(shù)的值以生成哈希系數(shù)值表。在此情況下,在數(shù)據(jù)的鍵串為(X1, X2, X3,, XnI (η<8)的情況下,在計(jì)算哈希值時(shí),可以利用存儲(chǔ)在哈希系數(shù)值表中的R1至R8的8個(gè)值來(lái)并行計(jì)算包括R1至R8的8項(xiàng),從而高速地計(jì)算哈希值。此外,在數(shù)據(jù)的鍵串為(X1, X2, X3,...,χη} (η>8)的情況下,在計(jì)算哈希值時(shí),如果可以任意使用存儲(chǔ)在哈希系數(shù)值表中的R1至R8的8個(gè)值來(lái)計(jì)算Rn (n ^ 9)的值并且針對(duì)每8項(xiàng)并行地計(jì)算包括R1至Rn的η項(xiàng),那么可以高速地計(jì)算哈希值。還可以例如通過(guò)將使用CPU的SMD指令的方法與涉及并行計(jì)算的方法相結(jié)合來(lái)高速地計(jì)算哈希值。要注意,優(yōu)選地響應(yīng)于CPU高速緩沖存儲(chǔ)器的大小來(lái)確定哈希系數(shù)值表的大小,使得哈希系數(shù)值表可以保留在CPU高速緩沖存儲(chǔ)器中。簡(jiǎn)言之,優(yōu)選地響應(yīng)于CPU高速緩沖存儲(chǔ)器的大小來(lái)確定要存儲(chǔ)到哈希系數(shù)值表中的哈希系數(shù)的值的數(shù)量,使得哈希系數(shù)值表可以保留在CPU高速緩沖存儲(chǔ)器中。
[0123]此外,雖然采用如下情況作為示例并對(duì)其進(jìn)行了描述,但處理的執(zhí)行不限于此:在該情況下,并行執(zhí)行用于確定多個(gè)哈希函數(shù)的處理(圖3的步驟S20)、用于生成哈希系數(shù)值表的處理(圖3的步驟S30)以及用于生成對(duì)應(yīng)關(guān)系表的處理(圖3的步驟S40)。例如,可以在執(zhí)行用于確定多個(gè)哈希函數(shù)的處理之后執(zhí)行用于生成哈希系數(shù)值表的處理和用于生成對(duì)應(yīng)關(guān)系表的處理。
[0124]然后,數(shù)據(jù)存儲(chǔ)處理單元2使其哈希表生成單元(哈希信息生成單元)11生成分別用于多個(gè)數(shù)據(jù)集的多個(gè)哈希表22 (步驟S50)。具體地,數(shù)據(jù)存儲(chǔ)處理單元2使其哈希表生成單元11針對(duì)每個(gè)數(shù)據(jù)集通過(guò)以下方式生成用于該數(shù)據(jù)集的哈希表22:將數(shù)據(jù)和鍵存儲(chǔ)到基于哈希值指定的第一存儲(chǔ)位置或第二存儲(chǔ)位置,該哈希值是由用于該數(shù)據(jù)集的哈希函數(shù),利用多個(gè)數(shù)據(jù)的鍵而計(jì)算的。因此,多個(gè)哈希表22保留在主存儲(chǔ)器101中,并且在主存儲(chǔ)器101中生成存儲(chǔ)多個(gè)哈希表22的哈希表存儲(chǔ)單元(哈希信息存儲(chǔ)單元)6。
[0125]這里,數(shù)據(jù)存儲(chǔ)處理單元2使其哈希表生成單元11首先確定用于小規(guī)模數(shù)據(jù)集的哈希表22的大小(步驟C10),如圖7所示。例如,當(dāng)包含在小規(guī)模數(shù)據(jù)集中的數(shù)據(jù)的數(shù)量η’為“4”時(shí),用于小規(guī)模數(shù)據(jù)集的哈希表22的大小可以例如通過(guò)ROUND (η +0.8)而設(shè)置為“5”。因此,通過(guò)基于小規(guī)模數(shù)據(jù)集的大小來(lái)確定哈希表22的大小,可以將用于小規(guī)模數(shù)據(jù)集的哈希表22的數(shù)據(jù)存儲(chǔ)率設(shè)置為約80%。
[0126] 然后,數(shù)據(jù)存儲(chǔ)處理單元2使其哈希表生成單元11生成用于小規(guī)模數(shù)據(jù)集的哈希表22并且將哈希表22存儲(chǔ)到主存儲(chǔ)器101中(步驟C20至C80)。具體地,作為用于小規(guī)模數(shù)據(jù)集的哈希表22,在主存儲(chǔ)器101中生成具有以上述方式確定的尺寸的哈希表22,并且利用包含在小規(guī)模數(shù)據(jù)集中的數(shù)據(jù)的鍵將數(shù)據(jù)和鍵存儲(chǔ)到基于由分配給小規(guī)模數(shù)據(jù)集的哈希函數(shù)計(jì)算的哈希值而指定的第一存儲(chǔ)位置,或第二存儲(chǔ)位置,從而生成用于小規(guī)模數(shù)據(jù)集的哈希表22。
[0127]用于小規(guī)模數(shù)據(jù)集的哈希表22可以例如利用用于小規(guī)模數(shù)據(jù)集的臨時(shí)存儲(chǔ)表來(lái)生成,該臨時(shí)存儲(chǔ)表是通過(guò)上述數(shù)據(jù)存儲(chǔ)處理單元2的哈希函數(shù)確定單元8的處理生成的。要注意,對(duì)于每個(gè)小規(guī)模數(shù)據(jù)集,將多個(gè)數(shù)據(jù)的全部存儲(chǔ)到基于由分配給小大規(guī)模數(shù)據(jù)集的哈希函數(shù)計(jì)算的哈希值所指定的地址(第一存儲(chǔ)位置)或下一地址(第二存儲(chǔ)位置)以生成哈希表22。此外,這里采用如下實(shí)例作為示例并對(duì)其進(jìn)行描述:其中,連續(xù)生成從用于第一小規(guī)模數(shù)據(jù)集的第一哈希表22到用于第十六小規(guī)模數(shù)據(jù)集的第十六哈希表22的16個(gè)哈希表22。
[0128]具體地,如圖7所示,數(shù)據(jù)存儲(chǔ)處理單元2首先使其哈希表生成單元11判定數(shù)據(jù)是否已經(jīng)被存儲(chǔ)在與臨時(shí)存儲(chǔ)表的地址相對(duì)應(yīng)的哈希表22的地址中(步驟C20)。如果尚無(wú)數(shù)據(jù)被存儲(chǔ),則處理前進(jìn)到步驟C20的“否”路徑,在該路徑中,將存儲(chǔ)在臨時(shí)存儲(chǔ)表中的數(shù)據(jù)存儲(chǔ)到哈希表的相應(yīng)地址中(步驟C30)。然而,如果在步驟C20處數(shù)據(jù)已經(jīng)被存儲(chǔ),則處理前進(jìn)到“是”路徑,在該路徑中,將存儲(chǔ)在臨時(shí)存儲(chǔ)表中的數(shù)據(jù)存儲(chǔ)到哈希表的相應(yīng)地址的下一地址(步驟C80)。
[0129]該階段是如下階段:將存儲(chǔ)在用于第一小規(guī)模數(shù)據(jù)集的臨時(shí)存儲(chǔ)表的第一地址(行)中的第一數(shù)據(jù)存儲(chǔ)到主存儲(chǔ)器101中的用于第一小規(guī)模數(shù)據(jù)集的第一哈希表22的第一地址(行)中。因此,尚無(wú)數(shù)據(jù)被存儲(chǔ),從而處理前進(jìn)到步驟C80的“否”路徑。在該“否”路徑中,將存儲(chǔ)在用于第一小規(guī)模數(shù)據(jù)集的臨時(shí)存儲(chǔ)表的第一地址中的第一數(shù)據(jù)存儲(chǔ)到主存儲(chǔ)器101中的用于第一小規(guī)模數(shù)據(jù)集的第一哈希表22的第一地址中(步驟S30)。
[0130]然后,數(shù)據(jù)存儲(chǔ)處理單元2使其哈希表生成單元11判定是否有兩個(gè)數(shù)據(jù)存儲(chǔ)到臨時(shí)存儲(chǔ)表的一個(gè)地址中(步驟C40)。如果兩個(gè)數(shù)據(jù)被存儲(chǔ)到臨時(shí)存儲(chǔ)表的一個(gè)地址中,則處理前進(jìn)到步驟C40的“是”路徑,在該路徑中,將第二數(shù)據(jù)存儲(chǔ)到哈希表22的相應(yīng)地址的下一地址(步驟C50)。然而,如果兩個(gè)數(shù)據(jù)未被存儲(chǔ)到臨時(shí)存儲(chǔ)表的一個(gè)地址中,則處理前進(jìn)到步驟C40的“否”路徑,在該路徑中前進(jìn)到步驟C60。
[0131]在此階段,判定是否有兩個(gè)數(shù)據(jù)存儲(chǔ)到用于第一小規(guī)模數(shù)據(jù)集的臨時(shí)存儲(chǔ)表的第一地址中(步驟C40),如果兩個(gè)數(shù)據(jù)被存儲(chǔ)到用于第一小規(guī)模數(shù)據(jù)集的臨時(shí)存儲(chǔ)表的第一地址中,則處理前進(jìn)到步驟C40的“是”路徑。在該“是”路徑中,將第二數(shù)據(jù)存儲(chǔ)到主存儲(chǔ)器101中的用于第一小規(guī)模數(shù)據(jù)集的第一哈希表22的第二地址中(步驟C50)。另一方面,如果兩個(gè)數(shù)據(jù)未被存儲(chǔ)到用于第一小規(guī)模數(shù)據(jù)集的臨時(shí)存儲(chǔ)表的第一地址中,則處理前進(jìn)到步驟C40的“否”路徑,在該路徑中前進(jìn)到步驟C60。
[0132]此后,數(shù)據(jù)存儲(chǔ)處理單元2使其哈希表生成單元11判定存儲(chǔ)在臨時(shí)存儲(chǔ)表中的所有數(shù)據(jù)是否已經(jīng)被存儲(chǔ)到主存儲(chǔ)器101的哈希表22中(步驟C60)。如果判定尚未存儲(chǔ)所有的數(shù)據(jù),則處理前進(jìn)到步驟C60的“否”路徑,在該路徑中返回到步驟C20以重復(fù)類似處理。
[0133]在此階段,由于尚未存儲(chǔ)所有的數(shù)據(jù),所以處理返回到步驟C20。該階段是如下階段:將存儲(chǔ)到用于第一小規(guī)模數(shù)據(jù)集的臨時(shí)存儲(chǔ)表的第二地址中的第一數(shù)據(jù)存儲(chǔ)到主存儲(chǔ)器101中的用于第一小規(guī)模數(shù)據(jù)集的第一哈希表22的第二地址中。因此,在步驟C20,判定是否已經(jīng)將數(shù)據(jù)存儲(chǔ)到主存儲(chǔ)器101中的用于第一小規(guī)模數(shù)據(jù)集的第一哈希表22的第二地址中(步驟C20)。
[0134]如果作為步驟C20處的判定的結(jié)果判定了數(shù)據(jù)尚未被存儲(chǔ),則處理前進(jìn)到“否”路徑,在該路徑中,將存儲(chǔ)在用于第一小規(guī)模數(shù)據(jù)集的臨時(shí)存儲(chǔ)表的第二地址中的第一數(shù)據(jù)存儲(chǔ)到主存儲(chǔ)器101中的用于第一小規(guī)模數(shù)據(jù)集的第一哈希表22的第二地址中(步驟C30)。然后,判定是否有兩個(gè)數(shù)據(jù)存儲(chǔ)到用于第一小規(guī)模數(shù)據(jù)集的臨時(shí)存儲(chǔ)表的第二地址中(步驟C40)。如果兩個(gè)數(shù)據(jù)被存儲(chǔ)到用于第一小規(guī)模數(shù)據(jù)集的臨時(shí)存儲(chǔ)表的第二地址中,則處理前進(jìn)到步驟S40的“是”路徑,在該路徑中,將第二數(shù)據(jù)存儲(chǔ)到主存儲(chǔ)器101中的用于第一小規(guī)模數(shù)據(jù)集的第一哈希表22的第三地址中(步驟C50)。另一方面,如果在步驟S40處兩個(gè)數(shù)據(jù)未被存儲(chǔ)到用于第一小規(guī)模數(shù)據(jù)集的臨時(shí)存儲(chǔ)表的第二地址中,則處理前進(jìn)到“否”路徑,在該路徑中前進(jìn)到步驟C60。
[0135]另一方面,如果在步驟C20處判定了數(shù)據(jù)已經(jīng)被存儲(chǔ),則處理前進(jìn)到“是”路徑,在該路徑中,將存儲(chǔ)在用于第一小規(guī)模數(shù)據(jù)集的臨時(shí)存儲(chǔ)表的第二地址中的第一數(shù)據(jù)存儲(chǔ)到主存儲(chǔ)器101中的用于第一小規(guī)模數(shù)據(jù)集的第一哈希表22的第三地址中(步驟C80)。
[0136]此后,重復(fù)類似的處理,以將存儲(chǔ)在用于第一小規(guī)模數(shù)據(jù)集的臨時(shí)存儲(chǔ)表的第三地址后面的地址中的數(shù)據(jù)依次存儲(chǔ)到主存儲(chǔ)器101中的用于第一小規(guī)模數(shù)據(jù)集的第一哈希表22的相應(yīng)地址中或該相應(yīng)地址后面的地址中。
[0137]然后,如果在步驟C60判定已經(jīng)存儲(chǔ)了所有數(shù)據(jù),則處理前進(jìn)到“是”路徑,在該路徑中判定是否已經(jīng)針對(duì)所有小規(guī)模數(shù)據(jù)集生成了哈希表22(步驟C70)。如果作為上述判定的結(jié)果判定已經(jīng)針對(duì)所有小規(guī)模數(shù)據(jù)集生成了哈希表22,則處理結(jié)束,但如果判定尚未針對(duì)所有小規(guī)模數(shù)據(jù)集生成哈希表22,則處理前進(jìn)到“否”路徑,在該路徑中返回到步驟ClO以重復(fù)類似處理。
[0138]該階段是如下階段:其中,作為用于第一小規(guī)模數(shù)據(jù)集的第一哈希表22,在主存儲(chǔ)器101中生成如下哈希表22,其中將多個(gè)數(shù)據(jù)的全部存儲(chǔ)到基于由分配給第一小規(guī)模數(shù)據(jù)集的哈希函數(shù)計(jì)算的哈希值所指定的一個(gè)或更多個(gè)地址(第一存儲(chǔ)位置)或接下來(lái)的一個(gè)或更多個(gè)地址(第二存儲(chǔ)位置)。因此,在步驟C70處,判定尚未針對(duì)所有小規(guī)模數(shù)據(jù)集生成哈希表22,并且處理前進(jìn)到“否”路徑,在該路徑中返回到步驟C10。然后,重復(fù)類似處理以在主存儲(chǔ)器101中生成用于第二小規(guī)模數(shù)據(jù)集和后續(xù)小規(guī)模數(shù)據(jù)集的第二哈希表22和后續(xù)哈希表22。
[0139]然后,如果在步驟C70處判定已經(jīng)針對(duì)所有小規(guī)模數(shù)據(jù)集生成哈希表22,則處理結(jié)束。
[0140]因此,作為用于小規(guī)模數(shù)據(jù)集中的每個(gè)小規(guī)模數(shù)據(jù)集的哈希表22,可以在主存儲(chǔ)器101中生成如下哈希表22:其中將多個(gè)數(shù)據(jù)的全部存儲(chǔ)到基于由分配給小規(guī)模數(shù)據(jù)集的哈希函數(shù)計(jì)算的哈希值所指定的地址(第一存儲(chǔ)位置)或下一地址(第二存儲(chǔ)位置)?;谶@樣的近乎完美的哈希函數(shù)所生成的哈希表22保證將數(shù)據(jù)存儲(chǔ)到基于哈希值指定的地址(第一存儲(chǔ)位置)或下一地址(第二存儲(chǔ)位置)。因此,如下文所述,在數(shù)據(jù)檢索時(shí),由于每次僅需要讀出存儲(chǔ)在地址中的數(shù)據(jù)并且判定數(shù)據(jù)是否被存儲(chǔ)在地址中之一,所以與使用完美哈希函數(shù)的替代情況相比,可以抑制數(shù)據(jù)檢索效率的降低。換言之,通過(guò)相對(duì)于上述選擇完美哈希函數(shù)的替代情況的選擇條件減弱用于哈希函數(shù)的選擇條件,在可以容易并高速地進(jìn)行哈希函數(shù)的選擇的同時(shí),可以相對(duì)于使用完美哈希函數(shù)的替代情況抑制數(shù)據(jù)檢索效率的降低。
[0141]要注意,雖然這里使用由上述數(shù)據(jù)存儲(chǔ)處理單元2的哈希函數(shù)確定單元8的處理生成的用于每個(gè)小規(guī)模數(shù)據(jù)集的臨時(shí)存儲(chǔ)表來(lái)生成用于該小規(guī)模數(shù)據(jù)集的哈希表22,但哈希表22的生成不限于此。例如,哈希表22可以如圖8所示的方式生成。參照?qǐng)D8,數(shù)據(jù)存儲(chǔ)處理單元2使其哈希表的生成單元11確定用于小規(guī)模數(shù)據(jù)集的哈希表22的大小(步驟D10),并且利用作為小規(guī)模數(shù)據(jù)集的標(biāo)識(shí)號(hào)碼的CRC值從對(duì)應(yīng)關(guān)系表21 (參照?qǐng)D6)中獲取索引號(hào)(步驟D20)。然后,將所獲取的索引號(hào)用于利用所獲取的索引號(hào)從哈希系數(shù)值表20(參照?qǐng)D6)獲取指定分配給小規(guī)模數(shù)據(jù)集的哈希函數(shù)的哈希系數(shù)的值(步驟D30)。然后,通過(guò)分配給小規(guī)模數(shù)據(jù)集的哈希函數(shù),基于包括在小規(guī)模數(shù)據(jù)集中的每個(gè)數(shù)據(jù)的鍵,使用所獲取的哈希系數(shù)的值來(lái)計(jì)算哈希值(步驟D40)。然后,計(jì)算在將所計(jì)算的哈希值除以用于小規(guī)模數(shù)據(jù)集的哈希表22的大小的情況下的余數(shù)的值(步驟D50)。然后,與上述類似地按照余數(shù)值的升序?qū)?shù)據(jù)和鍵存儲(chǔ)到主存儲(chǔ)器101中的用于小規(guī)模數(shù)據(jù)集的哈希表22的基于哈希值指定的地址(第一存儲(chǔ)位置)(在此,基于根據(jù)哈希值所計(jì)算的余數(shù)的值)或下一地址(第二存儲(chǔ)位置)以生成用于每個(gè)小規(guī)模數(shù)據(jù)集的哈希表(步驟D60)。然后,可以重復(fù)類似處理直到在步驟D70判定已經(jīng)針對(duì)所有小規(guī)模數(shù)據(jù)集生成了哈希表22。要注意,雖然這里首先確定哈希表22的大小,但是大小的確定不限于此。具體地,該處理(步驟D10)至少可以在執(zhí)行用于將數(shù)據(jù)存儲(chǔ)到哈希表22中的處理(步驟D60)之前執(zhí)行。
[0142]要注意,雖然采用如下實(shí)例作為示例并對(duì)其進(jìn)行描述,但哈希表22的生成不限于此:在該實(shí)例中,將多個(gè)數(shù)據(jù)的全部存儲(chǔ)到基于由分配給小規(guī)模數(shù)據(jù)集的哈希函數(shù)計(jì)算的哈希值所指定的地址(第一存儲(chǔ)位置)或下一地址(第二存儲(chǔ)位置)以生成哈希表22。具體地,可以將多個(gè)數(shù)據(jù)的全部存儲(chǔ)到基于由分配給小規(guī)模數(shù)據(jù)集的哈希函數(shù)計(jì)算的哈希值所指定的存儲(chǔ)位置(第一存儲(chǔ)位置)或第一存儲(chǔ)位置后面的另一存儲(chǔ)位置(第二存儲(chǔ)位置)以生成哈希表。例如,可以將多個(gè)數(shù)據(jù)的全部存儲(chǔ)到基于由分配給小規(guī)模數(shù)據(jù)集的哈希函數(shù)計(jì)算的哈希值所指定的地址(第一存儲(chǔ)位置)或第一存儲(chǔ)位置后面的多個(gè)地址(第二存儲(chǔ)位置)以生成哈希表。這里,可以響應(yīng)于如下數(shù)據(jù)的大小來(lái)確定要被用作第一存儲(chǔ)位置的地址后面的第二存儲(chǔ)位置的地址的數(shù)量:該數(shù)據(jù)是在數(shù)據(jù)檢索處理時(shí)由要使用的CPU執(zhí)行一次加載指令所能夠加載的數(shù)據(jù)。例如,在使用的CPU中,每個(gè)地址的數(shù)據(jù)和鍵的總大小由d表示,并且可以通過(guò)執(zhí)行一次加載指令(例如,通用寄存器的通用加載指令或與SMD指令寄存器(如XMM寄存器或YMM寄存器)相對(duì)應(yīng)的SIMD加載指令)而加載到CPU的寄存器中的數(shù)據(jù)的大小的最大值由D表示。此外,將第一存儲(chǔ)位置后面的第y個(gè)地址的地址位置確定為第二存儲(chǔ)位置。在此情況下,y可以被確定為在OSySFLOOR (D + d)的范圍內(nèi)。這里,如果選擇較大的值作為y的值,則由于某一哈希函數(shù)可能是近乎完美的哈希函數(shù)概率增加,所以便于用于確定哈希函數(shù)的處理而且可以進(jìn)一步減小在存儲(chǔ)大量數(shù)據(jù)時(shí)要使用的哈希函數(shù)的數(shù)量。要注意,如果選擇較大的值作為I的值,則在數(shù)據(jù)檢索時(shí)檢索出檢索目標(biāo)數(shù)據(jù)或判定未存儲(chǔ)檢索目標(biāo)數(shù)據(jù)所需的時(shí)間段(CPU時(shí)間)增加約幾納秒至幾十納秒。例如,用于這種判定所需的CPU時(shí)間平均為約2/2時(shí)鐘。因此,即使通過(guò)選擇較大的值作為y的值而使上述判定所需的時(shí)間變長(zhǎng),這對(duì)檢索處理能力的影響也很小并且可以忽略不計(jì)?;蛘?,例如,可以將多個(gè)數(shù)據(jù)的全部存儲(chǔ)到基于由分配給小規(guī)模數(shù)據(jù)集的哈希函數(shù)計(jì)算的哈希值所指定的存儲(chǔ)位置(第一存儲(chǔ)位置)或在第一存儲(chǔ)位置之前的另一存儲(chǔ)位置(第二存儲(chǔ)位置)以生成哈希表22。
[0143]現(xiàn)在,參照?qǐng)D9來(lái)描述由設(shè)置在數(shù)據(jù)檢索裝置I中的數(shù)據(jù)檢索處理單元3執(zhí)行的處理,即,由數(shù)據(jù)檢索裝置I中的CPU102根據(jù)讀入到主存儲(chǔ)器101中的數(shù)據(jù)檢索程序執(zhí)行的處理(數(shù)據(jù)檢索方法)。
[0144]這里,如果數(shù)據(jù)檢索處理單元3接收到對(duì)數(shù)據(jù)的檢索請(qǐng)求,那么其以以下過(guò)程對(duì)主存儲(chǔ)器101中的多個(gè)哈希表22執(zhí)行數(shù)據(jù)檢索。
[0145]首先,如圖9所示,數(shù)據(jù)檢索處理單元3使其哈希表指定單元(哈希信息指定單元)12基于檢索目標(biāo)數(shù)據(jù)的鍵從分別存儲(chǔ)通過(guò)劃分?jǐn)?shù)據(jù)集而獲得的多個(gè)數(shù)據(jù)集的多個(gè)哈希表22中指定一個(gè)哈希表22,該一個(gè)哈希表22存儲(chǔ)包括該檢索目標(biāo)數(shù)據(jù)的一個(gè)數(shù)據(jù)集(步驟E10)。
[0146]這里,在數(shù)據(jù)檢索處理單元3接收到檢索目標(biāo)數(shù)據(jù)的鍵后,使其哈希表指定單元12計(jì)算檢索目標(biāo)數(shù)據(jù)的鍵的CRC32值并且計(jì)算在將所計(jì)算的CRC32值除以小規(guī)模數(shù)據(jù)集的數(shù)量m的情況下的余數(shù)的值(CRC值)。以此方式基于檢索目標(biāo)數(shù)據(jù)的鍵而計(jì)算的CRC值可以被用作通過(guò)劃分包括η個(gè)數(shù)據(jù)的大規(guī)模數(shù)據(jù)集而獲得的m個(gè)小規(guī)模數(shù)據(jù)集的標(biāo)識(shí)號(hào)碼,即,作為分別存儲(chǔ)m個(gè)小規(guī)模數(shù)據(jù)集的m個(gè)哈希表的標(biāo)識(shí)號(hào)碼。因此,基于以上述方式根據(jù)檢索目標(biāo)數(shù)據(jù)的鍵計(jì)算的CRC值,可以從m個(gè)哈希表中指定對(duì)包括檢索目標(biāo)數(shù)據(jù)的數(shù)據(jù)集進(jìn)行存儲(chǔ)的哈希表。換言之,可以基于檢索目標(biāo)數(shù)據(jù)的鍵來(lái)獲取存儲(chǔ)包括檢索目標(biāo)數(shù)據(jù)的數(shù)據(jù)集的哈希表的標(biāo)識(shí)號(hào)碼(標(biāo)識(shí)符)。例如,在使用支持SSE4.2擴(kuò)展指令集的CPU時(shí),可以利用作為硬件內(nèi)置的CRC32c操作指令(內(nèi)置函數(shù)名稱:crc32)高速地指定存儲(chǔ)包括檢索目標(biāo)數(shù)據(jù)的數(shù)據(jù)集的哈希表。
[0147]然后,數(shù)據(jù)檢索處理單元3使其哈希系數(shù)值獲取單元13基于檢索目標(biāo)數(shù)據(jù)的鍵,利用對(duì)應(yīng)關(guān)系表21 (參照?qǐng)D6)和哈希系數(shù)值表20 (參照?qǐng)D6)來(lái)獲取指定與一個(gè)數(shù)據(jù)集相對(duì)應(yīng)的一個(gè)哈希函數(shù)的一個(gè)哈希系數(shù)的值(步驟E20和E30),其中,該對(duì)應(yīng)關(guān)系表21將多個(gè)數(shù)據(jù)集和分別指定多個(gè)哈希函數(shù)的哈希系數(shù)的值彼此關(guān)聯(lián),該哈希系數(shù)值表20存儲(chǔ)分別指定多個(gè)哈希函數(shù)的多個(gè)哈希系數(shù)的值。
[0148]這里,數(shù)據(jù)檢索處理單元3使其哈希系數(shù)值獲取單元13使用以上述方式基于檢索目標(biāo)值的鍵計(jì)算的CRC值并且使用CPU高速緩沖存儲(chǔ)器111中的對(duì)應(yīng)關(guān)系表21 (參照?qǐng)D6)來(lái)獲取索弓I號(hào)(步驟E20 )。然后,使用該索引號(hào)來(lái)獲取指定與包括檢索目標(biāo)數(shù)據(jù)的數(shù)據(jù)集相對(duì)應(yīng)的哈希函數(shù)的哈希系數(shù)的值(這里為值R1至R8)(步驟E30)。以此方式,從CPU高速緩沖存儲(chǔ)器111獲取到指定分配給存儲(chǔ)包括檢索目標(biāo)數(shù)據(jù)的數(shù)據(jù)集的哈希表22的哈希函數(shù)(近乎完美的哈希函數(shù))的哈希系數(shù)的值。由于對(duì)應(yīng)關(guān)系表21和哈希系數(shù)值表20 (參照?qǐng)D6)兩者以此方式存儲(chǔ)在CPU高速緩沖存儲(chǔ)器111中,所以對(duì)指定與包括檢索目標(biāo)數(shù)據(jù)的數(shù)據(jù)集相對(duì)應(yīng)的哈希函數(shù)的哈希系數(shù)的值的訪問(wèn)可以在速度上提高。此外,由于以4位的固定長(zhǎng)度配置索引號(hào)(4位的固定長(zhǎng)度條目),所以可以通過(guò)頂?shù)刂?索引號(hào)X4位的四則運(yùn)算來(lái)訪問(wèn)存儲(chǔ)有期望的哈希系數(shù)的值的物理位置,因此,可以預(yù)料到訪問(wèn)速度的提高。因此,可以高速地執(zhí)行對(duì)存儲(chǔ)包括檢索目標(biāo)數(shù)據(jù)的數(shù)據(jù)集的哈希表22中的數(shù)據(jù)位置的指定。
[0149]此后,數(shù)據(jù)檢索處理單元3使其哈希值計(jì)算單元14利用檢索目標(biāo)數(shù)據(jù)的鍵和一個(gè)哈希系數(shù)的值,通過(guò)一個(gè)哈希函數(shù)計(jì)算哈希值(步驟E40)。
[0150]這里,數(shù)據(jù)檢索處理單元3使其哈希值計(jì)算單元14利用檢索目標(biāo)數(shù)據(jù)的鍵和以上述方式所獲得的指定與包括檢索目標(biāo)數(shù)據(jù)的數(shù)據(jù)集相對(duì)應(yīng)的哈希函數(shù)的哈希系數(shù)的值(這里,R1至R8中的每個(gè)值),通過(guò)如下一個(gè)哈希函數(shù)來(lái)計(jì)算哈希值(步驟E40):該一個(gè)哈希函數(shù)在數(shù)據(jù)的鍵串(X1, x2,X3,...,xn}被表示為χκ(I≤K≤η)的情況下由哈希系數(shù)R(I≤R≤256 )的值指定并且包括在由fK (xK) =fE (Xh) X R+xk [其中fk (xq) =R0 (R0是初始值)]表示的函數(shù)組中。然后,計(jì)算在將所計(jì)算的哈希值除以用于包括檢索目標(biāo)數(shù)據(jù)的數(shù)據(jù)集的哈希表的大小(這里為5)的情況下的余數(shù)的值(步驟E50)。要注意,哈希值的計(jì)算可以類似于由數(shù)據(jù)存儲(chǔ)處理單元2的哈希函數(shù)確定單元8計(jì)算哈希值來(lái)執(zhí)行。由于以此方式通過(guò)單個(gè)哈希函數(shù)fK(x)來(lái)計(jì)算哈希值,所以與上述CHD算法相比可以高速地執(zhí)行哈希值的計(jì)算,其中該CHD算法涉及通過(guò)由f I (x) + a f2 (X) + β表示的完美哈希函數(shù)計(jì)算哈希值,即,其需要計(jì)算兩個(gè)哈希函數(shù)fl (X)和f2 (X)。
[0151]此后,數(shù)據(jù)檢索處理單元3使其讀出單元15從一個(gè)哈希表22中讀出存儲(chǔ)在基于哈希值指定的第一存儲(chǔ)位置和與第一存儲(chǔ)位置鄰接的第二存儲(chǔ)位置中的數(shù)據(jù)和鍵(步驟E60)。由于以此方式讀出存儲(chǔ)在基于哈希值指定的第一存儲(chǔ)位置和與第一存儲(chǔ)位置鄰接的第二存儲(chǔ)位置中的數(shù)據(jù)和鍵,所以與使用完美哈希函數(shù)的替代情況相比,可以抑制數(shù)據(jù)檢索效率的降低。
[0152]這里,數(shù)據(jù)檢索處理單元3使其讀出單元15從主存儲(chǔ)器101 (或CPU高速緩沖存儲(chǔ)器111),具體地,從由以上述方式基于檢索目標(biāo)數(shù)據(jù)的鍵計(jì)算的CRC值指定的哈希表22中,讀出存儲(chǔ)在由在將以上述方式計(jì)算的哈希值除以哈希表的大小的情況下的余數(shù)的值所指定的地址(第一存儲(chǔ)位置)和下一地址(第二存儲(chǔ)位置)中的數(shù)據(jù)和鍵(步驟E60)。
[0153]要注意,由于如上所述在主存儲(chǔ)器101中生成關(guān)于其將多個(gè)數(shù)據(jù)全部存儲(chǔ)到基于哈希值指定的地址(第一存儲(chǔ)位置)或下一地址(第二存儲(chǔ)位置)中的哈希表22,所以采用其中讀出存儲(chǔ)到基于哈希值指定的地址(第一存儲(chǔ)位置)或下一地址(第二存儲(chǔ)位置)中的數(shù)據(jù)和鍵的情況作為示例并對(duì)其進(jìn)行描述,但數(shù)據(jù)和鍵的讀出不限于此。具體地,響應(yīng)于由上述數(shù)據(jù)存儲(chǔ)處理單元2的哈希表生成單元11生成的哈希表22,可以讀出存儲(chǔ)到基于哈希值指定的存儲(chǔ)位置(第一存儲(chǔ)位置)或與第一存儲(chǔ)位置鄰接的另一存儲(chǔ)位置(第二存儲(chǔ)位置)中的數(shù)據(jù)和鍵。例如,在將多個(gè)數(shù)據(jù)全部存儲(chǔ)到基于由分配給小規(guī)模數(shù)據(jù)集的哈希函數(shù)計(jì)算的哈希值所指定的地址(第一存儲(chǔ)位置)或第一存儲(chǔ)位置后面的多個(gè)地址(第二存儲(chǔ)位置)中以生成哈希表22時(shí),可以讀出存儲(chǔ)在基于哈希值指定的地址(第一存儲(chǔ)位置)或第一存儲(chǔ)位置后面的多個(gè)地址(第二存儲(chǔ)位置)中的數(shù)據(jù)和鍵。這里,可以響應(yīng)于如下數(shù)據(jù)的大小來(lái)確定要被用作第一存儲(chǔ)位置的地址后面的第二存儲(chǔ)位置的地址的數(shù)量:該數(shù)據(jù)是由要使用的CPU執(zhí)行一次加載指令所能夠加載的數(shù)據(jù)。例如,在使用的CPU中,每個(gè)地址的數(shù)據(jù)和鍵的總大小由d表示,并且可以通過(guò)執(zhí)行一次加載指令(例如,通用寄存器的通用加載指令或與SIMD指令寄存器(如XMM寄存器或YMM寄存器)相對(duì)應(yīng)的SIMD加載指令)而加載到(PU的寄存器中的數(shù)據(jù)的大小的最大值由D表示。此外,將第一存儲(chǔ)位置后面的第y個(gè)地址的地址位置確定為第二存儲(chǔ)位置。在此情況下,可以從FLOOR (D + d)的范圍內(nèi)確定I。 另外,例如,在將多個(gè)數(shù)據(jù)全部存儲(chǔ)到基于由分配給小規(guī)模數(shù)據(jù)集的哈希函數(shù)計(jì)算的哈希值所指定的存儲(chǔ)位置(第一存儲(chǔ)位置)或第一存儲(chǔ)位置之前的另一存儲(chǔ)位置(第二存儲(chǔ)位置)以生成哈希表22的情況下,可以讀出存儲(chǔ)到基于哈希值指定的存儲(chǔ)位置(第一存儲(chǔ)位置)或第一存儲(chǔ)位置之前的存儲(chǔ)位置(第二存儲(chǔ)位置)中的數(shù)據(jù)和鍵。
[0154]此后,數(shù)據(jù)檢索處理單元3使其輸出單元16在判定從第一存儲(chǔ)位置或第二存儲(chǔ)位置讀出的鍵與檢索目標(biāo)數(shù)據(jù)的鍵一致時(shí)輸出與被判定為一致的鍵相關(guān)聯(lián)的數(shù)據(jù)作為檢索目標(biāo)數(shù)據(jù)(步驟E70至E110)。
[0155]這里,數(shù)據(jù)檢索處理單元3使其輸出單元16判定從以上述方式基于哈希值指定的地址(第一存儲(chǔ)位置)和下一地址(第二存儲(chǔ)位置)讀出的鍵是否與檢索目標(biāo)數(shù)據(jù)的鍵一致。具體地,首先判定從基于哈希值指定的地址讀出的鍵是否與檢索目標(biāo)數(shù)據(jù)的鍵一致(步驟E70),然后判定從基于哈希值指定的地址的下一地址讀出的鍵是否與檢索目標(biāo)數(shù)據(jù)的鍵一致(步驟E90)。如果作為上述判定的結(jié)果判定從基于哈希值指定的地址讀出的鍵與檢索目標(biāo)數(shù)據(jù)的鍵一致,則輸出與從基于哈希值指定的地址讀出的鍵相關(guān)聯(lián)的數(shù)據(jù)作為檢索目標(biāo)數(shù)據(jù)(步驟E80)。另一方面,如果判定從基于哈希值指定的地址的下一地址讀出的鍵與檢索目標(biāo)數(shù)據(jù)的鍵一致,則輸出與從基于哈希值指定的地址的下一地址讀出的鍵相關(guān)聯(lián)的數(shù)據(jù)作為檢索目標(biāo)數(shù)據(jù)(步驟E100)。此外,如果從基于哈希值指定的地址讀出的鍵和從基于哈希值指定的地址的下一地址讀出的鍵均不與檢索目標(biāo)數(shù)據(jù)的鍵一致,則輸出檢索失敗消息(錯(cuò)誤消息)(步驟E110)。
[0156]因此,根據(jù)本實(shí)施方式的數(shù)據(jù)檢索裝置、數(shù)據(jù)存儲(chǔ)方法和數(shù)據(jù)檢索方法的優(yōu)點(diǎn)在于:可以提高數(shù)據(jù)存儲(chǔ)速度和數(shù)據(jù)檢索速度,同時(shí)盡可能地抑制數(shù)據(jù)檢索效率的降低。
[0157]具體地,利用根據(jù)本實(shí)施方式的數(shù)據(jù)檢索裝置、數(shù)據(jù)存儲(chǔ)方法和數(shù)據(jù)檢索方法,使用近乎完美的哈希函數(shù)來(lái)再利用小數(shù)量的哈希函數(shù),并且使用上述對(duì)應(yīng)關(guān)系表21和哈希系數(shù)值表20(參照?qǐng)D6)。因此,根據(jù)本實(shí)施方式的數(shù)據(jù)檢索裝置、數(shù)據(jù)存儲(chǔ)方法和數(shù)據(jù)檢索方法的優(yōu)點(diǎn)在于:在通過(guò)哈希函數(shù)來(lái)計(jì)算哈希值時(shí),僅需要訪問(wèn)CPU高速緩沖存儲(chǔ)器111,使得可以在不降低數(shù)據(jù)檢索效率和不降低數(shù)據(jù)存儲(chǔ)效率的情況下提高數(shù)據(jù)檢索速度。
[0158]具體地,作為抑制在針對(duì)大規(guī)模數(shù)據(jù)集計(jì)算完美哈希函數(shù)時(shí)的計(jì)算成本的方法,CHD算法是可用的,其中大規(guī)模的數(shù)據(jù)集被劃分為多個(gè)小規(guī)模數(shù)據(jù)集,并且針對(duì)多個(gè)小規(guī)模數(shù)據(jù)集的每個(gè)小規(guī)模數(shù)據(jù)集計(jì)算各個(gè)完美哈希函數(shù)。
[0159]然而,在CHD算法中,使用與小規(guī)模數(shù)據(jù)集的數(shù)量相對(duì)應(yīng)的多個(gè)完美哈希函數(shù)。因此,隨著數(shù)據(jù)集的規(guī)模增大,將哈希函數(shù)與小規(guī)模數(shù)據(jù)集中的每個(gè)小規(guī)模數(shù)據(jù)集相關(guān)聯(lián)所需的信息量增加,并且使用增加的存儲(chǔ)區(qū)。在此情況下,難以將所有信息存儲(chǔ)到具有高讀出速度的CPU高速緩沖存儲(chǔ)器中。因此,當(dāng)通過(guò)哈希函數(shù)來(lái)計(jì)算哈希值時(shí),以固定概率發(fā)生對(duì)主存儲(chǔ)器的訪問(wèn),并且由于對(duì)主存儲(chǔ)器的訪問(wèn)速度是訪問(wèn)CPU高度緩沖存儲(chǔ)器的速度的幾十分之一至幾百分之一,所以數(shù)據(jù)檢索速度下降。
[0160]此外,在上述CHD算法中,作為與多個(gè)小規(guī)模數(shù)據(jù)集中的每個(gè)小規(guī)模數(shù)據(jù)集相對(duì)應(yīng)的各個(gè)完美哈希函數(shù),計(jì)算由兩個(gè)哈希函數(shù)fl (X)的和f2(x)以及兩個(gè)算子α和β —即,表達(dá)式X=Fl (x) + a f2 (X) + β——定義的完美哈希函數(shù),并且利用完美哈希函數(shù)來(lái)計(jì)算哈希值X。然后,基于由完美哈希函數(shù)計(jì)算的哈希值來(lái)存儲(chǔ)數(shù)據(jù)以生成哈希表。然而,需要時(shí)間來(lái)確定完美哈希函數(shù)、計(jì)算哈希值以及生成哈希表。因此,需要時(shí)間來(lái)存儲(chǔ)數(shù)據(jù),并且數(shù)據(jù)存儲(chǔ)速度較低。
[0161]此外,在上述CHD算法中,壓縮并保留與多個(gè)小規(guī)模數(shù)據(jù)集相對(duì)應(yīng)的各個(gè)完美哈希函數(shù)的算子α和β,然后在數(shù)據(jù)檢索時(shí),對(duì)所壓縮的算子α和β進(jìn)行解壓縮以獲得原始算子。然后,使用原始算子來(lái)通過(guò)上述完美哈希函數(shù)計(jì)算哈希值,并且使用所計(jì)算的哈希值來(lái)檢索數(shù)據(jù)。然而,需要時(shí)間來(lái)計(jì)算哈希值。因此,需要時(shí)間來(lái)檢索數(shù)據(jù),并且數(shù)據(jù)檢索速度較低。
[0162]另一方面,為了提高數(shù)據(jù)檢索速度,似乎可能的構(gòu)思為:再次利用一小數(shù)量的哈希函數(shù),即,將一個(gè)哈希函數(shù)分配給多個(gè)小規(guī)模數(shù)據(jù)集來(lái)代替將一個(gè)哈希函數(shù)分配給一個(gè)小規(guī)模數(shù)據(jù)集,從而減少要使用的哈希函數(shù)的數(shù)量并減少信息量。
[0163]然而,只要在CHD算法中使用完美哈希函數(shù)作為哈希函數(shù),就不能顯著減少哈希函數(shù)的數(shù)量,并且難以充分減少信息量。換言之,為了充分減少信息量,期望將要使用的哈希函數(shù)的數(shù)量減少至幾十或更少。然而,由于某個(gè)哈希函數(shù)可能是用于給定小規(guī)模數(shù)據(jù)集的完美哈希函數(shù)的概率非常低,所以難以從幾十或更少的哈希函數(shù)中針對(duì)所有小規(guī)模數(shù)據(jù)集來(lái)選擇完美哈希函數(shù)。因此,只要使用完美哈希函數(shù)作為哈希函數(shù),在可以充分地降低信息量之前難以減少要使用的哈希函數(shù)的數(shù)量。
[0164]在此情況下,如果使用非完美哈希函數(shù)作為哈希函數(shù),則可以減少要使用的哈希函數(shù)的數(shù)量并且減少信息量。然而,如果使用非完美哈希函數(shù)作為哈希函數(shù),那么數(shù)據(jù)檢索效率下降。
[0165]此外,似乎可能的構(gòu)思為:降低哈希表的存儲(chǔ)效率,例如,通過(guò)將七個(gè)數(shù)據(jù)而不是八個(gè)數(shù)據(jù)存儲(chǔ)到具有可以存儲(chǔ)10個(gè)數(shù)據(jù)的大小的哈希表中,從而提高某個(gè)哈希函數(shù)可能是用于給定小規(guī)模數(shù)據(jù)集的完美哈希函數(shù)的概率,并且減少要使用的哈希函數(shù)的數(shù)量以及減少信息量。然而,這使數(shù)據(jù)的存儲(chǔ)效率下降。因此,如果使用具有低存儲(chǔ)效率的哈希表,則會(huì)壓縮存儲(chǔ)器利用率。
[0166]因此,在根據(jù)本實(shí)施方式的數(shù)據(jù)檢索裝置、數(shù)據(jù)存儲(chǔ)方法和數(shù)據(jù)檢索方法中,使用上述近乎完美的哈希函數(shù)來(lái)再利用小數(shù)量的哈希函數(shù),并且使用上述對(duì)應(yīng)關(guān)系表21和哈希系數(shù)值表20 (參照?qǐng)D6),以通過(guò)使得在通過(guò)哈希函數(shù)來(lái)計(jì)算哈希值時(shí)僅需要訪問(wèn)CPU高速緩沖存儲(chǔ)器111而使得可以提高數(shù)據(jù)檢索速度,而不使數(shù)據(jù)檢索效率下降并且不使數(shù)據(jù)存儲(chǔ)效率降低。具體地,通過(guò)使用顯著提高哈希函數(shù)的重復(fù)使用率的近乎完美的哈希函數(shù)來(lái)減少將哈希函數(shù)與每個(gè)小規(guī)模數(shù)據(jù)集相關(guān)聯(lián)所需的信息量,可以提高高速緩存器命中率,從而實(shí)現(xiàn)數(shù)據(jù)檢索速度的增加,同時(shí)保持與完美哈希函數(shù)相比擬的數(shù)據(jù)檢索效率,并且保持與上述CHD算法相比擬的數(shù)據(jù)存儲(chǔ)效率。
[0167]要注意,雖然在本實(shí)施方式中采用使用16個(gè)哈希函數(shù)的情況作為示例并對(duì)其進(jìn)行描述,但哈希函數(shù)的數(shù)量不限于此。例如,可以使用32個(gè)哈希函數(shù)。在此情況下,由于用于標(biāo)識(shí)32個(gè)哈希函數(shù)的標(biāo)識(shí)符(索引號(hào))由5位表示,對(duì)應(yīng)關(guān)系表所必需的信息量與使用16個(gè)哈希函數(shù)的情況相比增加了約25%。然而,即使如果如剛才所提及的這種信息量增加,該信息也可以保留在CPU高速緩沖存儲(chǔ)器中,因此可以實(shí)現(xiàn)高速數(shù)據(jù)檢索。另一方面,如果要使用的哈希函數(shù)的數(shù)量增加,則用于確定哈希函數(shù)的處理的速度也增加。這是因?yàn)樵谏鲜鰧?shí)施方式關(guān)于是否超過(guò)閾值thd的判定中可以采用某個(gè)哈希函數(shù)作為哈希函數(shù)的概率增加,并且試驗(yàn)的次數(shù)減少。例如,在要存儲(chǔ)的數(shù)據(jù)的數(shù)量超過(guò)500,000的情況下,優(yōu)選地使用32個(gè)哈希函數(shù)。要注意,如果要使用的哈希函數(shù)的數(shù)量減少到8個(gè)或更少,那么在上述實(shí)施方式關(guān)于是否超過(guò)閾值thd的判定中變得非常難以采用某個(gè)哈希函數(shù)作為哈希函數(shù)。因此,優(yōu)選地將要使用的哈希函數(shù)的數(shù)量設(shè)置為16或更多。這里,如果要使用的哈希函數(shù)的數(shù)量由P表示,那么將哈希函數(shù)與每個(gè)小規(guī)模數(shù)據(jù)集相關(guān)聯(lián)所需的信息量為ceil (log(p))。因此,當(dāng)P改變時(shí),將哈希函數(shù)與每個(gè)小規(guī)模數(shù)據(jù)集相關(guān)聯(lián)所需的信息量與log(p)成比例地改變。因此,為了提高高速緩存命中率并且實(shí)現(xiàn)更高速度的數(shù)據(jù)檢索,將要使用的哈希函數(shù)的數(shù)量確定為使得將哈希函數(shù)與每個(gè)小規(guī)模數(shù)據(jù)集相關(guān)聯(lián)所需的信息量(具體地為對(duì)應(yīng)關(guān)系表所需的信息量)變?yōu)楦鶕?jù)CPU高速緩沖存儲(chǔ)器的大小的信息量。
[0168]此外,可以將根據(jù)上述本實(shí)施方式的數(shù)據(jù)檢索裝置、數(shù)據(jù)存儲(chǔ)方法以及數(shù)據(jù)檢索方法用于例如精確匹配檢索、最長(zhǎng)匹配字符串檢索等。這里,將精確匹配檢索用于例如驗(yàn)證唯一的ID,如商品編號(hào)、型號(hào)、商店的條形碼、雇員編號(hào)、國(guó)家代碼或郵件地址等。同時(shí),將最長(zhǎng)匹配字符串檢索用于例如詞法分析和語(yǔ)法分析(例如,編譯器)、形態(tài)分析(例如,字符輸入裝置αΜΕ )中的轉(zhuǎn)換處理)、IP通信中的路由表檢索、電話網(wǎng)絡(luò)中的路由表檢索、貨物運(yùn)輸中通過(guò)郵政編碼的行李目的地分布、字典型的數(shù)據(jù)壓縮中的字典的最長(zhǎng)匹配檢索等。
[0169]在下文中,作為精確匹配檢索的示例,首先采用如下情況作為示例并對(duì)其進(jìn)行描述:其中,將上述實(shí)施方式的數(shù)據(jù)檢索裝置、數(shù)據(jù)存儲(chǔ)方法和數(shù)據(jù)檢索方法應(yīng)用于雇員ID檢索系統(tǒng)。然后,作為最長(zhǎng)匹配字符串檢索的示例,采用如下情況作為示例并對(duì)其進(jìn)行描述:其中,將數(shù)據(jù)檢索裝置、數(shù)據(jù)存儲(chǔ)方法和數(shù)據(jù)檢索方法應(yīng)用于字典型數(shù)據(jù)壓縮系統(tǒng)中。
[0170][雇員ID檢索系統(tǒng)作為精確匹配檢索的示例]
[0171]在此,作為數(shù)據(jù)檢索裝置的雇員ID檢索系統(tǒng)是根據(jù)雇員ID來(lái)檢索具有該雇員ID的雇員的姓名的系統(tǒng)。
[0172]在本雇員ID檢索系統(tǒng)中,如果接收到對(duì)如圖10所描繪的這種數(shù)據(jù)集的存儲(chǔ)請(qǐng)求,則按照以下過(guò)程將數(shù)據(jù)集存儲(chǔ)到在主存儲(chǔ)器101中生成的哈希表22中。
[0173]首先,如果雇員ID檢索系統(tǒng)的數(shù)據(jù)存儲(chǔ)處理單元2接收到如圖10所描繪的存儲(chǔ)目標(biāo)的這種數(shù)據(jù)集,則使其數(shù)據(jù)劃分單元7將存儲(chǔ)目標(biāo)的數(shù)據(jù)集劃分為如圖12所描繪的多個(gè)數(shù)據(jù)集。
[0174]這里,數(shù)據(jù)存儲(chǔ)處理單元2使其數(shù)據(jù)劃分單元7計(jì)算構(gòu)成存儲(chǔ)目標(biāo)的數(shù)據(jù)集的多個(gè)數(shù)據(jù)中的每個(gè)數(shù)據(jù)的鍵的CRC32值,并且計(jì)算在將每個(gè)所計(jì)算的CRC32值除以小規(guī)模數(shù)據(jù)集的數(shù)量(這里為5)的情況下的余數(shù)的值(CRC值)。然后,將包括多個(gè)數(shù)據(jù)的存儲(chǔ)目標(biāo)的數(shù)據(jù)集劃分為如圖12所描繪的多個(gè)小規(guī)模數(shù)據(jù)集,使得所計(jì)算的CRC值彼此相等的數(shù)據(jù)可以被包括在同一小規(guī)模數(shù)據(jù)集中。具體地,將所計(jì)算的CRC值用作多個(gè)小規(guī)模數(shù)據(jù)集的標(biāo)識(shí)號(hào)碼(數(shù)據(jù)集號(hào)碼)以將包括多個(gè)數(shù)據(jù)的存儲(chǔ)目標(biāo)的數(shù)據(jù)集劃分為多個(gè)小規(guī)模數(shù)據(jù)集。例如,在使用支持SSE4.2擴(kuò)展指令集的CPU時(shí),可以利用作為硬件內(nèi)置的CRC32c操作指令(內(nèi)置函數(shù)名稱:crc32)高速地將包括多個(gè)數(shù)據(jù)的存儲(chǔ)目標(biāo)的數(shù)據(jù)集劃分為多個(gè)小規(guī)模數(shù)據(jù)集。
[0175]然后,數(shù)據(jù)存儲(chǔ)處理單元2使其哈希函數(shù)確定單元8確定如圖13所描繪的分別用于多個(gè)小規(guī)模數(shù)據(jù)集的多個(gè)哈希函數(shù)。
[0176]然后,數(shù)據(jù)存儲(chǔ)處理單元2使其哈希系數(shù)值表生成單元9(哈希函數(shù)實(shí)體管理表生成單元)生成哈希系數(shù)值表(哈希函數(shù)實(shí)體管理表),在該哈希系數(shù)值表中存儲(chǔ)有如圖14所描繪的用于分別指定多個(gè)哈希函數(shù)的多個(gè)哈希系數(shù)的值。
[0177]然后,數(shù)據(jù)存儲(chǔ)處理單元2使其對(duì)應(yīng)關(guān)系表生成單元10 (哈希函數(shù)索引表生成單元)生成對(duì)應(yīng)關(guān)系表(哈希函數(shù)索引表),該對(duì)應(yīng)關(guān)系表如圖15所描繪的將用于指定多個(gè)哈希函數(shù)的多個(gè)哈希系數(shù)的值與多個(gè)數(shù)據(jù)集彼此相關(guān)聯(lián)。
[0178]然后,數(shù)據(jù)存儲(chǔ)處理單元2使其哈希表生成單元11生成分別用于多個(gè)數(shù)據(jù)集的多個(gè)哈希表22。
[0179]這里,數(shù)據(jù)存儲(chǔ)處理單元2使其哈希表生成單元11首先確定與每個(gè)小規(guī)模數(shù)據(jù)集相對(duì)應(yīng)的哈希表22的大小。例如,當(dāng)包含在每個(gè)小規(guī)模數(shù)據(jù)集中的數(shù)據(jù)的數(shù)量η’為“4”時(shí),用于每個(gè)小規(guī)模數(shù)據(jù)集的哈希表的大小可以通過(guò)ROUND (η’+0.8)而確定為“5”。因此,通過(guò)基于每個(gè)小規(guī)模數(shù)據(jù)集的大小來(lái)確定哈希表22的大小,可以將用于每個(gè)小規(guī)模數(shù)據(jù)集的哈希表22的數(shù)據(jù)存儲(chǔ)率設(shè)置為約80%。
[0180]然后,數(shù)據(jù)存儲(chǔ)處理單元2使其哈希表生成單元11上生成用于每個(gè)小規(guī)模數(shù)據(jù)集的哈希表22,并且將哈希表22存儲(chǔ)到主存儲(chǔ)器101中。
[0181]這里,將利用作為小規(guī)模數(shù)據(jù)集的標(biāo)識(shí)號(hào)碼的CRC值從對(duì)應(yīng)關(guān)系表獲取的索引號(hào)用于從哈希系數(shù)值表獲取用于指定分配給小規(guī)模數(shù)據(jù)集的哈希函數(shù)的哈希系數(shù)的值。然后,通過(guò)分配給小規(guī)模數(shù)據(jù)集的哈希函數(shù),基于包括在小規(guī)模數(shù)據(jù)集中的每個(gè)數(shù)據(jù)的鍵,使用哈希系數(shù)的值來(lái)計(jì)算哈希值。然后,計(jì)算在將所計(jì)算的哈希值除以用于小規(guī)模數(shù)據(jù)集的哈希表的大小的情況下的余數(shù)的值。然后,按照余數(shù)的升序?qū)?shù)據(jù)和鍵存儲(chǔ)到主存儲(chǔ)器中的用于小規(guī)模數(shù)據(jù)集的哈希表的基于哈希值指定的地址(第一存儲(chǔ)位置)或下一地址(第二存儲(chǔ)位置)以生成用于每個(gè)小規(guī)模數(shù)據(jù)集的哈希表。
[0182]具體地,關(guān)于標(biāo)識(shí)號(hào)碼(數(shù)據(jù)集號(hào)碼)為“O” 一即其CRC值為“O” 一的小規(guī)模數(shù)據(jù)集,基于包括在小規(guī)模數(shù)據(jù)集中的每個(gè)數(shù)據(jù)的鍵來(lái)計(jì)算哈希值,并且計(jì)算在將所計(jì)算的哈希值除以用于數(shù)據(jù)集號(hào)碼為“O”的小規(guī)模數(shù)據(jù)集的哈希表22的大小(這里為5)的情況下的余數(shù)的值。通過(guò)計(jì)算,獲得如圖16所描繪的這種結(jié)果。然后,按照余數(shù)值的升序?qū)?shù)據(jù)和鍵存儲(chǔ)到主存儲(chǔ)器101中的用于數(shù)據(jù)集號(hào)碼為“O”的小規(guī)模數(shù)據(jù)集的哈希表22的基于哈希值指定的地址(第一存儲(chǔ)位置)或下一地址(第二存儲(chǔ)位置),以生成用于數(shù)據(jù)集號(hào)碼為“O”的小規(guī)模數(shù)據(jù)集的哈希表22。結(jié)果,生成如圖17所描繪的這種哈希表22。
[0183]類似地,關(guān)于標(biāo)識(shí)號(hào)碼(數(shù)據(jù)集號(hào)碼)為“I” 一即其CRC值為“I” 一的小規(guī)模數(shù)據(jù)集,基于包括在小規(guī)模數(shù)據(jù)集中的每個(gè)數(shù)據(jù)的鍵來(lái)計(jì)算哈希值,并且計(jì)算在將所計(jì)算的哈希值除以用于數(shù)據(jù)集號(hào)碼為“I”的小規(guī)模數(shù)據(jù)集的哈希表22的大小(這里為5)的情況下的余數(shù)的值。通過(guò)計(jì)算,獲得如圖18所描繪的這種結(jié)果。然后,按照余數(shù)值的升序?qū)?shù)據(jù)和鍵存儲(chǔ)到主存儲(chǔ)器101中的用于數(shù)據(jù)集號(hào)碼為“I”的小規(guī)模數(shù)據(jù)集的哈希表22的基于哈希值指定的地址(第一存儲(chǔ)位置)或下一地址(第二存儲(chǔ)位置),以生成用于數(shù)據(jù)集號(hào)碼為“I”的小規(guī)模數(shù)據(jù)集的哈希表22。結(jié)果,生成如圖19所描繪的這種哈希表22。
[0184]類似地,還關(guān)于標(biāo)識(shí)號(hào)碼(數(shù)據(jù)集號(hào)碼)為“2” 一即其CRC值為“2”——的小規(guī)模數(shù)據(jù)集,基于包括在小規(guī)模數(shù)據(jù)集中的每個(gè)數(shù)據(jù)的鍵來(lái)計(jì)算哈希值,并且計(jì)算在將所計(jì)算的哈希值除以用于數(shù)據(jù)集號(hào)碼為“2”的小規(guī)模數(shù)據(jù)集的哈希表22的大小(這里為5)的情況下的余數(shù)的值。通過(guò)計(jì)算,獲得如圖20所描繪的這種結(jié)果。然后,按照余數(shù)值的升序?qū)?shù)據(jù)和鍵存儲(chǔ)到主存儲(chǔ)器101中的用于數(shù)據(jù)集號(hào)碼為“2”的小規(guī)模數(shù)據(jù)集的哈希表22的基于哈希值指定的地址(第一存儲(chǔ)位置)或下一地址(第二存儲(chǔ)位置),以生成用于數(shù)據(jù)集號(hào)碼為“2”的小規(guī)模數(shù)據(jù)集的哈希表22。結(jié)果,生成如圖21所描繪的這種哈希表22。[0185]類似地,還關(guān)于標(biāo)識(shí)號(hào)碼(數(shù)據(jù)集號(hào)碼)為“3”——即其CRC值為“3”——的小規(guī)模數(shù)據(jù)集,基于包括在小規(guī)模數(shù)據(jù)集中的每個(gè)數(shù)據(jù)的鍵來(lái)計(jì)算哈希值,并且計(jì)算在將所計(jì)算的哈希值除以用于數(shù)據(jù)集號(hào)碼為“3”的小規(guī)模數(shù)據(jù)集的哈希表22的大小(這里為5)的情況下的余數(shù)的值。獲得如圖22所描繪的這種結(jié)果。然后,按照余數(shù)值的升序?qū)?shù)據(jù)和鍵存儲(chǔ)到主存儲(chǔ)器101中的用于數(shù)據(jù)集號(hào)碼為“3”的小規(guī)模數(shù)據(jù)集的哈希表22的基于哈希值指定的地址(第一存儲(chǔ)位置)或下一地址(第二存儲(chǔ)位置),以生成用于數(shù)據(jù)集號(hào)碼為“3”的小規(guī)模數(shù)據(jù)集的哈希表22。結(jié)果,生成如圖23所描繪的這種哈希表22。
[0186]類似地,還關(guān)于標(biāo)識(shí)號(hào)碼(數(shù)據(jù)集號(hào)碼)為“4” 一即其CRC值為“4”——的小規(guī)模數(shù)據(jù)集,基于包括在小規(guī)模數(shù)據(jù)集中的每個(gè)數(shù)據(jù)的鍵來(lái)計(jì)算哈希值,并且計(jì)算在將所計(jì)算的哈希值除以用于數(shù)據(jù)集號(hào)碼為“4”的小規(guī)模數(shù)據(jù)集的哈希表22的大小(這里為5)的情況下的余數(shù)的值。獲得如圖24所描繪的這種結(jié)果。然后,按照余數(shù)值的升序?qū)?shù)據(jù)和鍵存儲(chǔ)到主存儲(chǔ)器101中的用于數(shù)據(jù)集號(hào)碼為“4”的小規(guī)模數(shù)據(jù)集的哈希表22的基于哈希值指定的地址(第一存儲(chǔ)位置)或下一地址(第二存儲(chǔ)位置),以生成用于數(shù)據(jù)集號(hào)碼為“4”的小規(guī)模數(shù)據(jù)集的哈希表22。結(jié)果,生成如圖25所描繪的這種哈希表22。
[0187]附帶地,如果接收到對(duì)數(shù)據(jù)的檢索請(qǐng)求,則本雇員ID檢索系統(tǒng)按照以下過(guò)程在主存儲(chǔ)器101的多個(gè)哈希表22中執(zhí)行數(shù)據(jù)檢索。
[0188]這里,采用其中接收到雇員ID “0110”作為用于檢索目標(biāo)數(shù)據(jù)的鍵的情況作為示例并對(duì)其進(jìn)行描述。
[0189]首先,如圖26所示,雇員ID檢索系統(tǒng)的數(shù)據(jù)檢索處理單元3使其哈希表指定單元12基于檢索目標(biāo)數(shù)據(jù)的鍵,從分別存儲(chǔ)從數(shù)據(jù)集劃分的多個(gè)數(shù)據(jù)集的多個(gè)哈希表22中指定存儲(chǔ)包括檢索目標(biāo)數(shù)據(jù)的數(shù)據(jù)集的一個(gè)哈希表22。
[0190]這里,在接收到雇員ID “0110”作為檢索目標(biāo)數(shù)據(jù)的鍵時(shí)(步驟F10),數(shù)據(jù)檢索處理單元3使其哈希表指定單元12計(jì)算作為檢索目標(biāo)數(shù)據(jù)的鍵的雇員ID “0110”的CRC32值(步驟F20)。然后,計(jì)算在將所計(jì)算的CRC32值(這里為“0xl4429f04”)除以小規(guī)模數(shù)據(jù)集的數(shù)量(這里為“5”)的情況下的余數(shù)的值(CRC值;這里為“4”)(步驟F30)。
[0191]然后,數(shù)據(jù)檢索處理單元3使其哈希系數(shù)值獲取單元13基于檢索目標(biāo)數(shù)據(jù)的鍵,利用對(duì)應(yīng)關(guān)系表(參照?qǐng)D15)和哈希系數(shù)值表(參照?qǐng)D14)來(lái)獲取用于指定與一個(gè)數(shù)據(jù)集相對(duì)應(yīng)的一個(gè)哈希函數(shù)的一個(gè)哈希系數(shù)的值(步驟F40和F50),其中,該對(duì)應(yīng)關(guān)系表將多個(gè)數(shù)據(jù)集和分別指定多個(gè)哈希函數(shù)的哈希系數(shù)的值彼此關(guān)聯(lián),該哈希系數(shù)值表存儲(chǔ)分別指定多個(gè)哈希函數(shù)的多個(gè)哈希系數(shù)的值。
[0192]這里,數(shù)據(jù)檢索處理單元3使其哈希系數(shù)值獲取單元13利用以上述方式基于檢索目標(biāo)數(shù)據(jù)的鍵而計(jì)算的CRC值(這里為“4”)并且利用CPU高速緩沖存儲(chǔ)器111中的對(duì)應(yīng)關(guān)系表(參照?qǐng)D15)來(lái)獲取索引號(hào)(這里為“6”)(步驟F40)。然后,利用所獲取的索引號(hào)(這里為“6”),從CPU高速緩沖存儲(chǔ)器111中的哈希系數(shù)值表(參照?qǐng)D14)獲取用于指定與包括檢索目標(biāo)數(shù)據(jù)的數(shù)據(jù)集相對(duì)應(yīng)的哈希函數(shù)的哈希系數(shù)的值(這里為R1至R8的值)(步驟F50)。
[0193]此后,數(shù)據(jù)檢索處理單元3使其哈希值計(jì)算單元14利用檢索目標(biāo)數(shù)據(jù)的鍵和一個(gè)哈希系數(shù)的值,通過(guò)一個(gè)哈希函數(shù)來(lái)計(jì)算哈希值(步驟F60)。
[0194]這里,數(shù)據(jù)檢索處理單元3使其哈希值計(jì)算單元14利用檢索目標(biāo)數(shù)據(jù)的鍵(這里為雇員ID“0110”)以及以上述方式獲取的并且指定與包括檢索目標(biāo)數(shù)據(jù)的數(shù)據(jù)集相對(duì)應(yīng)的哈希函數(shù)的哈希系數(shù)的值(這里為R1至R8的值),通過(guò)如下一個(gè)哈希函數(shù)來(lái)計(jì)算哈希值(步驟F60):該哈希函數(shù)在數(shù)據(jù)的鍵串{x” x2, x3,, xj被表示為xK (I ^ K ^ η)的情況下由哈希系數(shù)R(1≤R≤256)的值指定并且包括在由fK(?) =^(Xim) XR+xK[其中fK(XQ)=RQ(R。是初始值)]表示的函數(shù)組中。然后,計(jì)算在將所計(jì)算的哈希值除以關(guān)于包括檢索目標(biāo)數(shù)據(jù)的數(shù)據(jù)集的哈希表22的大小(這里為“5”)的情況下的余數(shù)的值,并且獲得“I”作為余數(shù)值(步驟F60)。
[0195]然后,數(shù)據(jù)檢索處理單元3使其讀出單元15從一個(gè)哈希表22中讀出存儲(chǔ)在基于哈希值指定的第一存儲(chǔ)位置和與第一存儲(chǔ)位置鄰接的第二存儲(chǔ)位置中的數(shù)據(jù)和鍵(步驟F70)。
[0196]這里,數(shù)據(jù)檢索處理單元3使其讀出單元15從主存儲(chǔ)器101中,具體地從由以上述方式基于檢索目標(biāo)數(shù)據(jù)的鍵計(jì)算的CRC值(這里為“4”)所指定的哈希表(第四哈希表)22中,讀出存儲(chǔ)在將以上述方式計(jì)算的哈希值除以哈希表22的大小的情況下的余數(shù)值(這里為“I”)所指定的地址(第一存儲(chǔ)位置;這里為“I”)和下一地址(第二存儲(chǔ)位置;這里為“2”)中的數(shù)據(jù)和鍵(步驟F70)。
[0197]然后,數(shù)據(jù)檢索處理單元3使其輸出單元16在判定從第一存儲(chǔ)位置或第二存儲(chǔ)位置讀出的鍵與檢索目標(biāo)數(shù)據(jù)的鍵相一致時(shí)輸出與被判定為一致的鍵相關(guān)聯(lián)的數(shù)據(jù)作為檢索目標(biāo)數(shù)據(jù)(步驟F80至FlOO )。
[0198]這里,數(shù)據(jù)檢索處理單元3使其輸出單元16首先判定從基于哈希值指定的地址(這里為“I”)讀出的鍵(這里為“0106”)是否與檢索目標(biāo)數(shù)據(jù)的鍵(這里為“0110”)一致(步驟F80)。然后,判定從基于哈希值指定的地址的下一地址(這里為“2”)讀出的鍵(這里為“0110”)是否與檢索目標(biāo)數(shù)據(jù)的鍵(這里為“0110”)一致(步驟F90)。作為上述判定的結(jié)果判定從基于哈希值指定的地址的下一地址(這里為“2”)讀出的鍵與檢索目標(biāo)數(shù)據(jù)的鍵一致。然后,獲得與從基于哈希值指定的地址的下一地址(這里為“2”)讀出的鍵(這里為“0110”)相關(guān)聯(lián)的數(shù)據(jù)(這里為“Satoshi Yamamoto”)(步驟F90)并且將其輸出作為檢索目標(biāo)數(shù)據(jù)(步驟FlOO )。
[0199]因此,通過(guò)將上述數(shù)據(jù)檢索裝置應(yīng)用于如上所述的這種雇員ID檢索系統(tǒng),優(yōu)點(diǎn)在于可以提高數(shù)據(jù)存儲(chǔ)速度和數(shù)據(jù)檢索速度,同時(shí)盡量抑制數(shù)據(jù)檢索效率的降低。
[0200]這里,在字典型數(shù)據(jù)壓縮系統(tǒng)中,將上述數(shù)據(jù)檢索裝置I (數(shù)據(jù)存儲(chǔ)方法和數(shù)據(jù)檢索方法)用作用于數(shù)據(jù)壓縮的字典,并且通過(guò)向數(shù)據(jù)檢索裝置I提供字符串(經(jīng)壓縮的字符串),可以獲得與字符串相對(duì)應(yīng)的壓縮代碼。在此情況下,存儲(chǔ)目標(biāo)數(shù)據(jù)為壓縮代碼,并且存儲(chǔ)目標(biāo)數(shù)據(jù)的鍵為經(jīng)壓縮的字符串。要注意,在例如日本公開(kāi)特許公報(bào)第Hei9-218877號(hào)(其全部?jī)?nèi)容通過(guò)引用并入本文)或日本公開(kāi)特許公報(bào)第2011-221845號(hào)(其全部?jī)?nèi)容通過(guò)引用并入本文)中公開(kāi)了字典型數(shù)據(jù)壓縮系統(tǒng)。
[0201]如果接收到對(duì)如圖27所示的這種數(shù)據(jù)集的存儲(chǔ)請(qǐng)求,則字典型數(shù)據(jù)壓縮系統(tǒng)按照以下過(guò)程將數(shù)據(jù)集存儲(chǔ)到在主存儲(chǔ)器101中生成的哈希表22中。
[0202]首先,如果接收到如圖27所示的存儲(chǔ)目標(biāo)的這種數(shù)據(jù)集,則設(shè)置在字典型數(shù)據(jù)壓縮系統(tǒng)中的上述數(shù)據(jù)檢索裝置I的數(shù)據(jù)存儲(chǔ)處理單元2使其數(shù)據(jù)劃分單元7將存儲(chǔ)目標(biāo)的數(shù)據(jù)集劃分為多個(gè)數(shù)據(jù)集,如圖29所示。[0203]這里,數(shù)據(jù)存儲(chǔ)處理單元2使其數(shù)據(jù)劃分單元7計(jì)算構(gòu)成目標(biāo)對(duì)象的數(shù)據(jù)集的多個(gè)數(shù)據(jù)中的每個(gè)數(shù)據(jù)的鍵的CRC32值,并且計(jì)算在將每個(gè)所計(jì)算的CRC32值除以小規(guī)模數(shù)據(jù)集的數(shù)量(這里為4)的情況下的余數(shù)的值(CRC值)。然后,將包括多個(gè)數(shù)據(jù)的存儲(chǔ)目標(biāo)的數(shù)據(jù)集劃分為多個(gè)小規(guī)模數(shù)據(jù)集,使得所計(jì)算的CRC值彼此相等的數(shù)據(jù)被包括在同一小規(guī)模數(shù)據(jù)集中,如圖29所示。換言之,將所計(jì)算的CRC值用作多個(gè)小規(guī)模數(shù)據(jù)集的標(biāo)識(shí)號(hào)碼(數(shù)據(jù)集號(hào)碼)以將包括多個(gè)數(shù)據(jù)的存儲(chǔ)目標(biāo)的數(shù)據(jù)集劃分為多個(gè)小規(guī)模數(shù)據(jù)集。例如,在使用支持SSE4.2擴(kuò)展指令集的CPU時(shí),可以利用作為硬件內(nèi)置的CRC32c操作指令(內(nèi)置函數(shù)名稱:crc32)高速地將包括多個(gè)數(shù)據(jù)的存儲(chǔ)目標(biāo)的數(shù)據(jù)集劃分為多個(gè)小規(guī)模數(shù)據(jù)集。
[0204]然后,數(shù)據(jù)存儲(chǔ)處理單元2使其哈希函數(shù)確定單元8確定用于多個(gè)小規(guī)模數(shù)據(jù)集的多個(gè)哈希函數(shù),如圖30所示。
[0205]然后,數(shù)據(jù)存儲(chǔ)處理單元2使其哈希系數(shù)值表生成單元9(哈希函數(shù)實(shí)體管理表生成單元)生成哈希系數(shù)值表(哈希函數(shù)實(shí)體管理表),該哈希系數(shù)值表存儲(chǔ)分別指定多個(gè)哈希函數(shù)的多個(gè)哈希系數(shù)的值,如圖31所示。
[0206]然后,數(shù)據(jù)存儲(chǔ)處理單元2使其對(duì)應(yīng)關(guān)系表生成單元10 (哈希函數(shù)索引表生成單元)生成對(duì)應(yīng)關(guān)系表(哈希函數(shù)索引表),該對(duì)應(yīng)關(guān)系表將分別指定多個(gè)哈希函數(shù)的多個(gè)哈希系數(shù)的值與多個(gè)數(shù)據(jù)集彼此相關(guān)聯(lián),如圖32所示。
[0207]然后,數(shù)據(jù)存儲(chǔ)處理單元2使其哈希表生成單元11生成分別用于多個(gè)數(shù)據(jù)集的多個(gè)哈希表22。
[0208]這里,數(shù)據(jù)存儲(chǔ)處理單元2使其哈希表生成單元11首先確定與每個(gè)小規(guī)模數(shù)據(jù)集相對(duì)應(yīng)的哈希表22的大小。例如,當(dāng)包含在每個(gè)小規(guī)模數(shù)據(jù)集中的數(shù)據(jù)的數(shù)量η’為“3”時(shí),用于每個(gè)小規(guī)模數(shù)據(jù)集的哈希表22的大小可以通過(guò)ROUND (η +0.8)而設(shè)置為“4”。同時(shí),例如,在每個(gè)小規(guī)模數(shù)據(jù)集中包含的數(shù)據(jù)的數(shù)量η’為“4”的情況下,用于每個(gè)小規(guī)模數(shù)據(jù)集的哈希表的大小可以通過(guò)ROUND (η’+0.8)而設(shè)置為“5”。因此,通過(guò)基于每個(gè)小規(guī)模數(shù)據(jù)集的大小來(lái)確定哈希表22的大小,可以將用于每個(gè)小規(guī)模數(shù)據(jù)集的哈希表22的數(shù)據(jù)存儲(chǔ)效率設(shè)置為約80%。
[0209]此后,數(shù)據(jù)存儲(chǔ)處理單元2使其哈希表生成單元11生成用于每個(gè)小規(guī)模數(shù)據(jù)集的哈希表22,并且將哈希表22存儲(chǔ)到主存儲(chǔ)器101中。
[0210]這里,利用使用作為小規(guī)模數(shù)據(jù)集的標(biāo)識(shí)號(hào)碼的CRC值從對(duì)應(yīng)關(guān)系表獲取的索引號(hào)來(lái)獲取指定分配給小規(guī)模數(shù)據(jù)集的哈希函數(shù)的哈希系數(shù)的值。然后,使用所獲取的哈希系數(shù)的值,通過(guò)分配給小規(guī)模數(shù)據(jù)集的哈希函數(shù),基于包括在小規(guī)模數(shù)據(jù)集中的每個(gè)數(shù)據(jù)的鍵來(lái)計(jì)算哈希值。然后,計(jì)算在將所計(jì)算的哈希值除以關(guān)于小規(guī)模數(shù)據(jù)集的哈希表22的大小的情況下的余數(shù)的值。然后,按照余數(shù)值的升序?qū)?shù)據(jù)和鍵存儲(chǔ)到主存儲(chǔ)器101中的用于小規(guī)模數(shù)據(jù)集的哈希表22的基于哈希值指定的地址(第一存儲(chǔ)位置)或下一地址(第二存儲(chǔ)位置)以生成用于每個(gè)小規(guī)模數(shù)據(jù)集的哈希表22。
[0211]具體地,關(guān)于標(biāo)識(shí)號(hào)碼(數(shù)據(jù)集號(hào)碼)為“O” 一即其CRC值為“O” 一的小規(guī)模數(shù)據(jù)集,基于包括在小規(guī)模數(shù)據(jù)集中的每個(gè)數(shù)據(jù)的鍵來(lái)計(jì)算哈希值,并且計(jì)算在將所計(jì)算的哈希值除以用于數(shù)據(jù)集號(hào)碼為“O”的小規(guī)模數(shù)據(jù)集的哈希表22的大小(這里為4)的情況下的余數(shù)的值。通過(guò)計(jì)算,獲得如圖33所描繪的這種結(jié)果。然后,按照余數(shù)值的升序?qū)?shù)據(jù)和鍵存儲(chǔ)到主存儲(chǔ)器101中的用于數(shù)據(jù)集號(hào)碼為“O”的小規(guī)模數(shù)據(jù)集的哈希表22的基于哈希值指定的地址(第一存儲(chǔ)位置)或下一地址(第二存儲(chǔ)位置),以生成用于數(shù)據(jù)集號(hào)碼為“O”的小規(guī)模數(shù)據(jù)集的哈希表22。結(jié)果,生成如圖34所描繪的這種哈希表22。
[0212]類似地,關(guān)于標(biāo)識(shí)號(hào)碼(數(shù)據(jù)集號(hào)碼)為“I”——即其CRC值為“I”——的小規(guī)模數(shù)據(jù)集,基于包括在小規(guī)模數(shù)據(jù)集中的每個(gè)數(shù)據(jù)的鍵來(lái)計(jì)算哈希值,并且計(jì)算在將所計(jì)算的哈希值除以用于數(shù)據(jù)集號(hào)碼為“I”的小規(guī)模數(shù)據(jù)集的哈希表22的大小(這里為5)的情況下的余數(shù)的值。通過(guò)計(jì)算,獲得如圖35所描繪的這種結(jié)果。然后,按照余數(shù)值的升序?qū)?shù)據(jù)和鍵存儲(chǔ)到主存儲(chǔ)器101中的用于數(shù)據(jù)集號(hào)碼為“I”的小規(guī)模數(shù)據(jù)集的哈希表22的基于哈希值指定的地址(第一存儲(chǔ)位置)或下一地址(第二存儲(chǔ)位置),以生成用于數(shù)據(jù)集號(hào)碼為“I”的小規(guī)模數(shù)據(jù)集的哈希表22。結(jié)果,生成如圖36所描繪的這種哈希表22。
[0213]類似地,還關(guān)于標(biāo)識(shí)號(hào)碼(數(shù)據(jù)集號(hào)碼)為“2” 一即其CRC值為“2”——的小規(guī)模數(shù)據(jù)集,基于包括在小規(guī)模數(shù)據(jù)集中的每個(gè)數(shù)據(jù)的鍵來(lái)計(jì)算哈希值,并且計(jì)算在將所計(jì)算的哈希值除以用于數(shù)據(jù)集號(hào)碼為“2”的小規(guī)模數(shù)據(jù)集的哈希表22的大小(這里為4)的情況下的余數(shù)的值。通過(guò)計(jì)算,獲得如圖37所描繪的這種結(jié)果。然后,按照余數(shù)值的升序?qū)?shù)據(jù)和鍵存儲(chǔ)到主存儲(chǔ)器101中的用于數(shù)據(jù)集號(hào)碼為“2”的小規(guī)模數(shù)據(jù)集的哈希表22的基于哈希值指定的地址(第一存儲(chǔ)位置)或下一地址(第二存儲(chǔ)位置),以生成用于數(shù)據(jù)集號(hào)碼為“2”的小規(guī)模數(shù)據(jù)集的哈希表22。結(jié)果,生成如圖38所描繪的這種哈希表22。
[0214]類似地,還關(guān)于標(biāo)識(shí)號(hào)碼(數(shù)據(jù)集號(hào)碼)為“3” 一即其CRC值為“3”——的小規(guī)模數(shù)據(jù)集,基于包括在小規(guī)模數(shù)據(jù)集中的每個(gè)數(shù)據(jù)的鍵來(lái)計(jì)算哈希值,并且計(jì)算在將所計(jì)算的哈希值除以用于數(shù)據(jù)集號(hào)碼為“3”的小規(guī)模數(shù)據(jù)集的哈希表22的大小(這里為5)的情況下的余數(shù)的值。獲得如圖39所描繪的這種結(jié)果。然后,按照余數(shù)值的升序?qū)?shù)據(jù)和鍵存儲(chǔ)到主存儲(chǔ)器101中的用于數(shù)據(jù)集號(hào)碼為“3”的小規(guī)模數(shù)據(jù)集的哈希表22的基于哈希值指定的地址(第一存儲(chǔ)位置)或下一地址(第二存儲(chǔ)位置),以生成用于數(shù)據(jù)集號(hào)碼為“3”的小規(guī)模數(shù)據(jù)集的哈希表22。結(jié)果,生成如圖40所描繪的這種哈希表22。
[0215]附帶地,如果該字典型數(shù)據(jù)壓縮系統(tǒng)接收到對(duì)數(shù)據(jù)的檢索請(qǐng)求,即,用于數(shù)據(jù)壓縮的字符串檢索請(qǐng)求,則其按照以下過(guò)程關(guān)于主存儲(chǔ)器101中的多個(gè)哈希表22來(lái)執(zhí)行數(shù)據(jù)檢索(字符串檢索)。
[0216]這里,采用其中接收到壓縮字符串“aa”作為用于檢索目標(biāo)數(shù)據(jù)(壓縮代碼)的鍵的情況作為示例并對(duì)其進(jìn)行描述。
[0217]首先,如圖41所示,設(shè)置在字典型數(shù)據(jù)壓縮系統(tǒng)中的數(shù)據(jù)檢索裝置I的數(shù)據(jù)檢索處理單元3使其哈希表指定單元12基于檢索目標(biāo)數(shù)據(jù)的鍵,從分別存儲(chǔ)從數(shù)據(jù)集劃分的多個(gè)數(shù)據(jù)集的多個(gè)哈希表22中指定存儲(chǔ)包括檢索目標(biāo)數(shù)據(jù)的數(shù)據(jù)集的一個(gè)哈希表22。
[0218]這里,在接收到壓縮字符串“aa”作為檢索目標(biāo)數(shù)據(jù)的鍵時(shí)(步驟G10),數(shù)據(jù)檢索處理單元3使其哈希表指定單元12計(jì)算作為檢索目標(biāo)數(shù)據(jù)的鍵的壓縮字符串“aa”的CRC32值(步驟G20)。然后,計(jì)算在將所計(jì)算的CRC32值(這里為“0xl4429f04”)除以小規(guī)模數(shù)據(jù)集的數(shù)量(這里為“5”)的情況下的余數(shù)的值(CRC值;這里為“3”)(步驟G30)。
[0219]然后,數(shù)據(jù)檢索處理單元3使其哈希系數(shù)值獲取單元13基于檢索目標(biāo)數(shù)據(jù)的鍵,利用對(duì)應(yīng)關(guān)系表(參照?qǐng)D32)和哈希系數(shù)值表(參照?qǐng)D31)來(lái)獲取指定與一個(gè)數(shù)據(jù)集相對(duì)應(yīng)的一個(gè)哈希函數(shù)的一個(gè)哈希系數(shù)的值(步驟G40和G50),其中,該對(duì)應(yīng)關(guān)系表將多個(gè)數(shù)據(jù)集與用于指定多個(gè)哈希函數(shù)的哈希系數(shù)的值彼此關(guān)聯(lián),該哈希系數(shù)值表存儲(chǔ)用于指定多個(gè)哈希函數(shù)的多個(gè)哈希系數(shù)的值。
[0220]這里,數(shù)據(jù)檢索處理單元3使其哈希系數(shù)值獲取單元13利用以上述方式基于檢索目標(biāo)數(shù)據(jù)的鍵計(jì)算的CRC值(這里為“3”)并且利用CPU高速緩沖存儲(chǔ)器111中的對(duì)應(yīng)關(guān)系表(參照?qǐng)D32)來(lái)獲取索引號(hào)(這里為“2”)(步驟G40)。然后,利用索引號(hào)(這里為“2”)從CPU高速緩沖存儲(chǔ)器111中的哈希系數(shù)值表(參照?qǐng)D31)獲取指定與包括檢索目標(biāo)數(shù)據(jù)的數(shù)據(jù)集相對(duì)應(yīng)的哈希函數(shù)的哈希系數(shù)的值(這里為R1至R8的值)(步驟G50)。
[0221]然后,數(shù)據(jù)檢索處理單元3使其哈希值計(jì)算單元14利用檢索目標(biāo)數(shù)據(jù)的鍵和一個(gè)哈希系數(shù)的值,通過(guò)一個(gè)哈希函數(shù)來(lái)計(jì)算哈希值(步驟G60)。
[0222] 這里,數(shù)據(jù)檢索處理單元3使其哈希值計(jì)算單元14利用檢索目標(biāo)數(shù)據(jù)的鍵(這里為壓縮字符串“aa”)以及已經(jīng)以上述方式獲取的并且指定與包括檢索目標(biāo)數(shù)據(jù)的數(shù)據(jù)集相對(duì)應(yīng)的哈希函數(shù)的哈希系數(shù)的值(這里為R1至R8的值),通過(guò)如下一個(gè)哈希函數(shù)來(lái)計(jì)算哈希值(步驟G60):該哈希函數(shù)在數(shù)據(jù)的鍵串(X1, x2,X3,...,xj被表示為χκ(I≤K≤η)的情況下由哈希系數(shù)R (I ^ 256)的值指定并且包括在由fK (?) =^(Xih) XR+xK[其中G(Xtl)=Rtl(&是初始值)]表示的函數(shù)組中。然后,計(jì)算在將所計(jì)算的哈希值除以關(guān)于包括檢索目標(biāo)數(shù)據(jù)的數(shù)據(jù)集的哈希表22的大小(這里為“5”)的情況下的余數(shù)的值,并且獲得“I”作為余數(shù)值(步驟G60)。
[0223]然后,數(shù)據(jù)檢索處理單元3使其讀出單元15從哈希表22中讀出存儲(chǔ)在基于哈希值指定的第一存儲(chǔ)位置和與第一存儲(chǔ)位置鄰接的第二存儲(chǔ)位置中的數(shù)據(jù)和鍵(步驟G70)。
[0224]這里,數(shù)據(jù)檢索處理單元3使其讀出單元15從主存儲(chǔ)器101中,具體地從由以上述方式基于檢索目標(biāo)數(shù)據(jù)的鍵計(jì)算的CRC值(這里為“3”)所指定的哈希表(第三哈希表)22,讀出存儲(chǔ)在由在將以上述方式計(jì)算的哈希值除以哈希表22的大小的情況下的余數(shù)值(這里為“I”)所指定的地址(第一存儲(chǔ)位置;這里為“I”)和下一地址(第二存儲(chǔ)位置;這里為“2”)中的數(shù)據(jù)和鍵。
[0225]然后,數(shù)據(jù)檢索處理單元3使其輸出單元16在判定從第一存儲(chǔ)位置或者第二存儲(chǔ)位置讀出的鍵與檢索目標(biāo)數(shù)據(jù)的鍵一致時(shí)輸出與被判定為一致的鍵相關(guān)聯(lián)的數(shù)據(jù)作為檢索目標(biāo)數(shù)據(jù)(步驟G80至GlOO )。
[0226]這里,數(shù)據(jù)檢索處理單元3使其輸出單元16首先判定從基于哈希值指定的地址(這里為“I”)讀出的鍵(這里為“aab”)是否與檢索目標(biāo)數(shù)據(jù)的鍵(這里為“aa”)一致(步驟G80)。然后,判定從基于哈希值指定的地址的下一地址(這里為“2”)讀出的鍵(這里為“aa”)是否與檢索目標(biāo)數(shù)據(jù)的鍵(這里為“aa”)一致(步驟G90)。作為上述判定的結(jié)果判定從基于哈希值指定的地址的下一地址(這里為“2”)讀出的鍵與檢索目標(biāo)數(shù)據(jù)的鍵一致。然后,獲得與從基于哈希值指定的地址的下一地址(這里為“2”)讀出的鍵(這里為“aa”)相關(guān)聯(lián)的數(shù)據(jù)(這里為“C”)(步驟G90)并且輸出是檢索目標(biāo)數(shù)據(jù)作為壓縮代碼(步驟G100)。
[0227]附帶地,在將上述數(shù)據(jù)檢索裝置(數(shù)據(jù)存儲(chǔ)方法和數(shù)據(jù)檢索方法)用作用于數(shù)據(jù)壓縮的字典的字典型數(shù)據(jù)壓縮系統(tǒng)中,通過(guò)利用檢索處理時(shí)間不依賴于檢索目標(biāo)字符串的長(zhǎng)度的性質(zhì),可以通過(guò)用于以以下方式從給定字符串的頂部起發(fā)現(xiàn)最長(zhǎng)一致字符串的過(guò)程并且通過(guò)二叉樹(shù)搜索法和該過(guò)程的順序應(yīng)用來(lái)壓縮給定字符串以獲得壓縮代碼串。與此相反,在使用前綴樹(shù)的情況下,由于檢索處理時(shí)間與檢索目標(biāo)字符串的長(zhǎng)度成比例地增加,所以在從頂部起的最長(zhǎng)一致字符串較長(zhǎng)的情況下,用于發(fā)現(xiàn)最長(zhǎng)一致字符串所需的時(shí)間變長(zhǎng)并且數(shù)據(jù)壓縮處理時(shí)間變長(zhǎng)。
[0228]這里,采用其中在字典型數(shù)據(jù)壓縮系統(tǒng)中壓縮字符串“aabbabb”以獲得壓縮代碼串的情況作為示例并對(duì)其進(jìn)行說(shuō)明。
[0229]首先,當(dāng)字典型數(shù)據(jù)壓縮系統(tǒng)接收到對(duì)字符串“aabbabb”的壓縮請(qǐng)求時(shí)(步驟H10),其首先將字符串“aabb”輸入到上述數(shù)據(jù)檢索裝置I中(步驟H20)。然后,當(dāng)上述數(shù)據(jù)檢索裝置I接收到壓縮字符串“aabb”作為檢索目標(biāo)數(shù)據(jù)(壓縮代碼)的鍵時(shí),其執(zhí)行類似于上述處理的處理,并輸出錯(cuò)誤消息。因此,字典型數(shù)據(jù)壓縮系統(tǒng)獲得關(guān)于字符串“aabb”的錯(cuò)誤消息(步驟H20)。
[0230]然后,字典型數(shù)據(jù)壓縮系統(tǒng)將字符串“aa”輸入到數(shù)據(jù)檢索裝置I中(步驟H30)。然后,當(dāng)上述數(shù)據(jù)檢索裝置I接收到壓縮代碼串“aa”作為檢索目標(biāo)數(shù)據(jù)(壓縮代碼)的鍵時(shí),其執(zhí)行類似于上述處理的處理,并輸出“C”作為是檢索目標(biāo)數(shù)據(jù)的壓縮代碼。因此,字典型數(shù)據(jù)壓縮系統(tǒng)獲得“C”作為關(guān)于字符串“aa”的壓縮代碼(步驟H30)。
[0231]然后,字典型數(shù)據(jù)壓縮系統(tǒng)將字符串“aab”輸入到上述數(shù)據(jù)檢索裝置I中(步驟H40 )。然后,當(dāng)上述數(shù)據(jù)檢索裝置I接收到壓縮代碼串“ aab ”作為檢索目標(biāo)數(shù)據(jù)(壓縮代碼)的鍵時(shí),其執(zhí)行類似于上述處理的處理,并輸出“H”作為是檢索目標(biāo)數(shù)據(jù)的壓縮代碼。因此,字典型數(shù)據(jù)壓縮系統(tǒng)獲得“H”作為關(guān)于字符串“aab”的壓縮代碼(步驟H40)。
[0232]當(dāng)字典型數(shù)據(jù)壓縮系統(tǒng)以此方式獲得關(guān)于壓縮代碼串“aabb”的錯(cuò)誤消息并且獲得關(guān)于壓縮代碼串“aa”的壓縮代碼“C”,然后獲得關(guān)于壓縮代碼串“aab”的壓縮代碼“H”時(shí),其判定在字典中從字符串(aabbabb)的頂部起的最長(zhǎng)一致字符串為“aab”(步驟H50)。
[0233]此后,字典型數(shù)據(jù)壓縮系統(tǒng)將字符串“bab”輸入到上述數(shù)據(jù)檢索裝置I中(步驟H60)。然后,當(dāng)上述數(shù)據(jù)檢索裝置I接收到壓縮字符串“bab”作為檢索目標(biāo)數(shù)據(jù)(壓縮代碼)的鍵時(shí),其執(zhí)行類似于上述處理的處理,并輸出“L”作為是檢索目標(biāo)數(shù)據(jù)的壓縮代碼。因此,字典型數(shù)據(jù)壓縮系統(tǒng)獲得“L”作為關(guān)于字符串“bab”的壓縮代碼(步驟H60)。
[0234]然后,字典型數(shù)據(jù)壓縮系統(tǒng)將字符串“babb”輸入到上述數(shù)據(jù)檢索裝置I中(步驟H70)。然后,當(dāng)數(shù)據(jù)檢索裝置I接收到壓縮字符串“babb”作為檢索目標(biāo)數(shù)據(jù)(壓縮代碼)的鍵時(shí),其執(zhí)行類似于上述處理的處理,并輸出錯(cuò)誤消息。因此,字典型數(shù)據(jù)壓縮系統(tǒng)獲得關(guān)于字符串“babb”的錯(cuò)誤消息(步驟H70)。
[0235]當(dāng)以此方式獲得關(guān)于壓縮字符串“bab”的壓縮代碼“L”并且獲得關(guān)于壓縮字符串“babb”的錯(cuò)誤消息時(shí),字典型數(shù)據(jù)壓縮系統(tǒng)判定在詞典中從字符串“babb”的頂部起的最長(zhǎng)一致字符串為“bab”(步驟H80)。
[0236]然后,字典型數(shù)據(jù)壓縮系統(tǒng)將字符串“b”輸入到上述數(shù)據(jù)檢索裝置I中(步驟H90)。然后,當(dāng)上述數(shù)據(jù)檢索裝置I接收到壓縮字符串“b”作為檢索目標(biāo)數(shù)據(jù)(壓縮代碼)的鍵時(shí),其執(zhí)行類似于上述處理的處理,并輸出“B”作為是檢索目標(biāo)數(shù)據(jù)的壓縮代碼。因此,字典型數(shù)據(jù)壓縮系統(tǒng)獲得“B”作為關(guān)于字符串“b”的壓縮代碼(步驟H90)。
[0237]然后,字典型數(shù)據(jù)壓縮系統(tǒng)基于以上述方式所獲得的關(guān)于壓縮字符串“aab”的壓縮代碼“H”、關(guān)于壓縮字符串“bab”的壓縮代碼“L”以及關(guān)于壓縮字符串“b”的壓縮代碼“B”,獲得“HLB”作為是字符串“aabbabb”的壓縮形式的壓縮代碼串并且輸出“HLB”(步驟H100)。
[0238]因此,由于如上所述的這種字典型數(shù)據(jù)壓縮系統(tǒng)將上述數(shù)據(jù)檢索裝置I用作用于數(shù)據(jù)壓縮的字典,優(yōu)點(diǎn)在于可以增加數(shù)據(jù)存儲(chǔ)速度和數(shù)據(jù)檢索速度,同時(shí)盡可能地抑制數(shù)據(jù)檢索效率的降低。例如,如果將用于計(jì)算哈希值以訪問(wèn)構(gòu)成字典的哈希表22的對(duì)應(yīng)關(guān)系表和哈希系數(shù)值表存儲(chǔ)在CPU高速緩沖存儲(chǔ)器111中,則字典型數(shù)據(jù)壓縮系統(tǒng)可以提高數(shù)據(jù)壓縮處理的速度,并且提高對(duì)來(lái)自用戶的數(shù)據(jù)更新請(qǐng)求或數(shù)據(jù)插入請(qǐng)求的響應(yīng)能力。
[0239]要注意,本發(fā)明并不限于上面結(jié)合實(shí)施方式描述的配置,而可以在不脫離本發(fā)明的精神和范圍的情況下以各種方式進(jìn)行修改。
[0240]例如,在上述實(shí)施方式中,數(shù)據(jù)檢索裝置被配置為使得將數(shù)據(jù)存儲(chǔ)程序或數(shù)據(jù)檢索程序安裝在計(jì)算機(jī)中。然而,可以以存儲(chǔ)在計(jì)算機(jī)可讀記錄介質(zhì)中的狀態(tài)來(lái)提供用于使計(jì)算機(jī)執(zhí)行上述實(shí)施方式中的處理的數(shù)據(jù)存儲(chǔ)程序或數(shù)據(jù)檢索程序(即用于使計(jì)算機(jī)執(zhí)行上述這些功能的數(shù)據(jù)存儲(chǔ)程序和數(shù)據(jù)檢索程序)。
[0241]這里,記錄介質(zhì)包括可以存儲(chǔ)程序的任何介質(zhì),例如,存儲(chǔ)器(如半導(dǎo)體存儲(chǔ)器)和盤(pán)(如磁盤(pán)、光盤(pán)[例如,⑶(致密盤(pán))-ROM、DVD (數(shù)字多功能盤(pán))、藍(lán)光盤(pán)等])以及磁光盤(pán)(MO)。要注意,磁盤(pán)、光盤(pán)、磁光盤(pán)等被稱為便攜式記錄介質(zhì)。
[0242]在此情況下,通過(guò)驅(qū)動(dòng)裝置從便攜式記錄介質(zhì)中讀出數(shù)據(jù)存儲(chǔ)程序或數(shù)據(jù)檢索程序,并且將所讀出的數(shù)據(jù)存儲(chǔ)程序或數(shù)據(jù)檢索程序安裝到存儲(chǔ)裝置中。作為安裝的結(jié)果,實(shí)現(xiàn)了上面結(jié)合實(shí)施方式描述的數(shù)據(jù)檢索裝置、數(shù)據(jù)存儲(chǔ)方法和數(shù)據(jù)檢索方法,并且通過(guò)CPU讀出并執(zhí)行安裝在存儲(chǔ)裝置中的數(shù)據(jù)存儲(chǔ)程序或數(shù)據(jù)檢索程序來(lái)執(zhí)行實(shí)施方式中的處理。要注意,計(jì)算機(jī)可以直接從便攜式記錄介質(zhì)中讀出程序,并且根據(jù)程序執(zhí)行處理。
[0243]此外,可以例如通過(guò)作為傳輸介質(zhì)的網(wǎng)絡(luò)(例如,因特網(wǎng)、通信電路(如公共電路或?qū)S秒娐返?)來(lái)提供用于使計(jì)算機(jī)執(zhí)行實(shí)施方式中的處理的數(shù)據(jù)存儲(chǔ)程序或數(shù)據(jù)檢索程序。
[0244]例如,程序提供者可以通過(guò)網(wǎng)絡(luò)(例如,因特網(wǎng)或局域網(wǎng)(LAN)和通信接口)將設(shè)置在不同計(jì)算機(jī)如服務(wù)器上的數(shù)據(jù)存儲(chǔ)程序或數(shù)據(jù)檢索程序安裝到存儲(chǔ)裝置中。作為這種安裝的結(jié)果,實(shí)現(xiàn)了上面結(jié)合實(shí)施方式所描述的數(shù)據(jù)檢索裝置、數(shù)據(jù)存儲(chǔ)方法和數(shù)據(jù)檢索方法,并且類似于上述實(shí)施方式的情況,通過(guò)CPU讀出并執(zhí)行安裝在存儲(chǔ)裝置中的數(shù)據(jù)存儲(chǔ)程序或數(shù)據(jù)檢索程序來(lái)執(zhí)行實(shí)施方式中的處理。要注意,每當(dāng)從不同的計(jì)算機(jī)如服務(wù)器向計(jì)算機(jī)傳輸程序時(shí),計(jì)算機(jī)可以根據(jù)所接收的程序連續(xù)地執(zhí)行處理。
【權(quán)利要求】
1.一種數(shù)據(jù)檢索裝置,包括: 數(shù)據(jù)劃分單元,其將數(shù)據(jù)集劃分為多個(gè)數(shù)據(jù)集; 哈希函數(shù)確定單元,其確定與所述多個(gè)數(shù)據(jù)集相對(duì)應(yīng)的多個(gè)哈希函數(shù); 哈希系數(shù)值信息生成單元,其生成包括指定所述多個(gè)哈希函數(shù)的多個(gè)哈希系數(shù)的值的哈希系數(shù)值信息; 對(duì)應(yīng)關(guān)系信息生成單元,其生成將指定所述多個(gè)哈希函數(shù)的所述多個(gè)哈希系數(shù)的值與所述多個(gè)數(shù)據(jù)集彼此關(guān)聯(lián)的對(duì)應(yīng)關(guān)系信息;以及 哈希信息生成單元,其生成與所述多個(gè)數(shù)據(jù)集相對(duì)應(yīng)的多個(gè)哈希信息;其中, 所述哈希函數(shù)確定單元執(zhí)行以下操作: 針對(duì)所述數(shù)據(jù)集中的每個(gè)數(shù)據(jù)集,基于包括在該數(shù)據(jù)集中的多個(gè)數(shù)據(jù)的鍵,利用候選哈希函數(shù)來(lái)計(jì)算 哈希值,并且判定所述多個(gè)數(shù)據(jù)的全部是否能夠被存儲(chǔ)到基于所述哈希值指定的第一存儲(chǔ)位置或與所述第一存儲(chǔ)位置鄰接的第二存儲(chǔ)位置;以及 將所述候選哈希函數(shù)確定為與如下數(shù)據(jù)集相對(duì)應(yīng)的哈希函數(shù):關(guān)于該數(shù)據(jù)集,判定了所述多個(gè)數(shù)據(jù)的全部能夠被存儲(chǔ)到所述第一存儲(chǔ)位置或所述第二存儲(chǔ)位置;并且 所述哈希信息生成單元通過(guò)如下方式生成用于所述數(shù)據(jù)集的所述哈希信息:針對(duì)所述數(shù)據(jù)集中的每個(gè)數(shù)據(jù)集,將所述數(shù)據(jù)和所述鍵存儲(chǔ)到所述第一存儲(chǔ)位置或所述第二存儲(chǔ)位置,其中所述第一存儲(chǔ)位置是基于根據(jù)所述多個(gè)數(shù)據(jù)的鍵,利用與所述數(shù)據(jù)集相對(duì)應(yīng)的所述哈希函數(shù)計(jì)算的哈希值指定的。
2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)檢索裝置,其中,所述對(duì)應(yīng)關(guān)系信息生成單元生成具有能夠保留在高速緩沖存儲(chǔ)器中的信息量的所述對(duì)應(yīng)關(guān)系信息;并且 所述哈希系數(shù)值信息生成單元生成具有能夠保留在所述高速緩沖存儲(chǔ)器中的信息量的所述哈希系數(shù)值信息。
3.根據(jù)權(quán)利要求1或2所述的數(shù)據(jù)檢索裝置,其中,所述哈希函數(shù)確定單元將如下哈希函數(shù)用作所述候選哈希函數(shù):在數(shù)據(jù)的鍵串Ix1, X2, X3,, χ?}被表示為χκ的情況下,該哈希函數(shù)由哈希系數(shù)R的值指定,并且包括在由400=40^) XR+xK表示的函數(shù)組中,其中,1≤K≤n,1≤R≤256,fK(x0)=R0,R0是初始值。
4.根據(jù)權(quán)利要求1至3中任一項(xiàng)所述的數(shù)據(jù)檢索裝置,其中,所述哈希函數(shù)確定單元在發(fā)現(xiàn)如下兩個(gè)或更多個(gè)數(shù)據(jù)集時(shí)將所述候選哈希函數(shù)確定為與所述兩個(gè)或更多個(gè)數(shù)據(jù)集相對(duì)應(yīng)的哈希函數(shù):關(guān)于所述兩個(gè)或更多個(gè)數(shù)據(jù)集,判定了所述多個(gè)數(shù)據(jù)的全部能夠被存儲(chǔ)到所述第一存儲(chǔ)位置或所述第二存儲(chǔ)位置;并且 所述對(duì)應(yīng)關(guān)系信息生成單元生成將指定一個(gè)哈希函數(shù)的哈希系數(shù)的值與所述兩個(gè)或更多個(gè)數(shù)據(jù)集彼此關(guān)聯(lián)的對(duì)應(yīng)關(guān)系信息。
5.一種數(shù)據(jù)檢索裝置,包括: 哈希信息指定單元,其從存儲(chǔ)通過(guò)劃分?jǐn)?shù)據(jù)集而獲得的多個(gè)數(shù)據(jù)集的多個(gè)哈希信息中,基于檢索目標(biāo)數(shù)據(jù)的鍵來(lái)指定存儲(chǔ)有包括所述檢索目標(biāo)數(shù)據(jù)的一個(gè)數(shù)據(jù)集的一個(gè)哈希信息; 哈希系數(shù)值獲取單元,其利用對(duì)應(yīng)關(guān)系信息和哈希系數(shù)值信息來(lái)獲取基于所述檢索目標(biāo)數(shù)據(jù)的鍵指定與所述一個(gè)數(shù)據(jù)集相對(duì)應(yīng)的一個(gè)哈希函數(shù)的一個(gè)哈希系數(shù)的值,其中,所述對(duì)應(yīng)關(guān)系信息將所述多個(gè)數(shù)據(jù)集與指定多個(gè)哈希函數(shù)的哈希系數(shù)的值彼此關(guān)聯(lián),所述哈希系數(shù)值信息包括指定所述多個(gè)哈希函數(shù)的多個(gè)哈希系數(shù)的值; 哈希值計(jì)算單元,其利用所述檢索目標(biāo)數(shù)據(jù)的鍵和所述一個(gè)哈希系數(shù)的值,通過(guò)所述一個(gè)哈希函數(shù)來(lái)計(jì)算哈希值; 讀出單元,其從所述一個(gè)哈希信息中讀出存儲(chǔ)在基于所述哈希值指定的第一存儲(chǔ)位置和與所述第一存儲(chǔ)位置鄰接的第二存儲(chǔ)位置中的數(shù)據(jù)和鍵;以及 輸出單元,其在判定從所述第一存儲(chǔ)位置或所述第二存儲(chǔ)位置讀出的鍵與所述檢索目標(biāo)數(shù)據(jù)的鍵一致時(shí),輸出與被判定為一致鍵的所述鍵相關(guān)聯(lián)的數(shù)據(jù)作為所述檢索目標(biāo)數(shù)據(jù)。
6.一種由計(jì)算機(jī)執(zhí)行的數(shù)據(jù)存儲(chǔ)方法,包括: 將數(shù)據(jù)集劃分為多個(gè)數(shù)據(jù)集; 確定與所述多個(gè)數(shù)據(jù)集相對(duì)應(yīng)的多個(gè)哈希函數(shù); 生成包括指定所述多個(gè)哈希函數(shù)的多個(gè)哈希系數(shù)的值的哈希系數(shù)值信息; 生成將指定所述多個(gè)哈希函數(shù)的所述多個(gè)哈希系數(shù)的值與所述多個(gè)數(shù)據(jù)集彼此關(guān)聯(lián)的對(duì)應(yīng)關(guān)系/[目息;以及 生成與所述多個(gè)數(shù)據(jù)集相對(duì)應(yīng)的多個(gè)哈希信息;其中, 所述確定多個(gè)哈希函數(shù)包括: 針對(duì)所述數(shù)據(jù)集中的每個(gè)數(shù)據(jù)集,基于包括在該數(shù)據(jù)集中的多個(gè)數(shù)據(jù)的鍵,利用候選哈希函數(shù)來(lái)計(jì)算哈希值,并且判定所述多個(gè)數(shù)據(jù)的全部是否能夠被存儲(chǔ)到基于所述哈希值指定的第一存儲(chǔ)位置或與所述第一存儲(chǔ)位置鄰接的第二存儲(chǔ)位置;以及 將所述候選哈希函數(shù)確定為與如下數(shù)據(jù)集相對(duì)應(yīng)的哈希函數(shù):關(guān)于該數(shù)據(jù)集,判定了所述多個(gè)數(shù)據(jù)的全部能夠被存儲(chǔ)到所述第一存儲(chǔ)位置或所述第二存儲(chǔ)位置;并且 所述生成多個(gè)哈希系數(shù)值信息包括通過(guò)如下方式生成用于所述數(shù)據(jù)集的哈希信息:針對(duì)所述數(shù)據(jù)集中的每個(gè)數(shù)據(jù)集,將所述數(shù)據(jù)和所述鍵存儲(chǔ)到所述第一存儲(chǔ)位置或所述第二存儲(chǔ)位置,其中所述第一存儲(chǔ)位置是基于根據(jù)所述多個(gè)數(shù)據(jù)的鍵,利用與所述數(shù)據(jù)集相對(duì)應(yīng)的哈希函數(shù)計(jì)算的哈希值指定的。
7.根據(jù)權(quán)利要求6所述的數(shù)據(jù)存儲(chǔ)方法,其中,所述生成對(duì)應(yīng)關(guān)系信息包括生成具有能夠保留在高速緩沖存儲(chǔ)器中的信息量的所述對(duì)應(yīng)關(guān)系信息;并且 所述生成哈希系數(shù)值信息包括生成具有能夠保留在所述高速緩沖存儲(chǔ)器中的信息量的所述哈希系數(shù)值信息。
8.根據(jù)權(quán)利要求6或7所述的數(shù)據(jù)存儲(chǔ)方法,其中,在確定所述多個(gè)哈希函數(shù)的過(guò)程中,將如下哈希函數(shù)用作所述候選哈希函數(shù):在數(shù)據(jù)的鍵串Ix1, x2,x3,...,xn}被表示為Xk的情況下,該哈希函數(shù)由哈希系數(shù)R的值指定,并且包括在由fK(xK) =fK(Xim) XR+xK表示的函數(shù)組中,其中,I≤K≤n,l≤R≤256,fK (x。) =R。,R。是初始值。
9.根據(jù)權(quán)利要求6至8中任一項(xiàng)所述的數(shù)據(jù)存儲(chǔ)方法,其中,所述確定多個(gè)哈希函數(shù)包括:在發(fā)現(xiàn)下述兩個(gè)或更多個(gè)數(shù)據(jù)集時(shí)將所述候選哈希函數(shù)確定為與所述兩個(gè)或更多個(gè)數(shù)據(jù)集相對(duì)應(yīng)的哈希函數(shù):關(guān)于所述兩個(gè)或更多個(gè)數(shù)據(jù)集,判定了所述多個(gè)數(shù)據(jù)的全部能夠被存儲(chǔ)到所述第一存儲(chǔ)位置或所述第二存儲(chǔ)位置;并且 生成所述對(duì)應(yīng)關(guān)系信息包括:生成將指定一個(gè)哈希函數(shù)的哈希系數(shù)的值與所述兩個(gè)或更多個(gè)數(shù)據(jù)集彼此關(guān)聯(lián)的對(duì)應(yīng)關(guān)系信息。
10.一種由計(jì)算機(jī)執(zhí)行的數(shù)據(jù)檢索方法,包括: 基于檢索目標(biāo)數(shù)據(jù)的鍵,從存儲(chǔ)通過(guò)劃分?jǐn)?shù)據(jù)集而獲得的多個(gè)數(shù)據(jù)集的多個(gè)哈希信息中指定存儲(chǔ)包括所述檢索目標(biāo)數(shù)據(jù)的一個(gè)數(shù)據(jù)集的一個(gè)哈希信息; 利用對(duì)應(yīng)關(guān)系信息和哈希系數(shù)值信息來(lái)獲取基于所述檢索目標(biāo)數(shù)據(jù)的鍵指定與所述一個(gè)數(shù)據(jù)集相對(duì)應(yīng)的一個(gè)哈希函數(shù)的一個(gè)哈希系數(shù)的值,其中,所述對(duì)應(yīng)關(guān)系信息將所述多個(gè)數(shù)據(jù)集與指定多個(gè)哈希函數(shù)的哈希系數(shù)的值彼此關(guān)聯(lián),所述哈希系數(shù)值信息包括指定所述多個(gè)哈希函數(shù)的多個(gè)哈希系數(shù)的值; 利用所述檢索目標(biāo)數(shù)據(jù)的鍵和所述一個(gè)哈希系數(shù)的值,通過(guò)所述一個(gè)哈希函數(shù)來(lái)計(jì)算哈希值; 從所述一個(gè)哈希信息中讀出存儲(chǔ)在基于所述哈希值指定的第一存儲(chǔ)位置和與所述第一存儲(chǔ)位置鄰接的第二存儲(chǔ)位置中的數(shù)據(jù)和鍵;以及 在判定從所述第一存儲(chǔ)位置或所述第二存儲(chǔ)位置讀出的所述鍵與所述檢索目標(biāo)數(shù)據(jù)的鍵一致時(shí), 輸出與被判定為一致鍵的所述鍵相關(guān)聯(lián)的數(shù)據(jù)作為所述檢索目標(biāo)數(shù)據(jù)。
【文檔編號(hào)】G06F17/30GK103914506SQ201310739206
【公開(kāi)日】2014年7月9日 申請(qǐng)日期:2013年12月26日 優(yōu)先權(quán)日:2012年12月28日
【發(fā)明者】小林郁彌 申請(qǐng)人:富士通株式會(huì)社
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1