一種數(shù)據(jù)處理方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,尤其涉及一種數(shù)據(jù)處理方法及裝置。
【背景技術(shù)】
[0002]日志結(jié)構(gòu)合并樹(LSM Tree, Log-structured merge-tree)是一種廣泛應(yīng)用于數(shù)據(jù)存儲(chǔ)領(lǐng)域的結(jié)構(gòu)。LSM Tree針對(duì)隨機(jī)I/O對(duì)持久化存儲(chǔ)的性能影響問題,做了如下設(shè)計(jì):
[0003]1.數(shù)據(jù)分層放置:數(shù)據(jù)在最初時(shí)寫入的是存儲(chǔ)系統(tǒng)(以LSM Tree結(jié)構(gòu)存儲(chǔ)數(shù)據(jù)的系統(tǒng))中的內(nèi)存空間,再從上到下逐漸寫入其他層次的硬盤驅(qū)動(dòng)器(HDD,Hard Disk Drive)或固態(tài)硬盤(SSD, Solid State Drive)等持久化存儲(chǔ)空間中。
[0004]2.數(shù)據(jù)異地更新,將key-value結(jié)構(gòu)的數(shù)據(jù)以log的方式寫入。
[0005]3.系統(tǒng)的后臺(tái)進(jìn)程不斷地將數(shù)據(jù)從高層到低層(即從levelO到level N)合并(merge),將鍵(key)值相同的數(shù)據(jù)中的較舊的版本刪除,保留排序的新版本。數(shù)據(jù)隨著merge的進(jìn)行,數(shù)據(jù)不斷由高層存儲(chǔ)空間向低層存儲(chǔ)空間移動(dòng)。
[0006]在現(xiàn)有LSM Tree的存儲(chǔ)系統(tǒng)中,為了給新寫入的數(shù)據(jù)騰出存儲(chǔ)空間,會(huì)經(jīng)常執(zhí)行compact (即數(shù)據(jù)合并)機(jī)制,比較不同層次的存儲(chǔ)空間,將key值相同的數(shù)據(jù)中的舊數(shù)據(jù)刪除,并將key值相同的新數(shù)據(jù)移至下一層的存儲(chǔ)空間(如,若新數(shù)據(jù)原本在level 1,compact過后轉(zhuǎn)移至level 2)。
[0007]但在實(shí)際應(yīng)用中,存在一些會(huì)被經(jīng)常使用到的數(shù)據(jù)(稱為熱數(shù)據(jù)),這些熱數(shù)據(jù)在進(jìn)行compact時(shí)可能會(huì)被移動(dòng)到較低層的存儲(chǔ)空間中,從而導(dǎo)致這些熱數(shù)據(jù)的讀取變得較為緩慢,進(jìn)而影響到系統(tǒng)的整體性能。
【發(fā)明內(nèi)容】
[0008]本發(fā)明實(shí)施例提供了一種數(shù)據(jù)處理方法及裝置,用于對(duì)熱數(shù)據(jù)進(jìn)行熱度統(tǒng)計(jì),并根據(jù)熱度統(tǒng)計(jì)的接管對(duì)數(shù)據(jù)進(jìn)行重分布。
[0009]本發(fā)明實(shí)施例第一方面提供的數(shù)據(jù)處理方法,應(yīng)用于按照日志結(jié)構(gòu)合并樹LSMTree結(jié)構(gòu)存儲(chǔ)數(shù)據(jù)的存儲(chǔ)系統(tǒng)中,所述方法包括:
[0010]在與所述LSM Tree的第一目標(biāo)層對(duì)應(yīng)的存儲(chǔ)空間中確定待合并的第一數(shù)據(jù),所述第一數(shù)據(jù)的鍵key值為第一 key值;
[0011]在與所述LSM Tree的第二目標(biāo)層對(duì)應(yīng)的存儲(chǔ)空間中確定key值為所述第一 key值的第二數(shù)據(jù),其中,在所述LSM Tree結(jié)構(gòu)中,所述第二目標(biāo)層的層級(jí)低于所述第一目標(biāo)層的層級(jí),所述第一目標(biāo)層對(duì)應(yīng)的存儲(chǔ)空間的訪問速度不低于所述第二目標(biāo)層對(duì)應(yīng)的存儲(chǔ)空間的訪問速度;
[0012]確定所述第一數(shù)據(jù)為最近接收的熱數(shù)據(jù);
[0013]從所述第二目標(biāo)層對(duì)應(yīng)的存儲(chǔ)空間中刪除所述第二數(shù)據(jù);
[0014]將所述第一數(shù)據(jù)從所述第一目標(biāo)層對(duì)應(yīng)的存儲(chǔ)空間遷移到所述第二目標(biāo)層對(duì)應(yīng)的存儲(chǔ)空間中;
[0015]將所述第一數(shù)據(jù)重新寫入所述存儲(chǔ)系統(tǒng)的內(nèi)存空間。
[0016]結(jié)合第一方面,在第一種可能的實(shí)現(xiàn)方式中,所述確定所述第一數(shù)據(jù)為最近接收的熱數(shù)據(jù)包括:
[0017]在哈希鏈表查找所述第一 key值,所述哈希鏈表用于根據(jù)接收的目標(biāo)數(shù)據(jù)記錄并維護(hù)所述第一 key值的熱度值,所述目標(biāo)數(shù)據(jù)包括key值為所述第一 key值的數(shù)據(jù);
[0018]若在所述哈希鏈表中所述第一 key值對(duì)應(yīng)的序列號(hào)與所述第一數(shù)據(jù)的序列號(hào)相等,則確定所述第一數(shù)據(jù)最近接收的熱數(shù)據(jù),其中,所述哈希鏈表中所述第一 key值對(duì)應(yīng)的序列號(hào)為最近接收的具有第一 key值的數(shù)據(jù)的序列號(hào)。
[0019]結(jié)合第一方面第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,所述確定所述第一數(shù)據(jù)為最近接收的熱數(shù)據(jù)之前,還包括:
[0020]通過為所述存儲(chǔ)系統(tǒng)建立的數(shù)據(jù)過濾器確定所述目標(biāo)數(shù)據(jù)為熱數(shù)據(jù),其中,所述目標(biāo)數(shù)據(jù)的訪問熱度達(dá)到預(yù)設(shè)的熱度閾值;將所述第一 key值記錄在所述哈希鏈表中,所述哈希鏈表中包括第一 key值、序列號(hào)以及熱度值,所述熱度值用于記錄所述第一 key值的訪問熱度;
[0021]根據(jù)所述目標(biāo)數(shù)據(jù)的訪問記錄維護(hù)所述哈希鏈表中第一 key值的熱度值以及序列號(hào)。
[0022]結(jié)合第一方面第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,
[0023]所述訪問記錄包括:讀取記錄或?qū)懭胗涗洠?br>[0024]所述根據(jù)所述目標(biāo)數(shù)據(jù)的訪問記錄維護(hù)所述哈希鏈表中第一 key值的熱度值及序列號(hào),包括:
[0025]若所述存儲(chǔ)系統(tǒng)中產(chǎn)生一次所述目標(biāo)數(shù)據(jù)的訪問記錄,則將所述哈希鏈表中第一key值的熱度值加一;
[0026]若所述存儲(chǔ)系統(tǒng)中產(chǎn)生一次所述目標(biāo)數(shù)據(jù)的寫入記錄,則更新所述哈希鏈表中第一 key值的序列號(hào)。
[0027]結(jié)合第一方面第三種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,所述根據(jù)所述目標(biāo)數(shù)據(jù)的訪問記錄維護(hù)哈希鏈表中第一 key值的熱度值還包括:
[0028]每隔單位時(shí)間,將所述目標(biāo)數(shù)據(jù)的熱度值減一;
[0029]當(dāng)所述目標(biāo)數(shù)據(jù)的熱度值小于預(yù)設(shè)閾值時(shí),在所述哈希鏈表中刪除與所述第一key值相關(guān)的信息。
[0030]結(jié)合第一方面或第一方面得第一至四任一種可能的實(shí)現(xiàn)方式,在第五種可能的實(shí)現(xiàn)方式中,所述將所述第一數(shù)據(jù)重新寫入所述存儲(chǔ)系統(tǒng)的內(nèi)存空間包括:
[0031]當(dāng)所述第一目標(biāo)層的層級(jí)低于level N時(shí),將所述第一數(shù)據(jù)重新寫入所述存儲(chǔ)系統(tǒng)的內(nèi)存空間,所述N為不小于4的整數(shù)。
[0032]本發(fā)明實(shí)施例第二方面提供的數(shù)據(jù)處理裝置,應(yīng)用于按照日志結(jié)構(gòu)合并樹LSMTree結(jié)構(gòu)存儲(chǔ)數(shù)據(jù)的存儲(chǔ)系統(tǒng)中,所述方法包括:
[0033]鍵值確定單元,用于在與所述LSM Tree的第一目標(biāo)層對(duì)應(yīng)的存儲(chǔ)空間中確定待合并的第一數(shù)據(jù),所述第一數(shù)據(jù)的鍵key值為第一 key值;
[0034]查找單元,用于在與所述LSM Tree的第二目標(biāo)層對(duì)應(yīng)的存儲(chǔ)空間中確定key值為所述第一 key值的第二數(shù)據(jù),其中,在所述LSM Tree結(jié)構(gòu)中,所述第二目標(biāo)層的層級(jí)低于所述第一目標(biāo)層的層級(jí),所述第一目標(biāo)層對(duì)應(yīng)的存儲(chǔ)空間的訪問速度不低于所述第二目標(biāo)層對(duì)應(yīng)的存儲(chǔ)空間的訪問速度;
[0035]熱數(shù)據(jù)確定單元,用于確定所述第一數(shù)據(jù)為最近接收的熱數(shù)據(jù);
[0036]刪除單元,用于從所述第二目標(biāo)層對(duì)應(yīng)的存儲(chǔ)空間中刪除所述第二數(shù)據(jù);
[0037]遷移單元,用于將所述第一數(shù)據(jù)從所述第一目標(biāo)層對(duì)應(yīng)的存儲(chǔ)空間遷移到所述第二目標(biāo)層對(duì)應(yīng)的存儲(chǔ)空間中;
[0038]重分布單元,用于將所述第一數(shù)據(jù)重新寫入所述存儲(chǔ)系統(tǒng)的內(nèi)存空間。
[0039]結(jié)合第二方面,在第一種可能的實(shí)現(xiàn)方式中,所述熱數(shù)據(jù)確定單元具體用于:
[0040]在哈希鏈表查找所述第一 key值,所述哈希鏈表用于根據(jù)接收的目標(biāo)數(shù)據(jù)記錄并維護(hù)所述第一 key值的熱度值,所述目標(biāo)數(shù)據(jù)包括key值為所述第一 key值的數(shù)據(jù);
[0041]若在所述哈希鏈表中所述第一 key值對(duì)應(yīng)的序列號(hào)與所述第一數(shù)據(jù)的序列號(hào)相等,則確定所述第一數(shù)據(jù)最近接收的熱數(shù)據(jù),其中,所述哈希鏈表中所述第一 key值對(duì)應(yīng)的序列號(hào)為最近接收的具有第一 key值的數(shù)據(jù)的序列號(hào)。
[0042]結(jié)合第二方面第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,所述裝置還包括:
[0043]熱數(shù)據(jù)篩選單元,用于通過為所述存儲(chǔ)系統(tǒng)建立的數(shù)據(jù)過濾器確定所述目標(biāo)數(shù)據(jù)為熱數(shù)據(jù),其中,所述目標(biāo)數(shù)據(jù)的訪問熱度達(dá)到預(yù)設(shè)的熱度閾值;將所述第一 key值記錄在所述哈希鏈表中,所述哈希鏈表中包括第一 key值、序列號(hào)以及熱度值,所述熱度值用于記錄所述第一 key值的訪問熱度;
[0044]維護(hù)單元,用于根據(jù)所述目標(biāo)數(shù)據(jù)的訪問記錄維護(hù)所述哈希鏈表中所述第一 key值的熱度值以及序列號(hào)。
[0045]結(jié)合第二方面第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,
[0046]所述維護(hù)單元具體用于:
[0047]若所述存儲(chǔ)系統(tǒng)中產(chǎn)生一次所述目標(biāo)數(shù)據(jù)的訪問記錄,則將所述哈希鏈表中第一key值的熱度值加一;所述訪問記錄包括:讀取記錄或?qū)懭胗涗洠?br>[0048]若所述存儲(chǔ)系統(tǒng)中產(chǎn)生一次所述目標(biāo)數(shù)據(jù)的寫入記錄,則更新所述哈希鏈表中第一 key值的序列號(hào)。
[0049]結(jié)合第二方面第三種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,所述根據(jù)所述目標(biāo)數(shù)據(jù)的訪問記錄維護(hù)哈希鏈表中第一 key值的熱度值還包括:
[0050]每隔單位時(shí)間,將所述目標(biāo)數(shù)據(jù)的熱度值減一;
[0051]當(dāng)所述目標(biāo)數(shù)據(jù)的熱度值小于預(yù)設(shè)閾值時(shí),在所述哈希鏈表中刪除與所述第一key值相關(guān)的信息。
[0052]結(jié)合第二方面或第一方面得第一至四任一種可能的實(shí)現(xiàn)方式,在第五種可能的實(shí)現(xiàn)方式中,所述重分布單元具體用于:
[0053]當(dāng)所述第一目標(biāo)層的層級(jí)低于level N時(shí),將所述第一數(shù)據(jù)重新寫入所述存儲(chǔ)系統(tǒng)的內(nèi)存空間,所述N為不小于4的整數(shù)。
[0054]從以上技術(shù)方案可以看出,本發(fā)明實(shí)施例具有以下優(yōu)點(diǎn):
[0055]在本發(fā)明實(shí)施例中,提供了熱數(shù)據(jù)的確定方法,當(dāng)在LSM Tree的存儲(chǔ)空間中進(jìn)行第一數(shù)據(jù)的數(shù)據(jù)合并時(shí),若確定所述第一數(shù)據(jù)為最近接收的熱數(shù)據(jù),則將所述第一數(shù)據(jù)重新寫入所述存儲(chǔ)系統(tǒng)的內(nèi)存空間,使得使用頻率高的熱數(shù)據(jù)的訪問速度加快,從而提升了系統(tǒng)性能。
【附圖說明】
[0056]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0057]圖1是本發(fā)明實(shí)施例中存儲(chǔ)系統(tǒng)的一個(gè)架構(gòu)示意圖;
[0058]圖2是本發(fā)明實(shí)施例中數(shù)據(jù)處理方法的一個(gè)流程示意圖;
[0059]圖3是本發(fā)明實(shí)施例中數(shù)據(jù)處理方法的另一個(gè)流程示意圖;
[0060]圖4是本發(fā)明實(shí)施例中數(shù)據(jù)處理方法的另一個(gè)流程示意圖;
[0061]圖5是本發(fā)明實(shí)施例中數(shù)據(jù)維護(hù)方法的一個(gè)處理示意圖;
[0062]圖6是本發(fā)明實(shí)施例中數(shù)據(jù)處理裝置的一個(gè)結(jié)構(gòu)示意圖;
[0063]圖7是本發(fā)明實(shí)施例中基于數(shù)據(jù)處理方法的計(jì)算機(jī)的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0064]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0065]需要說明的是,本發(fā)明實(shí)施例中的數(shù)據(jù)處理方法都是應(yīng)用于按照LSM Tree結(jié)構(gòu)存儲(chǔ)數(shù)據(jù)的存儲(chǔ)系統(tǒng)中。
[0066]在LSM Tree的存儲(chǔ)系統(tǒng)中,數(shù)據(jù)的存儲(chǔ)格式為key-value結(jié)構(gòu),即LSM Tree中存儲(chǔ)的數(shù)據(jù)都包含有key值和value兩種參數(shù),value為數(shù)據(jù)的數(shù)據(jù)值,key值為數(shù)據(jù)的索引參數(shù)。
[0067]LSM Tree的存儲(chǔ)結(jié)構(gòu)如圖1所示,當(dāng)key-v