述存儲系統(tǒng)的內(nèi)存空間的步驟,所述N為不小于4的整數(shù)。當所述第一目標層的層級高于level N時,則不執(zhí)行將所述第一數(shù)據(jù)重新寫入所述存儲系統(tǒng)的內(nèi)存空間的步驟。具體的,所述N可以由技術(shù)人員根據(jù)實際需求設(shè)定。
[0116]308、確定所述第一數(shù)據(jù)不是最近接收的熱數(shù)據(jù)。
[0117]數(shù)據(jù)處理裝置確定所述第一數(shù)據(jù)不是最近接收的熱數(shù)據(jù),可以不執(zhí)行第一數(shù)據(jù)重新寫入內(nèi)存空間的步驟。
[0118]在本發(fā)明實施例中,設(shè)置了第一數(shù)據(jù)是否熱數(shù)據(jù)的具體判定方法,當確定第一數(shù)據(jù)不是最近接收的熱數(shù)據(jù)時,則不執(zhí)行將第一數(shù)據(jù)重新寫入內(nèi)存空間的步驟,在考慮到熱數(shù)據(jù)重新寫入的同時,也兼顧了效率原則,不對非最新數(shù)據(jù)進行處理。
[0119]在實際應(yīng)用中,由于數(shù)據(jù)過濾器受到內(nèi)存大小的限制,只能篩選出熱度大于某閾值的key,在最近訪問次數(shù)超過上限后,無法繼續(xù)累積統(tǒng)計其訪問次數(shù),因此,本發(fā)明實施例提出了使用哈希鏈表繼續(xù)進行熱度統(tǒng)計的方案,下面對本發(fā)明實施例中熱度維護的具體方法進行描述,請參閱圖4,本發(fā)明實施例中數(shù)據(jù)處理方法的另一個實施例包括:
[0120]401、通過所述數(shù)據(jù)過濾器篩選出熱度達到熱度閾值的熱數(shù)據(jù);
[0121]數(shù)據(jù)處理裝置建立數(shù)據(jù)過濾器,并通過所述數(shù)據(jù)過濾器篩選出熱度達到熱度閾值的數(shù)據(jù)。具體的,所述熱度值為根據(jù)所述數(shù)據(jù)的訪問次數(shù)而統(tǒng)計得到的數(shù)值;所述熱度閾值可以為技術(shù)人員根據(jù)經(jīng)驗和實際需求確定的一個數(shù)值。所述數(shù)據(jù)的訪問次數(shù)可以為數(shù)據(jù)的寫入次數(shù),也可以為數(shù)據(jù)的讀取次數(shù);進一步的,所述數(shù)據(jù)的訪問次數(shù)還可以同時包括數(shù)據(jù)的寫入次數(shù)和讀取次數(shù)。
[0122]402、在哈希鏈表中記錄所述數(shù)據(jù)過濾器篩選出的數(shù)據(jù);
[0123]在本發(fā)明實施例中,第一數(shù)據(jù)的key值為第一 key值,包括key值為所述第一 key值的數(shù)據(jù)為目標數(shù)據(jù);數(shù)據(jù)處理裝置通過為所述存儲系統(tǒng)建立的數(shù)據(jù)過濾器確定所述目標數(shù)據(jù)為熱數(shù)據(jù),其中,所述目標數(shù)據(jù)的訪問熱度達到預(yù)設(shè)的熱度閾值;將所述第一 key值記錄在所述哈希鏈表中,所述哈希鏈表中包括第一 key值、序列號以及熱度值,所述熱度值用于記錄所述第一 key值的訪問熱度;
[0124]在所述數(shù)據(jù)過濾器篩選出所述目標數(shù)據(jù)時,所述哈希鏈表則接收所述數(shù)據(jù)過濾器選出的所述目標數(shù)據(jù)的記錄,并維護所述第一 key值的熱度值。
[0125]示例性的,所述哈希鏈表可以為動態(tài)擴展的哈希鏈表(Internal Key List),用以繼續(xù)統(tǒng)計由所述數(shù)據(jù)過濾器篩選出的熱數(shù)據(jù)的熱度值。
[0126]如圖5所示,數(shù)據(jù)過濾器對數(shù)據(jù)的訪問操作進行統(tǒng)計,當key值相同的數(shù)據(jù)的熱度值達到所述數(shù)據(jù)過濾器中設(shè)置的熱度閾值時,就會在所述哈希鏈表中建立一組元素,其中,每組元素中記錄有一個key值,該key值對應(yīng)的序列號,以及該key值對應(yīng)的熱度值計數(shù)器。所述哈希鏈表中可以包括有多組元素。所述序列號用于表示一個key值對應(yīng)的數(shù)據(jù)在所述存儲系統(tǒng)的寫入順序,所述熱度值計數(shù)器用于統(tǒng)計所述key值對應(yīng)的數(shù)據(jù)的熱度值。
[0127]可以理解的是,本發(fā)明實施例的僅對第一 key值以及目標數(shù)據(jù)在數(shù)據(jù)過濾器和哈希鏈表中的處理進行描述,在實際應(yīng)用中數(shù)據(jù)過濾器和哈希鏈表還可以同時對其它key值及其相應(yīng)的數(shù)據(jù)進行處理,此處不再贅述。
[0128]403、根據(jù)所述目標數(shù)據(jù)的訪問記錄維護所述哈希鏈表中第一 key值的熱度值以及序列號;
[0129]數(shù)據(jù)處理裝置根據(jù)所述目標數(shù)據(jù)的訪問記錄維護所述哈希鏈表中第一 key值的熱度值以及序列號,具體的:
[0130]若所述存儲系統(tǒng)中產(chǎn)生一次所述目標數(shù)據(jù)的訪問記錄,則將所述哈希鏈表中第一key值的熱度值加一;
[0131]若所述存儲系統(tǒng)中產(chǎn)生一次所述目標數(shù)據(jù)的寫入記錄,則更新所述哈希鏈表中第一 key值的序列號。
[0132]進一步的,每隔單位時間,將所述目標數(shù)據(jù)的熱度值減一;
[0133]當所述目標數(shù)據(jù)的熱度值小于預(yù)設(shè)閾值時,在所述哈希鏈表中刪除與所述第一key值相關(guān)的信息??蛇x的,停止維護所述熱數(shù)據(jù)的熱度值計數(shù)器的預(yù)設(shè)閾值可以設(shè)置為
v=j=,
ο
[0134]可選的,在對哈希鏈表所述目標數(shù)據(jù)進行維護的過程中,若在所述存儲系統(tǒng)中再產(chǎn)生一次所述目標數(shù)據(jù)的訪問記錄,則在一段預(yù)置時長內(nèi),可以對所述目標數(shù)據(jù)不執(zhí)行所述將所述熱度值計數(shù)器減一的步驟。具體的,對目標數(shù)據(jù)的維護方法可以根據(jù)實際需求而定,此處不作限定。
[0135]示例性的,在確定某數(shù)據(jù)為熱數(shù)據(jù)(即數(shù)據(jù)過濾器篩選出的熱度達到熱度閾值的數(shù)據(jù))之后,所述目標數(shù)據(jù)每被被訪問到一次,則在熱度維護的過程中就會相應(yīng)的增加一次該熱數(shù)據(jù)的熱度值;進一步的,由于熱度會隨時間的流逝而冷卻,因此,在時間的維度上,該目標數(shù)據(jù)的熱度值也會根據(jù)單位時間遞減;若目標數(shù)據(jù)的熱度值被減為零,則表示所述目標數(shù)據(jù)長時間沒有被訪問(即已經(jīng)不是熱數(shù)據(jù)了),數(shù)據(jù)處理裝置可以停止對所述目標數(shù)據(jù)的維護(即在熱度維護記錄中刪除所述熱數(shù)據(jù))。具體的,所述熱度維護的方法可以通過特定函數(shù)的實現(xiàn)。
[0136]具體的,本發(fā)明實施例中所指的目標數(shù)據(jù)為熱度達到某一個熱度閾值的數(shù)據(jù);在實際應(yīng)用中,可以設(shè)置兩個熱度閾值,第一熱度閾值用于數(shù)據(jù)過濾器篩選熱數(shù)據(jù),第二熱度閾值用于在目標數(shù)據(jù)進行維護時判斷是否仍為熱數(shù)據(jù)。示例性的,若第一熱度閾值為3,則在對所述目標數(shù)據(jù)進行熱度維護時,所述目標數(shù)據(jù)的初始值為3,第二熱度閾值若設(shè)為1,則當所述熱數(shù)據(jù)的熱度值小于1時,則當前的目標數(shù)據(jù)不再為熱數(shù)據(jù)。
[0137]可以理解的是,對熱數(shù)據(jù)的判定,以及熱度閾值數(shù)量的設(shè)定,可以根據(jù)實際應(yīng)用中對熱數(shù)據(jù)的定義而確定,以上例子不應(yīng)理解為對本發(fā)明實施例中熱數(shù)據(jù)以及熱度閾值的限定。
[0138]404、在LSM Tree的第一目標層對應(yīng)的存儲空間中確定待合并的第一數(shù)據(jù);
[0139]數(shù)據(jù)處理裝置在LSM Tree的第一目標層對應(yīng)的存儲空間中確定待合并的第一數(shù)據(jù),具體的,所述第一目標層為LSM Tree中當前正在進行數(shù)據(jù)合并的目標層,所述第一數(shù)據(jù)為所述第一目標層中待合并數(shù)據(jù)。
[0140]405、在與所述LSM Tree的第二目標層對應(yīng)的存儲空間中確定key值為所述第一key值的第二數(shù)據(jù);
[0141]數(shù)據(jù)處理裝置在與所述LSM Tree的第二目標層對應(yīng)的存儲空間中確定key值為所述第一 key值的第二數(shù)據(jù),其中在所述LSM Tree結(jié)構(gòu)中,所述第二目標層的層級低于所述第一目標層的層級,所述第一目標層對應(yīng)的存儲空間的訪問速度不低于所述第二目標層對應(yīng)的存儲空間的訪問速度。所述第二數(shù)據(jù)為所述第二目標層中的數(shù)據(jù);需要說明的是,所述“第一”和“第二”僅是用于區(qū)分兩個不同層次的存儲空間,或兩個具有不同value的數(shù)據(jù),不代表具體實現(xiàn)中的名稱或物理層次。
[0142]由于數(shù)據(jù)過濾器和哈希鏈表實時的對數(shù)據(jù)進行篩選和維護,因此,在本發(fā)明實施例中,步驟401至403,與步驟404至步驟405之間沒有嚴格的時序關(guān)系,即步驟401至403可以發(fā)生在步驟404至步驟405之前,也可以發(fā)生在步驟404至步驟405之后,也可以同步執(zhí)行,對實現(xiàn)本發(fā)明實施例中的方法不產(chǎn)生本質(zhì)影響。
[0143]406、在哈希鏈表查找所述第一 key值;
[0144]數(shù)據(jù)處理裝置在哈希鏈表查找所述第一 key值,所述哈希鏈表用于根據(jù)接收的目標數(shù)據(jù)記錄并維護所述第一 key值的熱度值,所述目標數(shù)據(jù)包括key值為所述第一 key值的數(shù)據(jù)。
[0145]407、判斷序列號是否相同;
[0146]數(shù)據(jù)處理裝置在所述哈希鏈表中所述第一 key值對應(yīng)的序列號與所述第一數(shù)據(jù)的序列號是否相等,若是,則確定所述第一數(shù)據(jù)最近接收的熱數(shù)據(jù),執(zhí)行步驟408 ;若否,則執(zhí)行步驟411,確定所述第一數(shù)據(jù)不是最近接收的熱數(shù)據(jù)。其中,所述哈希鏈表中所述第一key值對應(yīng)的序列號為最近接收的具有第一 key值的數(shù)據(jù)的序列號。
[0147]在本發(fā)明實施例中,由于哈希鏈表維護的都是最新寫入的熱數(shù)據(jù),因此,若第一數(shù)據(jù)的序列號與哈希鏈表熱數(shù)據(jù)對應(yīng)的序列號不相同,則說明所述第一數(shù)據(jù)為舊數(shù)據(jù),可以不執(zhí)行重新寫入內(nèi)存空間的步驟。
[0148]408、從所述第二目標層對應(yīng)的存儲空間中刪除所述第二數(shù)據(jù);
[0149]數(shù)據(jù)處理裝置從所述第二目標層對應(yīng)的存儲空間中刪除所述第二數(shù)據(jù),節(jié)省存儲系統(tǒng)中的存儲空間。
[0150]409、將所述第一數(shù)據(jù)從所述第一目標層對應(yīng)的存儲空間遷移到所述第二目標層對應(yīng)的存儲空間中;
[0151]數(shù)據(jù)處理裝置將所述第一數(shù)據(jù)從所述第一目標層對應(yīng)的存儲空間遷移到所述第二目標層對應(yīng)的存儲空間中,為新寫入所述存儲系統(tǒng)中的數(shù)據(jù)騰出上層的存儲空間。
[0152]410、將所述第一數(shù)據(jù)重新寫入所述存儲系統(tǒng)的內(nèi)存空間;
[0153]數(shù)據(jù)處理裝置將所述第一數(shù)據(jù)重新寫入所述存儲系統(tǒng)的內(nèi)存空間。
[0154]當確認所述第一數(shù)據(jù)確定為熱數(shù)據(jù)之后,說明所述第一數(shù)據(jù)會被經(jīng)常使用到,若被LSM Tree的數(shù)據(jù)合并機制寫入到較低層次的存儲空間中,讀取速度將受到很大影響,因此,在本發(fā)明實施例中,將所述第一數(shù)據(jù)重新寫入所述存儲系統(tǒng)的內(nèi)存空間,以便于熱數(shù)據(jù)能被快速讀取到。
[0155]可選的,在實際應(yīng)用中,在由于數(shù)據(jù)在較高層次的讀取速度并不慢,因此,可以當所述第一目標層的層級低于level N時,才執(zhí)行將所述第一數(shù)據(jù)重新寫入所述存儲系統(tǒng)的內(nèi)存空間的步驟,所述N為不小于4的整數(shù)。當所述第一目標層的層級高于level N時,則不執(zhí)行將所述第一數(shù)據(jù)重新寫入所述存儲系統(tǒng)的內(nèi)存空間的步驟。具體的,所述N可以由技術(shù)人員根據(jù)實際需求設(shè)定。
[0156]411、確定所述第一數(shù)據(jù)不是最近接收的熱數(shù)據(jù)。
[0157]數(shù)據(jù)處理裝置確定所述第一數(shù)據(jù)不是最近接收的熱數(shù)據(jù),可以不執(zhí)行第一數(shù)據(jù)重新寫入內(nèi)存空間的步驟。
[0158]在本發(fā)明實施例中,提供了詳細的熱數(shù)據(jù)的維護方法,使用哈希鏈表繼續(xù)對數(shù)據(jù)過濾器篩選出來的熱數(shù)據(jù)繼續(xù)進行熱度統(tǒng)計,考慮了時間維度對熱數(shù)據(jù)的影響,使得熱數(shù)據(jù)的確定更加精確。
[0159]下面對實現(xiàn)本發(fā)明實施例中的數(shù)據(jù)處理方法的數(shù)據(jù)處理裝置進行描述,請參閱圖6,本發(fā)明實施例中數(shù)據(jù)處理裝置的一個實施例包括:
[0160]鍵值確定單元601,用于在與所述LSM Tree的第一目標層對應(yīng)的存儲空間中確定待合并的第一數(shù)據(jù),所述第一數(shù)據(jù)的鍵key值為第一 key值;
[0161]查找單元602,用于在與所述LSM Tree的第二目標層對應(yīng)的存儲空間中確定key值為所述第一 key值的第二數(shù)據(jù),其中,在所述LSM Tree結(jié)構(gòu)中,所述第二目標層的層級低于所述第一目標層的層級,所述第一目標層對應(yīng)的存儲空間的訪問速度不低于所述第二目標層對應(yīng)的存儲空間的訪問速度;
[0162]熱數(shù)據(jù)確定單元603,用于確定所述第一數(shù)據(jù)為最近接收的熱數(shù)據(jù);
[0163]刪除單元604,用于從所述第二目標層對應(yīng)的存儲空間中刪除所述第二數(shù)據(jù);
[0164]遷移單元605,用于將所述第一數(shù)據(jù)從所述第一目標層對應(yīng)的存儲空間遷移到所述第二目標層對應(yīng)的存儲空間中;
[0165]重分布單元606