亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種數(shù)據(jù)存儲(chǔ)及搜索方法

文檔序號(hào):6650518閱讀:298來(lái)源:國(guó)知局
專利名稱:一種數(shù)據(jù)存儲(chǔ)及搜索方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種數(shù)據(jù)處理方法,更確切地講,本發(fā)明涉及一種數(shù)據(jù)的存儲(chǔ)及搜索方法。
背景技術(shù)
目前,數(shù)據(jù)通訊技術(shù)飛速發(fā)展,對(duì)數(shù)據(jù)量的要求亦日益增大,由此推動(dòng)了存儲(chǔ)技術(shù)的發(fā)展,使數(shù)據(jù)的大容量存儲(chǔ)成為可能。比如,通過(guò)將路由器等網(wǎng)絡(luò)產(chǎn)品的各種轉(zhuǎn)發(fā)表項(xiàng)的規(guī)模不斷擴(kuò)大即可實(shí)現(xiàn)大量數(shù)據(jù)的存儲(chǔ)。另一方面,在對(duì)所存儲(chǔ)的大量數(shù)據(jù)進(jìn)行搜索時(shí),搜索算法的優(yōu)劣直接影響到所存儲(chǔ)的大量數(shù)據(jù)的利用效率及存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)合理程度,不合理的數(shù)據(jù)結(jié)構(gòu)及低效的搜索算法會(huì)降低所存儲(chǔ)數(shù)據(jù)的應(yīng)用價(jià)值。如在路由產(chǎn)品中,相關(guān)轉(zhuǎn)發(fā)表項(xiàng)的搜索效率可直接影響到產(chǎn)品的性能指標(biāo)。
在存儲(chǔ)方面,對(duì)于不是特別大的數(shù)據(jù)量時(shí),一般采用鏈表式的存儲(chǔ)結(jié)構(gòu),在搜索時(shí),采用簡(jiǎn)單的逐項(xiàng)比較關(guān)鍵值的方法進(jìn)行搜索。但當(dāng)數(shù)據(jù)量很大時(shí),鏈表的長(zhǎng)度也會(huì)較長(zhǎng),這樣會(huì)導(dǎo)致上述搜索算法的性能嚴(yán)重下降,從而使得系統(tǒng)的實(shí)時(shí)性變差。
另外,還可以采用哈希算法與鏈表相結(jié)合的方案,實(shí)現(xiàn)原理如圖1所示。以每個(gè)要搜索的數(shù)據(jù)項(xiàng)的關(guān)鍵值作為輸入,計(jì)算出的哈希值作為鏈表的索引,然后在鎖定的鏈表中進(jìn)行數(shù)據(jù)搜索。該方法雖然比所述簡(jiǎn)單的鏈表方案有所改進(jìn),但當(dāng)數(shù)據(jù)條目數(shù)量很大時(shí),鏈表的長(zhǎng)度也很長(zhǎng),也會(huì)導(dǎo)致搜索算法的性能嚴(yán)重下降,從而使得系統(tǒng)的實(shí)時(shí)性仍然比較明顯地變差。

