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

數(shù)據(jù)庫系統(tǒng)及管理數(shù)據(jù)庫數(shù)據(jù)的方法

文檔序號:6561718閱讀:135來源:國知局
專利名稱:數(shù)據(jù)庫系統(tǒng)及管理數(shù)據(jù)庫數(shù)據(jù)的方法
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)庫系統(tǒng)及管理數(shù)據(jù)庫數(shù)據(jù)的方法。
背景技術(shù)
隨著網(wǎng)絡(luò)的飛速發(fā)展,處于網(wǎng)絡(luò)中的很多設(shè)備要求支持的表項項數(shù)和長度也越來越大,因此各種表項占用的存儲空間也變得越來越大。
現(xiàn)在應(yīng)用比較普遍的表項存儲方法包括利用三值內(nèi)容地址存儲器(TernaryContent Address Memory,TCAM)存儲和利用哈希(HASH)函數(shù)存儲兩種。
全匹配(Full Match,F(xiàn)M)表是一種最常見的表項類型,介質(zhì)訪問控制(Media Access Control,MAC)表又是FM表中比較典型的,下文將以存儲MAC表為例來說明利用TCAM存儲和利用哈希函數(shù)存儲兩種不同的存儲方法。
1、利用TCAM存儲的方法TCAM是一種高速的三進制的專用于查表的硬件芯片,把MAC表的鍵(KEY)值及掩碼(MASK)存儲于TCAM中,把MAC表項的內(nèi)容存入與該TCAM相關(guān)的靜態(tài)隨機存儲器(Static Random Access Memory,SRAM)中,具體存儲狀況參見圖1,存儲于TCAM中的KEY值與存儲于SRAM中的MAC表項的內(nèi)容一一對應(yīng),在進行查表時由于TCAM的高速查表特性,通過查找KEY值很快就可以得到存儲于SRAM中唯一對應(yīng)的表項內(nèi)容,操作簡便快速。
但是TCAM相比于其他的存儲介質(zhì)要貴的多,功耗也非常大,如果需要存儲的表項內(nèi)容很少,使用少量小容量TCAM不會帶來很明顯的影響,在存儲大容量的MAC表時,使用TCAM就會帶來成本的顯著上升,存儲數(shù)據(jù)用的數(shù)據(jù)庫系統(tǒng)及整體網(wǎng)絡(luò)系統(tǒng)的功耗都會明顯上升,而在現(xiàn)在的網(wǎng)絡(luò)中要求支持的表項項數(shù)和長度都在往越來越大的方向飛速發(fā)展。
2、利用哈希函數(shù)存儲的方法哈希函數(shù)也被稱作散列函數(shù),其特點就在于,可以將任意長度的字符串轉(zhuǎn)換成固定長度的數(shù)值或者索引值。以MAC表為例,在存儲MAC表項時,將很長且可能包含任意字符的KEY值轉(zhuǎn)換成單純由數(shù)字組成的固定長度的哈希值,比如4位的數(shù)值,因為只包含單純的數(shù)字就表示每一位最多只有10種可能,且長度也要短的多,因此查找一個4位數(shù)的數(shù)值速度會比查找很長且可能包含任意字符的KEY值快得多,利用此哈希值查找數(shù)據(jù)比起直接利用KEY值查找數(shù)據(jù)速度也會快很多,在這種情況下使用普通隨機存取存儲器存儲表項,比如動態(tài)隨機存儲器(Dynamic Random Access Memory,DRAM)、SRAM查找時的速度和上文所述利用TCAM存儲表項的查找速度基本相似,而DRAM、SRAM等普通存儲介質(zhì)比起TCAM是非常廉價的,功耗也低的多,相應(yīng)即使存儲的表項很大,利用哈希函數(shù)存儲的方法成本也會比較低,系統(tǒng)功耗也會下降。
但是由于哈希函數(shù)本身的特性,決定了會出現(xiàn)多個不同KEY值轉(zhuǎn)換出的哈希值相同的情況,這種情況被稱為沖突,在進行查找時,出現(xiàn)沖突的多個KEY值將指向同一個哈希值,這個時候通常采用鏈表法來解決沖突問題。
鏈表法就是為出現(xiàn)沖突的哈希值建立一個鏈表,將所有經(jīng)過哈希后獲得相同哈希值的KEY值放在同一個鏈表里,進行查找時,首先通過哈希值找到鏈表,然后再在鏈表中查找和哈希前KEY值相等的KEY值,以獲得相應(yīng)的表項內(nèi)容。
這樣隨著出現(xiàn)沖突的次數(shù)增加,鏈表也會越來越長,查找的速度也會越來越慢,存儲表項用的數(shù)據(jù)庫管理工作會變得越來越復(fù)雜,整個系統(tǒng)的性能都會受到影響。

