本技術(shù)涉及數(shù)據(jù)存儲,特別是涉及一種數(shù)據(jù)讀取方法、裝置、計算機設(shè)備、計算機可讀存儲介質(zhì)和計算機程序產(chǎn)品。
背景技術(shù):
::1、日志合并(log-structured?merge,lsm)樹是一種高效的數(shù)據(jù)存儲結(jié)構(gòu),廣泛應(yīng)用于rocksdb、leveldb等數(shù)據(jù)庫中。lsm樹通過將數(shù)據(jù)首先寫入內(nèi)存中的內(nèi)存表(memtable)中,然后定期將memtable中的數(shù)據(jù)持久化到磁盤上的排序字符串表(sorted?stringtable,sst)來實現(xiàn)快速寫入。當(dāng)進行數(shù)據(jù)讀取時,需要多次訪問磁盤,使得lsm樹的讀取性能受限于磁盤i/o,影響讀取性能。2、傳統(tǒng)技術(shù)中,是通過優(yōu)化sst的索引結(jié)構(gòu)和使用布隆過濾器來提高讀取效率,然而,該方法可能會帶來額外的磁盤i/o操作,導(dǎo)致讀取性能較低。技術(shù)實現(xiàn)思路1、基于此,有必要針對上述技術(shù)問題,提供一種能夠提高讀取性能的數(shù)據(jù)讀取方法、裝置、計算機設(shè)備、計算機可讀存儲介質(zhì)和計算機程序產(chǎn)品。2、第一方面,本技術(shù)提供了一種數(shù)據(jù)讀取方法。所述方法包括:3、接收數(shù)據(jù)讀取請求,所述數(shù)據(jù)讀取請求中攜帶目標(biāo)鍵key;4、響應(yīng)于所述數(shù)據(jù)讀取請求,查詢靜態(tài)緩存區(qū)中是否存在所述目標(biāo)key,所述靜態(tài)緩存區(qū)中包括的活躍鍵值對的歷史訪問次數(shù)大于預(yù)設(shè)閾值;5、在所述靜態(tài)緩存區(qū)中存在所述目標(biāo)key的情況下,從所述靜態(tài)緩存區(qū)中包括的活躍鍵值對中獲取所述目標(biāo)key對應(yīng)的目標(biāo)值value。6、在其中一個實施例中,所述靜態(tài)緩存區(qū)為內(nèi)存中與查詢排序字符串表sst相關(guān)聯(lián)的第一存儲空間。7、在其中一個實施例中,所述方法還包括:8、在所述靜態(tài)緩存區(qū)中將所述目標(biāo)key對應(yīng)的key信息中的熱度值累加1。9、在其中一個實施例中,所述方法還包括:10、在所述靜態(tài)緩存區(qū)中不存在所述目標(biāo)key的情況下,查詢所述sst對應(yīng)的磁盤空間中是否存在所述目標(biāo)key;11、若所述磁盤空間中存在所述目標(biāo)key,則從所述磁盤空間中獲取所述目標(biāo)value。12、在其中一個實施例中,所述方法還包括:13、利用預(yù)設(shè)映射方式,確定所述目標(biāo)key映射到預(yù)設(shè)的位圖中的目標(biāo)比特位,所述位圖中的各個比特位用于表征各個key在歷史時間下是否被訪問過;14、根據(jù)所述目標(biāo)比特位的值,確定是否將所述目標(biāo)key寫入熱度暫存區(qū),所述熱度暫存區(qū)為內(nèi)存中與所述靜態(tài)緩存區(qū)中相關(guān)聯(lián)的第二存儲空間,所述熱度暫存區(qū)中的各所述key的訪問次數(shù)大于預(yù)設(shè)閾值。15、在其中一個實施例中,所述利用預(yù)設(shè)映射方式,確定所述目標(biāo)key映射到預(yù)設(shè)的位圖中的目標(biāo)比特位,包括:16、根據(jù)預(yù)設(shè)的劃分策略,將所述目標(biāo)key劃分為至少一個子key;17、按照所述位圖的位數(shù),確定各所述子key的左移位數(shù);18、將左移之后的各子key與所述位圖的長度之間的求余結(jié)果確定為所述目標(biāo)比特位在所述位圖中的位置。19、在其中一個實施例中,所述方法還包括:20、若所述熱度暫存區(qū)中不存在可用存儲空間,則利用所述目標(biāo)key替換所述熱度暫存區(qū)中首次存入的key。21、在其中一個實施例中,所述方法還包括:22、若所述目標(biāo)比特位的值為第一值,則將所述目標(biāo)key存儲在所述熱度暫存區(qū)中,并將所述目標(biāo)比特位的值置為第二值。23、在其中一個實施例中,所述方法還包括:24、若所述目標(biāo)比特位的值為所述第二值,則將所述目標(biāo)比特位的值置為所述第一值。25、在其中一個實施例中,所述方法還包括:26、按照預(yù)設(shè)的時間周期,將所述熱度暫存區(qū)中包括的各個key轉(zhuǎn)移至所述靜態(tài)緩存區(qū);27、從所述磁盤空間中獲取所述熱度暫存區(qū)中包括的各所述key對應(yīng)的value,并將各所述value對應(yīng)于各所述key添加至所述靜態(tài)緩存區(qū)。28、在其中一個實施例中,所述方法還包括:29、在將所述熱度暫存區(qū)中包括的各個key轉(zhuǎn)移至所述靜態(tài)緩存區(qū)的過程中,若所述熱度暫存區(qū)中包括的第一key與所述靜態(tài)緩存區(qū)中包括的第二key重復(fù),則禁止將所述第一key轉(zhuǎn)移至所述靜態(tài)緩存區(qū),并在所述靜態(tài)緩存區(qū)中對所述第二key的熱度值進行累加處理。30、在其中一個實施例中,所述方法還包括:31、按照所述時間周期,將所述靜態(tài)緩存區(qū)中的各key對應(yīng)的熱度值減1,并刪除所述靜態(tài)緩存區(qū)中熱度值為所述第二值的key。32、在其中一個實施例中,所述靜態(tài)緩存區(qū)中包括key存儲區(qū)和value存儲區(qū),所述從所述靜態(tài)緩存區(qū)中包括的活躍鍵值對中獲取所述目標(biāo)key對應(yīng)的目標(biāo)值value,包括:33、從所述key存儲區(qū)中獲取所述目標(biāo)key對應(yīng)的key信息;34、根據(jù)所述key信息,確定所述目標(biāo)key對應(yīng)的所述目標(biāo)value的存儲位置;35、在所述value存儲區(qū)中,從所述目標(biāo)value的存儲位置中獲取所述目標(biāo)value。36、第二方面,本技術(shù)還提供了一種數(shù)據(jù)讀取裝置。所述裝置包括:37、接收模塊,用于接收數(shù)據(jù)讀取請求,所述數(shù)據(jù)讀取請求中攜帶目標(biāo)鍵key;38、查詢模塊,用于響應(yīng)于所述數(shù)據(jù)讀取請求,查詢靜態(tài)緩存區(qū)中是否存在所述目標(biāo)key,所述靜態(tài)緩存區(qū)中包括的活躍鍵值key-value對的歷史訪問次數(shù)大于第一閾值;39、獲取模塊,用于在所述靜態(tài)緩存區(qū)中存在所述目標(biāo)key的情況下,從所述靜態(tài)緩存區(qū)中包括的活躍鍵值對中獲取所述目標(biāo)key對應(yīng)的目標(biāo)值value。40、第三方面,本技術(shù)還提供了一種計算機設(shè)備,包括存儲器和處理器,所述存儲器存儲有計算機程序,所述處理器執(zhí)行所述計算機程序時實現(xiàn)如上述第一方面所述的方法的步驟。41、第四方面,本技術(shù)還提供了一種計算機可讀存儲介質(zhì)。所述計算機可讀存儲介質(zhì),其上存儲有計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)如上述第一方面所述的方法的步驟。42、第五方面,本技術(shù)還提供了一種計算機程序產(chǎn)品。所述計算機程序產(chǎn)品,包括計算機程序,該計算機程序被處理器執(zhí)行時實現(xiàn)如上述第一方面所述的方法的步驟。43、上述數(shù)據(jù)讀取方法、裝置、計算機設(shè)備、計算機可讀存儲介質(zhì)和計算機程序產(chǎn)品,服務(wù)器接收攜帶目標(biāo)鍵key的數(shù)據(jù)讀取請求,接著,響應(yīng)于數(shù)據(jù)讀取請求,查詢靜態(tài)緩存區(qū)中是否存在目標(biāo)key,而后,在靜態(tài)緩存區(qū)中存在目標(biāo)key的情況下,從靜態(tài)緩存區(qū)中包括的活躍鍵值對中獲取目標(biāo)key對應(yīng)的目標(biāo)值value,在該數(shù)據(jù)讀取方法中,由于靜態(tài)緩存區(qū)中包括的活躍鍵值對的歷史訪問次數(shù)大于預(yù)設(shè)閾值,若目標(biāo)key的歷史訪問次數(shù)大于預(yù)設(shè)閾值,則可以快速地在靜態(tài)緩存區(qū)中找到目標(biāo)key以及目標(biāo)key對應(yīng)的活躍鍵值對,而不必在整個磁盤空間中查找目標(biāo)key對應(yīng)的活躍鍵值對,進而能夠提高數(shù)據(jù)讀取的讀取性能。當(dāng)前第1頁12當(dāng)前第1頁12