發(fā)明內(nèi)容
本發(fā)明解決的技術(shù)問(wèn)題是提供一種數(shù)據(jù)存儲(chǔ)及搜索方法,其可有效提高數(shù)據(jù)量較大時(shí)系統(tǒng)的搜索效率,并提高系統(tǒng)的實(shí)時(shí)性;本方法可應(yīng)用于各種需要進(jìn)行大量數(shù)據(jù)項(xiàng)存儲(chǔ)、搜索的產(chǎn)品中,并可提高如高端核心路由器產(chǎn)品的性能。
為解決上述問(wèn)題,本發(fā)明提供一種數(shù)據(jù)存儲(chǔ)方法,該方法包括確定至少兩個(gè)哈希桶;根據(jù)待存儲(chǔ)數(shù)據(jù)的關(guān)鍵值以及各個(gè)哈希桶的哈希函數(shù)計(jì)算確定各個(gè)哈希桶中該待存儲(chǔ)數(shù)據(jù)對(duì)應(yīng)的哈希值;確定各哈希桶中相應(yīng)哈希值對(duì)應(yīng)的數(shù)據(jù)鏈表;將數(shù)據(jù)存儲(chǔ)于該數(shù)據(jù)關(guān)鍵值確定的各哈希桶中相應(yīng)哈希值對(duì)應(yīng)的數(shù)據(jù)鏈表中。
其中,所述各個(gè)哈希桶可采用不同的哈希函數(shù)。
其中,所述數(shù)據(jù)鏈表可以采用單向鏈表結(jié)構(gòu)、雙向鏈表結(jié)構(gòu)、樹(shù)形結(jié)構(gòu)或圖形結(jié)構(gòu)。
相應(yīng)地,本發(fā)明還提供一種數(shù)據(jù)搜索方法,該方法包括根據(jù)各哈希桶的哈希函數(shù)以及待搜索的數(shù)據(jù)的關(guān)鍵值計(jì)算得到各哈希桶中該待搜索的數(shù)據(jù)對(duì)應(yīng)的哈希值;根據(jù)所述哈希值確定各哈希桶中該哈希值對(duì)應(yīng)的數(shù)據(jù)鏈表;從所述確定的各個(gè)哈希桶的數(shù)據(jù)鏈表中選擇其一進(jìn)行數(shù)據(jù)搜索。
優(yōu)選地,所述在確定的數(shù)據(jù)鏈表中選擇其一進(jìn)行數(shù)據(jù)搜索為選擇數(shù)據(jù)搜索長(zhǎng)度最短的數(shù)據(jù)鏈表進(jìn)行數(shù)據(jù)搜索。
優(yōu)選地,所述在確定的數(shù)據(jù)鏈表中選擇其一進(jìn)行數(shù)據(jù)搜索為選擇搜索時(shí)間最短的數(shù)據(jù)鏈表進(jìn)行數(shù)據(jù)搜索。
可選地,所述數(shù)據(jù)鏈表為單向鏈表結(jié)構(gòu)。
可選地,所述數(shù)據(jù)鏈表為雙向鏈表結(jié)構(gòu)。
可選地,所述數(shù)據(jù)鏈表為樹(shù)形結(jié)構(gòu)。
可選地,所述數(shù)據(jù)鏈表為圖形結(jié)構(gòu)。
與現(xiàn)有技術(shù)相比,本發(fā)明具有以下有益效果本發(fā)明提供的一種數(shù)據(jù)存儲(chǔ)及搜索方法,通過(guò)具有不同哈希桶的哈希函數(shù)的計(jì)算而于數(shù)據(jù)鏈表中提取數(shù)據(jù)鏈表,再選擇最佳數(shù)據(jù)鏈表進(jìn)行數(shù)據(jù)搜索,該方法可有效提高數(shù)據(jù)量較大時(shí)系統(tǒng)的搜索效率,并提高系統(tǒng)的實(shí)時(shí)性;另外,本方法可應(yīng)用于各種需要進(jìn)行大量數(shù)據(jù)項(xiàng)存儲(chǔ)、搜索的產(chǎn)品中,并可提高如高端核心路由器產(chǎn)品的性能。