發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種數(shù)據(jù)庫系統(tǒng)及管理數(shù)據(jù)庫數(shù)據(jù)的方法。
為解決上述技術(shù)問題,本發(fā)明提供了一種管理數(shù)據(jù)庫數(shù)據(jù)的方法,該方法包括存儲表項的方法將待存儲表項的鍵值進行規(guī)定次數(shù)內(nèi)的哈希函數(shù)轉(zhuǎn)換,獲得對應(yīng)哈希值;判斷鍵值經(jīng)過哈希函數(shù)轉(zhuǎn)換后是否沖突;將經(jīng)過規(guī)定次數(shù)哈希函數(shù)轉(zhuǎn)換后,仍然沖突的表項鍵值存儲于三值內(nèi)容地址存儲器,表項內(nèi)容存儲于與三值內(nèi)容地址存儲器關(guān)聯(lián)的第一隨機存儲器;將在規(guī)定次數(shù)內(nèi),有一次進行哈希函數(shù)轉(zhuǎn)換后不沖突的表項及其哈希值存儲于第二隨機存儲器。
其中,所述規(guī)定次數(shù)為至少兩次,所述方法包括將待存儲表項的鍵值進行規(guī)定次數(shù)內(nèi)的哈希函數(shù)轉(zhuǎn)換,獲得對應(yīng)哈希值;判斷每次鍵值經(jīng)過哈希函數(shù)轉(zhuǎn)換后是否沖突,進行哈希函數(shù)轉(zhuǎn)換的次數(shù)是否達到規(guī)定次數(shù);若沖突,且進行哈希函數(shù)轉(zhuǎn)換的次數(shù)未達到規(guī)定次數(shù),則繼續(xù)將待存儲表項的鍵值進行下一次哈希函數(shù)轉(zhuǎn)換;若沖突,且進行哈希函數(shù)轉(zhuǎn)換的次數(shù)已經(jīng)達到規(guī)定次數(shù),則將表項鍵值存儲于三值內(nèi)容地址存儲器,表項內(nèi)容存儲于與三值內(nèi)容地址存儲器關(guān)聯(lián)的第一隨機存儲器;若不沖突,則將表項及其哈希值存儲于第二隨機存儲器。
其中,所述方法還包括查找表項的方法將待查找表項的鍵值進行規(guī)定次數(shù)內(nèi)的哈希函數(shù)轉(zhuǎn)換,獲得對應(yīng)哈希值;通過所述哈希值判斷第二隨機存儲器上是否存在待查找表項;若存在,則獲得待查找表項,查找成功;若不存在,則在三值內(nèi)容地址存儲器上尋找待查找表項的鍵值,尋找到鍵值后,訪問與三值內(nèi)容地址存儲器關(guān)聯(lián)的第一隨機存儲器獲得表項內(nèi)容,查找成功。
其中,所述規(guī)定次數(shù)為至少兩次,所述方法包括將待查找表項的鍵值進行規(guī)定次數(shù)內(nèi)的哈希函數(shù)轉(zhuǎn)換,獲得對應(yīng)哈希值;每次進行哈希函數(shù)轉(zhuǎn)換后,通過所述哈希值判斷第二隨機存儲器上是否存在待查找表項,進行哈希函數(shù)轉(zhuǎn)換的次數(shù)是否達到規(guī)定次數(shù);若存在,則獲得待查找表項,查找成功;若不存在,且進行哈希函數(shù)轉(zhuǎn)換的次數(shù)未達到規(guī)定次數(shù),則繼續(xù)將待查找表項的鍵值進行下一次哈希函數(shù)轉(zhuǎn)換;若不存在,且進行哈希函數(shù)轉(zhuǎn)換的次數(shù)已經(jīng)達到規(guī)定次數(shù),則在三值內(nèi)容地址存儲器上尋找待查找表項的鍵值,尋找到鍵值后,訪問與三值內(nèi)容地址存儲器關(guān)聯(lián)的第一隨機存儲器獲得表項內(nèi)容,查找成功。
其中,所述規(guī)定次數(shù)為一次。
其中,所述通過所述哈希值判斷第二隨機存儲器上是否存在待查找表項為判斷第二隨機存儲器上是否存在與所述哈希值相同的哈希值;若不存在,則第二隨機存儲器上不存在待查找表項;若存在,則判斷此第二隨機存儲器上的哈希值下存儲的鍵值是否和待查找表項的鍵值相等;若不相等,則第二隨機存儲器上不存在待查找表項;若相等,則第二隨機存儲器上存在待查找表項,此第二隨機存儲器上的哈希值下存儲的表項即為待查找表項。
其中,所述方法還包括刪除表項的方法通過所述查找表項的方法根據(jù)待刪除表項的鍵值,查找到待刪除表項,刪除待刪除表項。
其中,所述方法還包括老化表項的方法定義包含表項老化標(biāo)識位的老化表,定義刷新周期;表項被調(diào)用時標(biāo)記對應(yīng)老化標(biāo)識位;每個刷新周期刷新一次老化表,通過老化標(biāo)識位,使用所述刪除表項的方法將一個周期內(nèi)沒有被調(diào)用過的表項刪除。
其中,所述老化標(biāo)識位初始值為“0”或“1”。
其中,所述第一隨機存儲器為靜態(tài)隨機存儲器。
其中,所述第二隨機存儲器為動態(tài)隨機存儲器。
本發(fā)明還提供了一種數(shù)據(jù)庫系統(tǒng),包括存儲單元、三值內(nèi)容地址存儲器、第一隨機存儲器及第二隨機存儲器;所述第一隨機存儲器與所述三值內(nèi)容地址存儲器相關(guān)聯(lián);所述存儲單元用于將待存儲表項的鍵值進行規(guī)定次數(shù)內(nèi)的哈希函數(shù)轉(zhuǎn)換,獲得對應(yīng)哈希值;判斷鍵值經(jīng)過哈希函數(shù)轉(zhuǎn)換后是否沖突;將經(jīng)過規(guī)定次數(shù)哈希函數(shù)轉(zhuǎn)換后,仍然沖突的表項鍵值存儲于所述三值內(nèi)容地址存儲器,表項內(nèi)容存儲于所述第一隨機存儲器;將在規(guī)定次數(shù)內(nèi),有一次進行哈希函數(shù)轉(zhuǎn)換后不沖突的表項及其哈希值存儲于所述第二隨機存儲器。
其中,所述存儲單元用于將待存儲表項的鍵值進行規(guī)定次數(shù)內(nèi)的哈希函數(shù)轉(zhuǎn)換,獲得對應(yīng)哈希值;并判斷每次鍵值經(jīng)過哈希函數(shù)轉(zhuǎn)換后是否沖突,進行哈希函數(shù)轉(zhuǎn)換的次數(shù)是否達到規(guī)定次數(shù);若沖突,且進行哈希函數(shù)轉(zhuǎn)換的次數(shù)未達到規(guī)定次數(shù),則繼續(xù)將待存儲表項的鍵值進行下一次哈希函數(shù)轉(zhuǎn)換;若沖突,且進行哈希函數(shù)轉(zhuǎn)換的次數(shù)已經(jīng)達到規(guī)定次數(shù),則將表項鍵值存儲于所述三值內(nèi)容地址存儲器,表項內(nèi)容存儲于所述第一隨機存儲器;若不沖突,則將表項及其哈希值存儲于所述第二隨機存儲器。
其中,所述系統(tǒng)還包括查找單元,用于將待查找表項的鍵值進行規(guī)定次數(shù)內(nèi)的哈希函數(shù)轉(zhuǎn)換,獲得對應(yīng)哈希值;通過所述哈希值判斷所述第二隨機存儲器上是否存在待查找表項;若存在,則獲得待查找表項;若不存在,則在所述三值內(nèi)容地址存儲器上尋找待查找表項的鍵值,尋找到鍵值后,訪問所述第一隨機存儲器獲得表項內(nèi)容。
其中,所述查找單元用于將待查找表項的鍵值進行規(guī)定次數(shù)內(nèi)的哈希函數(shù)轉(zhuǎn)換,獲得對應(yīng)哈希值;每次進行哈希函數(shù)轉(zhuǎn)換后,通過所述哈希值判斷所述第二隨機存儲器上是否存在待查找表項,進行哈希函數(shù)轉(zhuǎn)換的次數(shù)是否達到規(guī)定次數(shù);若存在,則獲得待查找表項;若不存在,且進行哈希函數(shù)轉(zhuǎn)換的次數(shù)未達到規(guī)定次數(shù),則繼續(xù)將待查找表項的鍵值進行下一次哈希函數(shù)轉(zhuǎn)換;若不存在,且進行哈希函數(shù)轉(zhuǎn)換的次數(shù)已經(jīng)達到規(guī)定次數(shù),則在所述三值內(nèi)容地址存儲器上尋找待查找表項的鍵值,尋找到鍵值后,訪問所述第一隨機存儲器獲得表項內(nèi)容。
其中,所述規(guī)定次數(shù)為一次。
其中,所述系統(tǒng)還包括刪除單元,用于通過所述查找單元根據(jù)待刪除表項的鍵值,查找到待刪除表項,刪除待刪除表項。
其中,所述系統(tǒng)還包括老化單元,用于定義包含表項老化標(biāo)識位的老化表,定義刷新周期;在表項被調(diào)用時標(biāo)記對應(yīng)老化標(biāo)識位;每個刷新周期刷新一次老化表,通過老化標(biāo)識位,使用所述刪除單元將一個周期內(nèi)沒有被調(diào)用過的表項刪除。
其中,所述第一隨機存儲器為靜態(tài)隨機存儲器。
其中,所述第二隨機存儲器為動態(tài)隨機存儲器。
由上可知,本發(fā)明通過結(jié)合TCAM和哈希函數(shù)的優(yōu)點,將經(jīng)過哈希函數(shù)轉(zhuǎn)換后沖突的表項存儲于TCAM及與TCAM相關(guān)聯(lián)的RAM中,將不沖突的表項存儲于其他RAM中,使普通RAM中只需要存儲不沖突的表項,不需要采用鏈表法來解決沖突問題,查找速度可以一直保持在較高的水平上,不會受到影響,也不會影響數(shù)據(jù)庫系統(tǒng)的性能;而TCAM及與TCAM相關(guān)聯(lián)的RAM中只需要存放有沖突的表項,這些表項相對于整個表項占有比例非常小,所以即使存儲的表項容量非常大,也只須很少小容量TCAM就可以完成,這樣系統(tǒng)的成本和功耗都不會受到明顯影響;這樣就兼顧了系統(tǒng)的功耗成本和性能,使系統(tǒng)在成本和功耗都較低的情況下可以保持高速度的運行。
進一步,本發(fā)明又給出了可以進行一次或多次哈希函數(shù)轉(zhuǎn)換的方案只進行一次哈希函數(shù)轉(zhuǎn)換,把所有經(jīng)過一次哈希函數(shù)轉(zhuǎn)換出現(xiàn)沖突的表項存儲在TCAM及SRAM中,是一種流程最簡單的方案,可以提高系統(tǒng)效率;進行多次哈希函數(shù)轉(zhuǎn)換,可以有效減少出現(xiàn)沖突的幾率,這樣TCAM的用量也會減少,在表項非常大時,也不需要很大容量的TCAM來存儲出現(xiàn)沖突的表項,用戶可以根據(jù)自身需要決定最多可以進行多少次哈希函數(shù)轉(zhuǎn)換。
更進一步,本發(fā)明根據(jù)SRAM比DRAM數(shù)度要快,DRAM速度稍遜但是價格非常便宜,且容量較大的特點,給出了與TCAM關(guān)聯(lián)的RAM采用SRAM,更好的發(fā)揮TCAM的速度優(yōu)勢,存儲不沖突表項的RAM采用DRAM,發(fā)揮DRAM價格及容量優(yōu)勢的方案。由于TCAM中存儲的表項很少,關(guān)聯(lián)的RAM用量也很少,所以使用SRAM對系統(tǒng)成本的影響很??;使用哈希函數(shù)在DRAM和SRAM上查找表項速度基本沒有差別,所以存儲不沖突表項的RAM采用DRAM不會影響到速度,而且由于這里的RAM用量較大,使用DRAM可以很好的降低成本。


圖1、使用TCAM與相關(guān)聯(lián)SRAM存儲表項示意圖;圖2、本發(fā)明系統(tǒng)實施例圖;圖3、本發(fā)明管理數(shù)據(jù)庫數(shù)據(jù)的方法之存儲表項的方法實施例流程圖;圖4、本發(fā)明管理數(shù)據(jù)庫數(shù)據(jù)的方法之查找表項的方法實施例流程圖;圖5、本發(fā)明管理數(shù)據(jù)庫數(shù)據(jù)的方法之刪除表項的方法實施例流程圖;圖6、本發(fā)明管理數(shù)據(jù)庫數(shù)據(jù)的方法之老化表項的方法實施例流程圖。
具體實施例方式
本發(fā)明提供了一種數(shù)據(jù)庫系統(tǒng)及管理數(shù)據(jù)庫數(shù)據(jù)的方法,通過將表項分別存儲于TCAM和隨機存儲器(Random Access Memory,RAM),結(jié)合了TCAM和哈希函數(shù)的優(yōu)點,兼顧了成本功耗和速度。
本發(fā)明提供的數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu)如圖2所示,包含存儲單元201、查找單元202、刪除單元203、老化單元204、隨機存儲器A205、TCAM206、隨機存儲器B207,各單元功能如下存儲單元201和隨機存儲器A205、TCAM206、隨機存儲器B207互聯(lián),發(fā)出操作信息,對系統(tǒng)內(nèi)的數(shù)據(jù)進行管理,控制表項的存儲過程。
查找單元202和隨機存儲器A205、TCAM206、隨機存儲器B207互聯(lián),發(fā)出操作信息,對系統(tǒng)內(nèi)的數(shù)據(jù)進行管理,控制表項的查找過程。
刪除單元203和隨機存儲器A205、TCAM206、隨機存儲器B207互聯(lián),發(fā)出操作信息,對系統(tǒng)內(nèi)的數(shù)據(jù)進行管理,控制表項的刪除過程。
老化單元204和隨機存儲器205、TCAM206、隨機存儲器B207互聯(lián),發(fā)出操作信息,對系統(tǒng)內(nèi)的數(shù)據(jù)進行管理,控制表項的老化過程。
隨機存儲器B207存儲經(jīng)過一次或多次哈希函數(shù)轉(zhuǎn)換后不沖突的表項,接受存儲單元201、查找單元202、刪除單元203及老化單元204的控制對表項進行存儲、查找、刪除和老化。
由于常用DRAM要比SRAM便宜的多,容量也可以做的很大,在使用哈希值進行查找時兩者的速度基本沒有差別,所以在實際應(yīng)用中隨機存儲器B207一般多選擇DRAM。
TCAM206和隨機存儲器A205相關(guān)聯(lián),存儲經(jīng)過一次或多次哈希函數(shù)轉(zhuǎn)換后有沖突的表項KEY值及MASK,接受存儲單元201、查找單元202、刪除單元203及老化單元204的控制對表項進行存儲、查找、刪除。
在本發(fā)明提供的系統(tǒng)中,由于TCAM只是用來存儲經(jīng)哈希函數(shù)轉(zhuǎn)換后有沖突的表項KEY值及MASK,有沖突的表項相對于整個表項占有比例非常小,所以即使存儲的表項容量非常大,也只須很少小容量TCAM就可以完成,這樣系統(tǒng)的成本和功耗都不會受到明顯影響。
隨機存儲器A205和TCAM206相關(guān)聯(lián),存儲經(jīng)過一次或多次哈希函數(shù)轉(zhuǎn)換后有沖突的表項內(nèi)容,這些表項內(nèi)容和存儲于TCAM206的表項KEY值一一對應(yīng),接受存儲單元201、查找單元202、刪除單元203及老化單元204的控制對表項進行存儲、查找、刪除和老化。
由于從存取速度來說,常用SRAM比DRAM更接近TCAM的速度,為了更好的發(fā)揮TCAM的速度優(yōu)勢,實際應(yīng)用中通常隨機存儲器A204會選用SRAM來與TCAM配合,根據(jù)上文描述可知在本發(fā)明提供的系統(tǒng)中,TCAM的用量很少,相應(yīng)存儲內(nèi)容與TCAM關(guān)聯(lián)的SRAM用量也是非常少的,對系統(tǒng)成本的影響非常細微。
上文中提到可以進行一次或多次哈希函數(shù)轉(zhuǎn)換,是由用戶根據(jù)自身的需要規(guī)定的,可是一次也可以是多次,若規(guī)定的次數(shù)是一次,則最多只能進行一次哈希函數(shù)轉(zhuǎn)換,若規(guī)定的次數(shù)是兩次,則最多只能進行兩次哈希函數(shù)轉(zhuǎn)換,以此類推,具體處理方法見下文方法的描述。
還需要說明的是,本文提到的互聯(lián)或連接指的是信令上的連接,而不是物理上的直接連接,圖2中標(biāo)出的連接線同樣也僅指信令上的連接,例如在實際連接硬件時,隨機存儲器A205有可能直接接入存儲單元201,也有可能通過TCAM206接入存儲單元201;若隨機存儲器A205及隨機存儲器B207采用的是相同類型的隨機存儲器,則可以使用同一塊隨機存儲器的不同區(qū)段實現(xiàn)本發(fā)明。
本發(fā)明提供的數(shù)據(jù)庫系統(tǒng)操作過程將在下文對方法的描述中進行具體闡述。
在下文進行方法的具體描述時,將以隨機存儲器A205為SRAM,隨機存儲器B207為DRAM為例進行描述。
本發(fā)明提供的管理數(shù)據(jù)庫數(shù)據(jù)的方法包含存儲表項的方法、查找表項的方法、刪除表項的方法和老化表項的方法,其中存儲表項的方法是所有管理數(shù)據(jù)庫數(shù)據(jù)方法的基礎(chǔ),所以下面首先進行存儲表項的方法的描述。
本發(fā)明提供的管理數(shù)據(jù)庫數(shù)據(jù)的方法中存儲表項的方法,首先將準(zhǔn)備存儲表項的KEY值進行一次或多次哈希函數(shù)轉(zhuǎn)換,然后將KEY值在經(jīng)過哈希函數(shù)轉(zhuǎn)換后沒有出現(xiàn)沖突的表項存儲在DRAM里,將KEY值在經(jīng)過哈希函數(shù)轉(zhuǎn)換后出現(xiàn)沖突的表項KEY值存入TCAM,表項內(nèi)容存入與TCAM關(guān)聯(lián)的SRAM里。
現(xiàn)以對KEY值最多進行兩次哈希函數(shù)轉(zhuǎn)換為例,詳述管理數(shù)據(jù)庫數(shù)據(jù)的方法中存儲表項的方法,具體流程如圖3所示步驟301、確定要增加的表項KEY值及表項內(nèi)容。
步驟302、輸入KEY值到哈希函數(shù)1“H1(k)”中,計算出KEY經(jīng)哈希函數(shù)轉(zhuǎn)換后獲得的哈希值1“h1”。
步驟303、查找DRAM中是否存在和h1相等的哈希值,如果存在和h1相等的哈希值,則進入步驟304;如果不存在和h1相等的哈希值,說明沒有出現(xiàn)沖突,則進入步驟307。
步驟304、將DRAM中與h1相等的哈希值下存儲的KEY值與要增加的表項KEY值相比較,判斷是否相等,如果相等,說明這是一條已經(jīng)存儲過的表項,則進入步驟309;如果不相等,說明出現(xiàn)了沖突,則進入步驟305。
以上所述步驟303到304即為對進行第一次哈希函數(shù)轉(zhuǎn)換后是否出現(xiàn)沖突的判斷,如果出現(xiàn)沖突,則進入步驟305,如果沒有出現(xiàn)沖突,就可以直接執(zhí)行步驟307。
步驟305、輸入KEY值到哈希函數(shù)2“H2(k)”中,計算出KEY經(jīng)哈希函數(shù)轉(zhuǎn)換后獲得的哈希值2“h2”。
因為對要增加的表項KEY值的第一次哈希函數(shù)轉(zhuǎn)換出現(xiàn)了沖突,為了減少沖突,在步驟305中使用哈希函數(shù)“H2(k)”對要增加的表項KEY值進行第二次哈希函數(shù)轉(zhuǎn)換,經(jīng)過第二次哈希函數(shù)轉(zhuǎn)換的KEY值顯然出現(xiàn)沖突的幾率會小很多,這樣可以有效減少需要存儲在TCAM及SRAM中的表項數(shù)目。
在實際應(yīng)用中,根據(jù)系統(tǒng)的狀況,可以只進行一次哈希函數(shù)轉(zhuǎn)換,把所有經(jīng)過一次哈希函數(shù)轉(zhuǎn)換出現(xiàn)沖突的表項存儲在TCAM及SRAM中,減少流程提高系統(tǒng)效率;也可以進行多于兩次的哈希函數(shù)轉(zhuǎn)換,盡量減少出現(xiàn)沖突的表項,減少TCAM的用量,降低成本和功耗。
步驟306、查找DRAM中是否存在和h2相等的哈希值,如果存在和h2相等的哈希值,則進入步驟308;如果不存在和h2相等的哈希值,說明沒有出現(xiàn)沖突,則進入步驟307。
步驟307、直接將要增加的表項及其經(jīng)過最后一次哈希函數(shù)轉(zhuǎn)換得到的哈希值存儲于DRAM中。
可以執(zhí)行步驟307說明要增加的表項的KEY值在經(jīng)過一次或兩次哈希函數(shù)轉(zhuǎn)換后得到了一個不沖突的哈希值,則可以將此表項直接添加在DRAM中。
步驟308、將DRAM中與h2相等的哈希值下存儲的KEY值與要增加的表項KEY值相比較,判斷是否相等,如果相等,說明這是一條已經(jīng)存儲過的表項,則進入步驟309;如果不相等,說明出現(xiàn)了沖突,則進入步驟310。
步驟309、更新存儲于DRAM中經(jīng)判斷KEY值相等的表項內(nèi)容。
步驟310、把該要增加的表項的KEY值存儲在TCAM中,表項內(nèi)容存儲在與TCAM相關(guān)的SRAM中。
至此流程結(jié)束。
本發(fā)明提供的管理數(shù)據(jù)庫數(shù)據(jù)的方法中查找表項的方法,是在存儲表項的方法基礎(chǔ)上提出的,首先將要查找的表項KEY值進行哈希函數(shù)轉(zhuǎn)換,在DRAM中通過哈希函數(shù)轉(zhuǎn)換后的哈希值在DRAM上查找,如果查找不到,則要根據(jù)存儲表項時最多可以進行的哈希函數(shù)轉(zhuǎn)換次數(shù),進行多次哈希函數(shù)轉(zhuǎn)換,繼續(xù)在DRAM上查找,如果還是無法找到,再在TCAM上查找,當(dāng)然,如果在存儲表項的方法中只允許進行一次哈希函數(shù)轉(zhuǎn)換,就不需要再進行多次哈希函數(shù)轉(zhuǎn)換,直接在TCAM上查找就可以了。
現(xiàn)以在存儲表項的方法中對KEY值最多進行兩次哈希函數(shù)轉(zhuǎn)換為例,詳述管理數(shù)據(jù)庫數(shù)據(jù)的方法中查找表項的方法,具體流程如圖4所示步驟401、確定要查找的表項KEY值。
步驟402、輸入KEY值到哈希函數(shù)1“H1(k)”中,計算出KEY經(jīng)哈希函數(shù)轉(zhuǎn)換后獲得的哈希值1“h1”。
步驟403、查找DRAM中是否存在和h1相等的哈希值,如果存在和h1相等的哈希值,則進入步驟404;如果不存在和h1相等的哈希值,則進入步驟405。
步驟404、將DRAM中與h1相等的哈希值下存儲的KEY值與要查找的表項KEY值相比較,判斷是否相等,如果相等,則說明此項即為要查找的表項,進入步驟409;如果不相等,則進入步驟405。
以上所述步驟403到404即為對KEY值進行第一次哈希函數(shù)轉(zhuǎn)換后,在DRAM上的查找,如果查找到相等的哈希值,并且該哈希值下存儲的KEY值也相等,則說明查找到了所需的數(shù)據(jù),否者就要進行下一步查找。
步驟405、輸入KEY值到哈希函數(shù)2“H2(k)”中,計算出KEY經(jīng)哈希函數(shù)轉(zhuǎn)換后獲得的哈希值2“h2”。
因為使用對KEY值第一次哈希函數(shù)轉(zhuǎn)換后的哈希值沒有查找到所需數(shù)據(jù),而且在本實施例中存儲表項的方法規(guī)定對KEY值最多可以進行兩次哈希函數(shù)轉(zhuǎn)換,所以這里要對KEY值進行第二次哈希函數(shù)轉(zhuǎn)換,然后使用h2繼續(xù)在DRAM上進行查找。
在實際應(yīng)用中,如果在存儲表項的方法中規(guī)定對KEY值最多只進行一次哈希函數(shù)轉(zhuǎn)換,那么這里也不需要進行第二次哈希函數(shù)轉(zhuǎn)換,直接查找TCAM即可。
步驟406、查找DRAM中是否存在和h2相等的哈希值,如果存在和h2相等的哈希值,則進入步驟407;如果不存在和h2相等的哈希值,則進入步驟408。
步驟407、將DRAM中與h2相等的哈希值下存儲的KEY值與要查找的表項KEY值相比較,判斷是否相等,如果相等,則說明此項即為要查找的表項進入步驟409;如果不相等,則進入步驟408。
步驟408、使用要查找的表項KEY值在TCAM中進行查找,查找是否存在相等的KEY值,如果存在,則根據(jù)此相等KEY值獲得存儲于關(guān)聯(lián)SRAM上對應(yīng)的表項內(nèi)容,進入步驟409;如果不存在,則進入步驟410。
由于在本實施例中存儲表項的方法規(guī)定對KEY值最多可以只進行兩次哈希函數(shù)轉(zhuǎn)換,所以在對KEY值進行兩次哈希函數(shù)轉(zhuǎn)換后都沒有在DRAM上查找到后,則開始使用KEY值在TCAM上查找,如果在存儲表項的方法里規(guī)定可以進行多于兩次的哈希函數(shù)轉(zhuǎn)換,那么這里就要繼續(xù)進行下一次哈希函數(shù)轉(zhuǎn)換,繼續(xù)在DRAM上查找,直到進行哈希函數(shù)轉(zhuǎn)換的次數(shù)達到存儲表項的方法里規(guī)定的上限,還沒有找到時,才可以使用KEY值在TCAM上查找。
步驟409、查找成功,獲得要查找的表項內(nèi)容。
步驟410、查找失敗,說明此待查表項沒有在被查找的數(shù)據(jù)庫系統(tǒng)中存儲過。
至此流程結(jié)束。
本發(fā)明提供的管理數(shù)據(jù)庫數(shù)據(jù)的方法中刪除表項的方法,是在存儲表項的方法和查找表項的方法基礎(chǔ)上提出的,具體流程如圖5所示步驟501、確定要刪除的表項KEY值。
步驟502、調(diào)用查找模塊,根據(jù)KEY值查找表項。
此步調(diào)用的查找模塊,即上文在管理數(shù)據(jù)庫數(shù)據(jù)的方法中查找表項的方法中提到的查找的方法,也就是說刪除查找的過程和查找表項的方法是完全一致的。
步驟503、判斷查找是否成功,成功進入步驟504;否則,進入步驟505。
步驟504、查找成功,刪除查找到的表項。
步驟505、刪除失敗。
本發(fā)明提供的管理數(shù)據(jù)庫數(shù)據(jù)的方法中老化表項的方法,是為了及時清理長期不再使用的表項,節(jié)約系統(tǒng)的存儲空間而提出的。
由于在本發(fā)明提供的管理數(shù)據(jù)庫數(shù)據(jù)的方法中全部表項被分為幾部分分別存儲在不同的存儲器中,可以存儲的表項也比較大,很有可能存在一些長期得不到調(diào)用的表項,這些表項越來越多,占用的空間越來越大,有可能導(dǎo)致一些新的表項由于存儲空間不夠,無法添加進來。
為了有效的使用存儲空間,盡量存儲調(diào)用頻率最高的表項,將長期閑置不被調(diào)用的表項清理出去,本發(fā)明在老化表項的方法中定義了一個老化表,每個表項都在老化表里有一個老化標(biāo)識位,每個表項的老化標(biāo)識位初始為“0”,系統(tǒng)每隔一段時間對老化表進行刷新,將標(biāo)識位為“0”的置“1”,將標(biāo)識位為“1”的對應(yīng)表項刪除,表項每次被調(diào)用都會在老化標(biāo)識位進行置“0”的動作,這樣當(dāng)一個表項被置“1”后,在下一個規(guī)定周期內(nèi)都沒有被調(diào)用的話,就會被清除,只有在下一個規(guī)定周期內(nèi)被調(diào)用,將標(biāo)識位置“0”才能被保留,這里刷新周期的時間可以由用戶根據(jù)實際的需要去確定。
上文所述老化標(biāo)識位初始值也可以為“1”,刷新時置“0”,調(diào)用時置“1”,清除老化標(biāo)識位為“0”的表項。
現(xiàn)以老化標(biāo)識位初始值為“0”為例說明老化表項的方法在實際操作中的應(yīng)用,流程參見圖6,具體內(nèi)容如下步驟601、定義一個老化表,每一個存儲于系統(tǒng)中的表項都在此老化表中有一個對應(yīng)的老化標(biāo)識位,及相應(yīng)表項信息,每一個表項的老化標(biāo)識位初始狀態(tài)都為“0”。
步驟602、根據(jù)預(yù)先定義的刷新周期,每隔一段時間刷新老化表,即判斷每一個老化標(biāo)識位是否為“0”,若為“0”則執(zhí)行步驟603;若不為“0”則執(zhí)行步驟604。
步驟603、將所有為“0”的老化標(biāo)識位全部置“1”。
步驟604、取出所有老化標(biāo)識位為“1”的對應(yīng)表項信息,進行刪除操作。
步驟605、判斷表項是否被調(diào)用,是則執(zhí)行步驟606;否則執(zhí)行步驟607。
步驟606、將所有被調(diào)用的表項老化標(biāo)識位置“0”。
步驟607、沒有被調(diào)用的表項不改變其老化標(biāo)識位的狀態(tài)值。
步驟605至步驟607即表示,每個表項在被調(diào)用時都將在其老化標(biāo)識位置“0”,沒有被調(diào)用過的表項其老化標(biāo)識位狀態(tài)就不會得到變化,如果表項在經(jīng)過一次刷新動作后,沒有被刪除,其老化標(biāo)識位必然在步驟604被置“1”,如果其在下一次刷新周期到來前都沒有被調(diào)用,其老化標(biāo)識位將保持“1”的狀態(tài)直到新的刷新周期到來,然后被刪除。
步驟608、等待下一個刷新周期。
以上對本發(fā)明所提供的一種數(shù)據(jù)庫系統(tǒng)及管理數(shù)據(jù)庫數(shù)據(jù)的方法進行了詳細介紹,本文中應(yīng)用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實施方式
及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。
權(quán)利要求
1.一種管理數(shù)據(jù)庫數(shù)據(jù)的方法,其特征在于,該方法包括存儲表項的方法將待存儲表項的鍵值進行規(guī)定次數(shù)內(nèi)的哈希函數(shù)轉(zhuǎn)換,獲得對應(yīng)哈希值;判斷鍵值經(jīng)過哈希函數(shù)轉(zhuǎn)換后是否沖突;將經(jīng)過規(guī)定次數(shù)哈希函數(shù)轉(zhuǎn)換后,仍然沖突的表項鍵值存儲于三值內(nèi)容地址存儲器,表項內(nèi)容存儲于與三值內(nèi)容地址存儲器關(guān)聯(lián)的第一隨機存儲器;將在規(guī)定次數(shù)內(nèi),有一次進行哈希函數(shù)轉(zhuǎn)換后不沖突的表項及其哈希值存儲于第二隨機存儲器。
2.如權(quán)利要求1所述的管理數(shù)據(jù)庫數(shù)據(jù)的方法,其特征在于,所述規(guī)定次數(shù)為至少兩次,所述方法包括將待存儲表項的鍵值進行規(guī)定次數(shù)內(nèi)的哈希函數(shù)轉(zhuǎn)換,獲得對應(yīng)哈希值;判斷每次鍵值經(jīng)過哈希函數(shù)轉(zhuǎn)換后是否沖突,進行哈希函數(shù)轉(zhuǎn)換的次數(shù)是否達到規(guī)定次數(shù);若沖突,且進行哈希函數(shù)轉(zhuǎn)換的次數(shù)未達到規(guī)定次數(shù),則繼續(xù)將待存儲表項的鍵值進行下一次哈希函數(shù)轉(zhuǎn)換;若沖突,且進行哈希函數(shù)轉(zhuǎn)換的次數(shù)已經(jīng)達到規(guī)定次數(shù),則將表項鍵值存儲于三值內(nèi)容地址存儲器,表項內(nèi)容存儲于與三值內(nèi)容地址存儲器關(guān)聯(lián)的第一隨機存儲器;若不沖突,則將表項及其哈希值存儲于第二隨機存儲器。
3.如權(quán)利要求1所述的管理數(shù)據(jù)庫數(shù)據(jù)的方法,其特征在于,所述方法還包括查找表項的方法將待查找表項的鍵值進行規(guī)定次數(shù)內(nèi)的哈希函數(shù)轉(zhuǎn)換,獲得對應(yīng)哈希值;通過所述哈希值判斷第二隨機存儲器上是否存在待查找表項;若存在,則獲得待查找表項,查找成功;若不存在,則在三值內(nèi)容地址存儲器上尋找待查找表項的鍵值,尋找到鍵值后,訪問與三值內(nèi)容地址存儲器關(guān)聯(lián)的第一隨機存儲器獲得表項內(nèi)容,查找成功。
4.如權(quán)利要求3所述的管理數(shù)據(jù)庫數(shù)據(jù)的方法,其特征在于,所述規(guī)定次數(shù)為至少兩次,所述方法包括將待查找表項的鍵值進行規(guī)定次數(shù)內(nèi)的哈希函數(shù)轉(zhuǎn)換,獲得對應(yīng)哈希值;每次進行哈希函數(shù)轉(zhuǎn)換后,通過所述哈希值判斷第二隨機存儲器上是否存在待查找表項,進行哈希函數(shù)轉(zhuǎn)換的次數(shù)是否達到規(guī)定次數(shù);若存在,則獲得待查找表項,查找成功;若不存在,且進行哈希函數(shù)轉(zhuǎn)換的次數(shù)未達到規(guī)定次數(shù),則繼續(xù)將待查找表項的鍵值進行下一次哈希函數(shù)轉(zhuǎn)換;若不存在,且進行哈希函數(shù)轉(zhuǎn)換的次數(shù)已經(jīng)達到規(guī)定次數(shù),則在三值內(nèi)容地址存儲器上尋找待查找表項的鍵值,尋找到鍵值后,訪問與三值內(nèi)容地址存儲器關(guān)聯(lián)的第一隨機存儲器獲得表項內(nèi)容,查找成功。
5.如權(quán)利要求1或3所述的管理數(shù)據(jù)庫數(shù)據(jù)的方法,其特征在于,所述規(guī)定次數(shù)為一次。
6.如權(quán)利要求3或4所述的管理數(shù)據(jù)庫數(shù)據(jù)的方法,其特征在于,所述通過所述哈希值判斷第二隨機存儲器上是否存在待查找表項為判斷第二隨機存儲器上是否存在與所述哈希值相同的哈希值;若不存在,則第二隨機存儲器上不存在待查找表項;若存在,則判斷此第二隨機存儲器上的哈希值下存儲的鍵值是否和待查找表項的鍵值相等;若不相等,則第二隨機存儲器上不存在待查找表項;若相等,則第二隨機存儲器上存在待查找表項,此第二隨機存儲器上的哈希值下存儲的表項即為待查找表項。
7.如權(quán)利要求3所述的管理數(shù)據(jù)庫數(shù)據(jù)的方法,其特征在于,所述方法還包括刪除表項的方法通過所述查找表項的方法根據(jù)待刪除表項的鍵值,查找到待刪除表項,刪除待刪除表項。
8.如權(quán)利要求7所述的管理數(shù)據(jù)庫數(shù)據(jù)的方法,其特征在于,所述方法還包括老化表項的方法定義包含表項老化標(biāo)識位的老化表,定義刷新周期;表項被調(diào)用時標(biāo)記對應(yīng)老化標(biāo)識位;每個刷新周期刷新一次老化表,通過老化標(biāo)識位,使用所述刪除表項的方法將一個周期內(nèi)沒有被調(diào)用過的表項刪除。
9.如權(quán)利要求8所述的管理數(shù)據(jù)庫數(shù)據(jù)的方法,其特征在于,所述老化標(biāo)識位初始值為“0”或“1”。
10.如權(quán)利要求1至4任一項所述的管理數(shù)據(jù)庫數(shù)據(jù)的方法,其特征在于,所述第一隨機存儲器為靜態(tài)隨機存儲器。
11.如權(quán)利要求1至4任一項所述的管理數(shù)據(jù)庫數(shù)據(jù)的方法,其特征在于,所述第二隨機存儲器為動態(tài)隨機存儲器。
12.一種數(shù)據(jù)庫系統(tǒng),其特征在于,包括存儲單元、三值內(nèi)容地址存儲器、第一隨機存儲器及第二隨機存儲器;所述第一隨機存儲器與所述三值內(nèi)容地址存儲器相關(guān)聯(lián);所述存儲單元用于將待存儲表項的鍵值進行規(guī)定次數(shù)內(nèi)的哈希函數(shù)轉(zhuǎn)換,獲得對應(yīng)哈希值;判斷鍵值經(jīng)過哈希函數(shù)轉(zhuǎn)換后是否沖突;將經(jīng)過規(guī)定次數(shù)哈希函數(shù)轉(zhuǎn)換后,仍然沖突的表項鍵值存儲于所述三值內(nèi)容地址存儲器,表項內(nèi)容存儲于所述第一隨機存儲器;將在規(guī)定次數(shù)內(nèi),有一次進行哈希函數(shù)轉(zhuǎn)換后不沖突的表項及其哈希值存儲于所述第二隨機存儲器。
13.如權(quán)利要求12所述的數(shù)據(jù)庫系統(tǒng),其特征在于,所述存儲單元用于將待存儲表項的鍵值進行規(guī)定次數(shù)內(nèi)的哈希函數(shù)轉(zhuǎn)換,獲得對應(yīng)哈希值;并判斷每次鍵值經(jīng)過哈希函數(shù)轉(zhuǎn)換后是否沖突,進行哈希函數(shù)轉(zhuǎn)換的次數(shù)是否達到規(guī)定次數(shù);若沖突,且進行哈希函數(shù)轉(zhuǎn)換的次數(shù)未達到規(guī)定次數(shù),則繼續(xù)將待存儲表項的鍵值進行下一次哈希函數(shù)轉(zhuǎn)換;若沖突,且進行哈希函數(shù)轉(zhuǎn)換的次數(shù)已經(jīng)達到規(guī)定次數(shù),則將表項鍵值存儲于所述三值內(nèi)容地址存儲器,表項內(nèi)容存儲于所述第一隨機存儲器;若不沖突,則將表項及其哈希值存儲于所述第二隨機存儲器。
14.如權(quán)利要求12所述的數(shù)據(jù)庫系統(tǒng),其特征在于,所述系統(tǒng)還包括查找單元,用于將待查找表項的鍵值進行規(guī)定次數(shù)內(nèi)的哈希函數(shù)轉(zhuǎn)換,獲得對應(yīng)哈希值;通過所述哈希值判斷所述第二隨機存儲器上是否存在待查找表項;若存在,則獲得待查找表項;若不存在,則在所述三值內(nèi)容地址存儲器上尋找待查找表項的鍵值,尋找到鍵值后,訪問所述第一隨機存儲器獲得表項內(nèi)容。
15.如權(quán)利要求14所述的數(shù)據(jù)庫系統(tǒng),其特征在于,所述查找單元用于將待查找表項的鍵值進行規(guī)定次數(shù)內(nèi)的哈希函數(shù)轉(zhuǎn)換,獲得對應(yīng)哈希值;每次進行哈希函數(shù)轉(zhuǎn)換后,通過所述哈希值判斷所述第二隨機存儲器上是否存在待查找表項,進行哈希函數(shù)轉(zhuǎn)換的次數(shù)是否達到規(guī)定次數(shù);若存在,則獲得待查找表項;若不存在,且進行哈希函數(shù)轉(zhuǎn)換的次數(shù)未達到規(guī)定次數(shù),則繼續(xù)將待查找表項的鍵值進行下一次哈希函數(shù)轉(zhuǎn)換;若不存在,且進行哈希函數(shù)轉(zhuǎn)換的次數(shù)已經(jīng)達到規(guī)定次數(shù),則在所述三值內(nèi)容地址存儲器上尋找待查找表項的鍵值,尋找到鍵值后,訪問所述第一隨機存儲器獲得表項內(nèi)容。
16.如權(quán)利要求12或14所述的數(shù)據(jù)庫系統(tǒng),其特征在于,所述規(guī)定次數(shù)為一次。
17.如權(quán)利要求14所述的數(shù)據(jù)庫系統(tǒng),其特征在于,所述系統(tǒng)還包括刪除單元,用于通過所述查找單元根據(jù)待刪除表項的鍵值,查找到待刪除表項,刪除待刪除表項。
18.如權(quán)利要求17所述的數(shù)據(jù)庫系統(tǒng),其特征在于,所述系統(tǒng)還包括老化單元,用于定義包含表項老化標(biāo)識位的老化表,定義刷新周期;在表項被調(diào)用時標(biāo)記對應(yīng)老化標(biāo)識位;每個刷新周期刷新一次老化表,通過老化標(biāo)識位,使用所述刪除單元將一個周期內(nèi)沒有被調(diào)用過的表項刪除。
19.如權(quán)利要求12至15任一項所述的管理數(shù)據(jù)庫數(shù)據(jù)的方法,其特征在于,所述第一隨機存儲器為靜態(tài)隨機存儲器。
20.如權(quán)利要求12至15任一項所述的管理數(shù)據(jù)庫數(shù)據(jù)的方法,其特征在于,所述第二隨機存儲器為動態(tài)隨機存儲器。
全文摘要
本發(fā)明公開了一種管理數(shù)據(jù)庫數(shù)據(jù)的方法,該方法包括存儲表項的方法將待存儲表項的鍵值進行規(guī)定次數(shù)內(nèi)的哈希函數(shù)轉(zhuǎn)換,獲得對應(yīng)哈希值;判斷鍵值經(jīng)過哈希函數(shù)轉(zhuǎn)換后是否沖突;將經(jīng)過規(guī)定次數(shù)哈希函數(shù)轉(zhuǎn)換后,沖突的表項鍵值存儲于TCAM,表項內(nèi)容存儲于與TCAM關(guān)聯(lián)的第一RAM;將在規(guī)定次數(shù)內(nèi),有一次進行哈希函數(shù)轉(zhuǎn)換后不沖突的表項及其哈希值存儲于第二RAM。本發(fā)明還公開了一種數(shù)據(jù)庫系統(tǒng),其特征在于,包括存儲單元、TCAM、第一RAM及第二RAM;所述第一RAM與所述TCAM相關(guān)聯(lián);將經(jīng)哈希轉(zhuǎn)換后不沖突的表項存儲于第二RAM內(nèi),將沖突的表項存儲于TCAM及第一RAM內(nèi)。通過應(yīng)用本發(fā)明,可以使系統(tǒng)在成本和功耗都較低的情況下高速度的運行。
文檔編號G06F17/30GK1932818SQ20061012781
公開日2007年3月21日 申請日期2006年9月20日 優(yōu)先權(quán)日2006年9月20日
發(fā)明者呂超群 申請人:華為技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1