圖1是現(xiàn)有的哈希桶與數(shù)據(jù)鏈表相結(jié)合的原理圖;圖2是本發(fā)明一種數(shù)據(jù)存儲(chǔ)及搜索方法的哈希桶與數(shù)據(jù)鏈表相結(jié)合的原理圖。
具體實(shí)施例方式
請(qǐng)參照?qǐng)D2所示,圖2是本發(fā)明的哈希桶與數(shù)據(jù)鏈表相結(jié)合的原理圖。存儲(chǔ)數(shù)據(jù)時(shí),首先,確定至少兩個(gè)哈希桶,具體實(shí)現(xiàn)時(shí)所述哈希桶采用不同的哈希函數(shù);根據(jù)待存儲(chǔ)數(shù)據(jù)的關(guān)鍵值以及各個(gè)哈希桶的哈希函數(shù)計(jì)算確定各個(gè)哈希桶中該待存儲(chǔ)數(shù)據(jù)對(duì)應(yīng)的哈希值;然后確定各哈希桶中相應(yīng)哈希值對(duì)應(yīng)的數(shù)據(jù)鏈表;最后將數(shù)據(jù)存儲(chǔ)于該數(shù)據(jù)關(guān)鍵值確定的各哈希桶中相應(yīng)哈希值對(duì)應(yīng)的數(shù)據(jù)鏈表中,舉例說(shuō),確定兩個(gè)哈希桶,即哈希桶一及哈希桶二,其中,所述哈希桶一及哈希桶二具有不同的哈希函數(shù)。由于每個(gè)數(shù)據(jù)均對(duì)應(yīng)有一個(gè)相應(yīng)的關(guān)鍵值,這樣數(shù)據(jù)的關(guān)鍵值經(jīng)不同的哈希函數(shù)的運(yùn)算可得到一個(gè)相應(yīng)的哈希值,而在哈希桶中每個(gè)哈希值對(duì)應(yīng)有不同的數(shù)據(jù)鏈表,所述各個(gè)存儲(chǔ)同一數(shù)據(jù)的不同數(shù)據(jù)鏈表節(jié)點(diǎn)上的指針域中的指針均指向存儲(chǔ)該數(shù)據(jù)的同一節(jié)點(diǎn),如哈希桶一的刻度“2”處所對(duì)應(yīng)的數(shù)據(jù)鏈表i,其包含節(jié)點(diǎn)1節(jié)、點(diǎn)2及節(jié)點(diǎn)3上所存儲(chǔ)的數(shù)據(jù),哈希桶二的刻度“1”處所對(duì)應(yīng)的數(shù)據(jù)鏈表j,其包含節(jié)點(diǎn)1節(jié)及點(diǎn)2上所存儲(chǔ)的數(shù)據(jù),哈希桶二的刻度“N-3”處所對(duì)應(yīng)的數(shù)據(jù)鏈表k,其包含節(jié)點(diǎn)3上所存儲(chǔ)的數(shù)據(jù)。
在搜索數(shù)據(jù)時(shí),本發(fā)明中采用下述步驟進(jìn)行首先根據(jù)各哈希桶的哈希函數(shù)以及待搜索的數(shù)據(jù)的關(guān)鍵值計(jì)算得到各哈希桶中該待搜索的數(shù)據(jù)對(duì)應(yīng)的哈希值;然后根據(jù)所述哈希值確定各哈希桶中該哈希值對(duì)應(yīng)的多個(gè)鏈表;從所述多個(gè)鏈表中選擇其一進(jìn)行數(shù)據(jù)搜索,具體搜索時(shí),本發(fā)明中可選擇數(shù)據(jù)搜索長(zhǎng)度最短的數(shù)據(jù)鏈表進(jìn)行數(shù)據(jù)搜索,也可以采用選擇數(shù)據(jù)搜索時(shí)間最短的數(shù)據(jù)鏈表進(jìn)行數(shù)據(jù)搜索,這里不再贅述。
以要搜索節(jié)點(diǎn)3中所存儲(chǔ)的數(shù)據(jù)為例,哈希桶一及哈希桶二所具有的不同的哈希函數(shù),其中所述哈希桶一中刻度“2”處對(duì)應(yīng)一個(gè)數(shù)據(jù)鏈表i,所述哈希桶二中刻度“1”處對(duì)應(yīng)一個(gè)數(shù)據(jù)鏈表j,哈希桶二的刻度“N-3”處對(duì)應(yīng)一個(gè)數(shù)據(jù)鏈表k,若要搜索節(jié)點(diǎn)3中所存儲(chǔ)的數(shù)據(jù),則根據(jù)節(jié)點(diǎn)3中存儲(chǔ)的數(shù)據(jù)的關(guān)鍵值,計(jì)算得到其所對(duì)應(yīng)的哈希值,結(jié)果得到哈希桶一的刻度“2”處所對(duì)應(yīng)的哈希值及哈希桶二的刻度“N-3”處所對(duì)應(yīng)的哈希值,哈希桶一的刻度“2”處的哈希值對(duì)應(yīng)的數(shù)據(jù)鏈表i包含節(jié)點(diǎn)1、節(jié)點(diǎn)2及節(jié)點(diǎn)3上所存儲(chǔ)的數(shù)據(jù),哈希桶二的刻度“N-3”處的哈希值所對(duì)應(yīng)的數(shù)據(jù)鏈表k包含節(jié)點(diǎn)3上所存儲(chǔ)的數(shù)據(jù)。
得到可搜索到節(jié)點(diǎn)3上所存儲(chǔ)數(shù)據(jù)的兩條數(shù)據(jù)鏈表i及k后,再?gòu)乃鰞蓷l數(shù)據(jù)鏈表i及k中查找到節(jié)點(diǎn)3上所存儲(chǔ)數(shù)據(jù)的最優(yōu)的一條數(shù)據(jù)鏈表,最后于所述在確定的最優(yōu)的一條數(shù)據(jù)鏈表進(jìn)行數(shù)據(jù)搜索。具體實(shí)現(xiàn)時(shí),判斷數(shù)據(jù)鏈表最優(yōu)的一種方法是該數(shù)據(jù)鏈表的數(shù)據(jù)搜索長(zhǎng)度最短,而所述數(shù)據(jù)鏈表長(zhǎng)度由從該數(shù)據(jù)鏈表所包含的數(shù)據(jù)數(shù)目表征。另外,判斷該最優(yōu)數(shù)據(jù)鏈表的另一種方法是在數(shù)據(jù)鏈表中搜索數(shù)據(jù)所花費(fèi)的時(shí)間最短。對(duì)兩條數(shù)據(jù)鏈表i及k進(jìn)行比較得出,要搜索到節(jié)點(diǎn)3中所存儲(chǔ)的數(shù)據(jù),即要達(dá)到節(jié)點(diǎn)3,顯然數(shù)據(jù)鏈表k的路徑最短,因而其所花費(fèi)的時(shí)間亦為最短,所以,選擇數(shù)據(jù)鏈表k為搜索節(jié)點(diǎn)3中所存儲(chǔ)的數(shù)據(jù)的數(shù)據(jù)鏈表。
可以理解,本發(fā)明所提供的一種數(shù)據(jù)存儲(chǔ)及搜索方法中所述的數(shù)據(jù)鏈表及數(shù)據(jù)鏈表可為單向鏈表結(jié)構(gòu)、雙向鏈表結(jié)構(gòu)、樹(shù)形結(jié)構(gòu)或圖形結(jié)構(gòu)。另外,存儲(chǔ)數(shù)據(jù)前所設(shè)置的哈希桶的數(shù)目可任意確定,不僅限于所述實(shí)施方式所述的兩個(gè)哈希桶,其中,由于某種原因一個(gè)哈希桶有唯一的一個(gè)哈希函數(shù),所以設(shè)置的哈希桶個(gè)數(shù)與通過(guò)哈希函數(shù)運(yùn)算得到的數(shù)據(jù)鏈表個(gè)數(shù)是相等的。
本發(fā)明提供的一種數(shù)據(jù)存儲(chǔ)及搜索方法,通過(guò)具有不同哈希桶的哈希函數(shù)的計(jì)算而確定多個(gè)數(shù)據(jù)鏈表,并從所述多個(gè)數(shù)據(jù)鏈表中選擇最佳數(shù)據(jù)鏈表進(jìn)行數(shù)據(jù)搜索,該方法可有效提高數(shù)據(jù)量較大時(shí)系統(tǒng)的搜索效率,并提高系統(tǒng)的實(shí)時(shí)性;另外,本方法可應(yīng)用于各種需要進(jìn)行大量數(shù)據(jù)項(xiàng)存儲(chǔ)、搜索的產(chǎn)品中,并可提高如高端核心路由器產(chǎn)品的性能。
以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以作出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種數(shù)據(jù)存儲(chǔ)方法,其特征在于,該方法包括確定至少兩個(gè)哈希桶;根據(jù)待存儲(chǔ)數(shù)據(jù)的關(guān)鍵值以及各個(gè)哈希桶的哈希函數(shù)計(jì)算確定各個(gè)哈希桶中該待存儲(chǔ)數(shù)據(jù)對(duì)應(yīng)的哈希值;確定各哈希桶中相應(yīng)哈希值對(duì)應(yīng)的數(shù)據(jù)鏈表;將數(shù)據(jù)存儲(chǔ)于該數(shù)據(jù)關(guān)鍵值確定的各哈希桶中相應(yīng)哈希值對(duì)應(yīng)的數(shù)據(jù)鏈表中。
2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)存儲(chǔ)方法,其特征在于,所述哈希桶采用不同的哈希函數(shù)。
3.根據(jù)權(quán)利要求1或2所述的數(shù)據(jù)存儲(chǔ)方法,其特征在于,所述數(shù)據(jù)鏈表為單向鏈表結(jié)構(gòu)、雙向鏈表結(jié)構(gòu)、樹(shù)形結(jié)構(gòu)或圖形結(jié)構(gòu)。
4.一種數(shù)據(jù)搜索方法,其特征在于,該方法包括根據(jù)各哈希桶的哈希函數(shù)以及待搜索的數(shù)據(jù)的關(guān)鍵值計(jì)算得到各哈希桶中該待搜索的數(shù)據(jù)對(duì)應(yīng)的哈希值;根據(jù)所述哈希值確定各哈希桶中該哈希值對(duì)應(yīng)的數(shù)據(jù)鏈表;從所述確定的各個(gè)哈希桶的數(shù)據(jù)鏈表中選擇其一進(jìn)行數(shù)據(jù)搜索。
5.根據(jù)權(quán)利要求4所述的數(shù)據(jù)搜索方法,其特征在于,所述在確定的數(shù)據(jù)鏈表中選擇其一進(jìn)行數(shù)據(jù)搜索為選擇數(shù)據(jù)搜索長(zhǎng)度最短的數(shù)據(jù)鏈表進(jìn)行數(shù)據(jù)搜索。
6.根據(jù)權(quán)利要求4所述的數(shù)據(jù)搜索方法,其特征在于,所述在確定的數(shù)據(jù)鏈表中選擇其一進(jìn)行數(shù)據(jù)搜索為選擇搜索時(shí)間最短的數(shù)據(jù)鏈表進(jìn)行數(shù)據(jù)搜索。
7.如權(quán)利要求4-6任一項(xiàng)所述的數(shù)據(jù)搜索方法,其特征在于,所述數(shù)據(jù)鏈表為單向鏈表結(jié)構(gòu)。
8.如權(quán)利要求4-6任一項(xiàng)所述的數(shù)據(jù)搜索方法,其特征在于,所述數(shù)據(jù)鏈表為雙向鏈表結(jié)構(gòu)。
9.如權(quán)利要求4-6任一項(xiàng)所述的數(shù)據(jù)搜索方法,其特征在于,所述數(shù)據(jù)鏈表為樹(shù)形結(jié)構(gòu)。
10.如權(quán)利要求4-6任一項(xiàng)所述的數(shù)據(jù)搜索方法,其特征在于,所述數(shù)據(jù)鏈表為圖形結(jié)構(gòu)。
全文摘要
一種數(shù)據(jù)存儲(chǔ)方法包括確定至少兩個(gè)不同的哈希桶,將數(shù)據(jù)存儲(chǔ)于數(shù)據(jù)鏈表中,每個(gè)數(shù)據(jù)均具有一個(gè)相應(yīng)的關(guān)鍵值,其中,每個(gè)關(guān)鍵值經(jīng)哈希函數(shù)的運(yùn)算得到一個(gè)相應(yīng)的哈希值,而每個(gè)哈希值對(duì)應(yīng)有不同的數(shù)據(jù)鏈表,所述數(shù)據(jù)鏈表中的數(shù)據(jù)均包含于所述數(shù)據(jù)鏈表中。數(shù)據(jù)搜索方法包括根據(jù)各哈希桶的不同的哈希函數(shù),計(jì)算得到所要搜索數(shù)據(jù)的關(guān)鍵值所對(duì)應(yīng)的各個(gè)哈希值,再根據(jù)所述哈希值確定其分別對(duì)應(yīng)的數(shù)據(jù)鏈表,在所述確定的數(shù)據(jù)鏈表中選擇其一進(jìn)行數(shù)據(jù)搜索。通過(guò)具有不同哈希桶的哈希函數(shù)的計(jì)算而于數(shù)據(jù)鏈表中提取數(shù)據(jù)鏈表,再選擇最佳數(shù)據(jù)鏈表進(jìn)行數(shù)據(jù)搜索,該方法可有效提高數(shù)據(jù)量較大時(shí)系統(tǒng)的搜索效率,并提高系統(tǒng)的實(shí)時(shí)性。
文檔編號(hào)G06F17/30GK1858734SQ20051012116
公開(kāi)日2006年11月8日 申請(qǐng)日期2005年12月28日 優(yōu)先權(quán)日2005年12月28日
發(fā)明者丁兆坤 申請(qǐng)人:華為技術(shù)有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1