本申請涉及分布式存儲,特別是涉及一種數(shù)據(jù)存儲方法、裝置、設(shè)備及介質(zhì)。
背景技術(shù):
1、分布式存儲系統(tǒng)中的元數(shù)據(jù)引擎負(fù)責(zé)保存和管理描述數(shù)據(jù)信息的數(shù)據(jù),其性能對系統(tǒng)整體性能有重要影響。元數(shù)據(jù)主要為索引而存在,需要頻繁更新以反映數(shù)據(jù)變動,因此對性能瓶頸更敏感。
2、目前,元數(shù)據(jù)存儲主要采用易失性內(nèi)存緩存加硬盤的方式,內(nèi)存提供高性能查詢和更新,硬盤用于持久化數(shù)據(jù)。然而,內(nèi)存存在掉電丟失數(shù)據(jù)的風(fēng)險,硬盤則存在性能差距過大的缺點(diǎn),這使得元數(shù)據(jù)引擎常成為系統(tǒng)的性能瓶頸。
3、鑒于上述問題,如何解決當(dāng)前的元數(shù)據(jù)存儲方式在主機(jī)掉電后會發(fā)生數(shù)據(jù)丟失,且讀寫性能較差,是該領(lǐng)域技術(shù)人員亟待解決的問題。
技術(shù)實(shí)現(xiàn)思路
1、本申請的目的是提供一種數(shù)據(jù)存儲方法、裝置、設(shè)備及介質(zhì),以解決當(dāng)前的元數(shù)據(jù)存儲方式在主機(jī)掉電后會發(fā)生數(shù)據(jù)丟失,且讀寫性能較差的問題。
2、為解決上述技術(shù)問題,本申請?zhí)峁┮环N數(shù)據(jù)存儲方法,包括:
3、基于系統(tǒng)內(nèi)存設(shè)置初始緩存,并通過最近最少使用算法管理所述初始緩存中的目標(biāo)索引條目;
4、設(shè)置基于b+樹數(shù)據(jù)結(jié)構(gòu)的非易失性內(nèi)存,并通過所述非易失性內(nèi)存存儲全部的索引條目;其中,所述目標(biāo)索引條目是全部的所述索引條目的子集;
5、當(dāng)系統(tǒng)掉電后重新上電時,根據(jù)所述非易失性內(nèi)存中全部的所述索引條目確定所述目標(biāo)索引條目;
6、將所述目標(biāo)索引條目重新加載至所述系統(tǒng)內(nèi)存的初始緩存中。
7、一方面,所述基于系統(tǒng)內(nèi)存設(shè)置初始緩存,并通過最近最少使用算法管理所述初始緩存中的目標(biāo)索引條目,包括:
8、基于系統(tǒng)內(nèi)存設(shè)置所述初始緩存的容量大小,并將所述目標(biāo)索引條目加載至所述初始緩存中;
9、監(jiān)測對所述初始緩存中的所述目標(biāo)索引條目的查詢指令;
10、當(dāng)接收到所述查詢指令時,判斷所述查詢指令是否命中所述初始緩存中的所述目標(biāo)索引條目;
11、若確認(rèn)所述查詢指令命中所述初始緩存中的所述目標(biāo)索引條目,則更新所述目標(biāo)索引條目的訪問時間戳;
12、將所述目標(biāo)索引條目移動至最近最少使用鏈表的頭部;
13、若確認(rèn)所述查詢指令未命中所述初始緩存中的所述目標(biāo)索引條目,則從磁盤中讀取所述查詢指令對應(yīng)的所述索引條目并將其加入所述初始緩存;
14、其中,所述磁盤包括硬盤和所述非易失性內(nèi)存。
15、另一方面,還包括:
16、監(jiān)測所述初始緩存的緩存大小,判斷所述初始緩存的緩存大小是否達(dá)到設(shè)置的容量大?。?/p>
17、若是,則根據(jù)最近最少使用原則,將所述最近最少使用鏈表的全部的所述目標(biāo)索引條中最久未訪問的所述目標(biāo)索引條目進(jìn)行刪除。
18、另一方面,還包括:
19、根據(jù)預(yù)設(shè)周期獲取所述初始緩存的緩存命中率,并獲取磁盤輸入輸出次數(shù);
20、當(dāng)所述初始緩存的所述緩存命中率低于第一閾值,且所述磁盤輸入輸出次數(shù)不低于第二閾值時,基于系統(tǒng)內(nèi)存增加所述初始緩存的容量大??;
21、當(dāng)所述初始緩存的所述緩存命中率不低于第一閾值,且所述磁盤輸入輸出次數(shù)低于第二閾值時,基于系統(tǒng)內(nèi)存減小所述初始緩存的容量大小。
22、另一方面,還包括:
23、監(jiān)測系統(tǒng)中的待存儲數(shù)據(jù),判斷所述待存儲數(shù)據(jù)的大小是否不大于第三閾值;
24、若確認(rèn)所述待存儲數(shù)據(jù)的大小不大于第三閾值,則通過持久性內(nèi)存開發(fā)工具包技術(shù)將所述待存儲數(shù)據(jù)存儲至所述非易失性內(nèi)存中;
25、若確認(rèn)所述待存儲數(shù)據(jù)的大小大于第三閾值,則將所述待存儲數(shù)據(jù)存儲至硬盤中。
26、另一方面,所述通過持久性內(nèi)存開發(fā)工具包技術(shù)將所述待存儲數(shù)據(jù)存儲至所述非易失性內(nèi)存中,包括:
27、獲取所述待存儲數(shù)據(jù)的大小;
28、根據(jù)所述待存儲數(shù)據(jù)的大小在所述非易失性內(nèi)存中分配存儲空間;其中,所述存儲空間的大小與所述待存儲數(shù)據(jù)的大小相等,或所述存儲空間的大小為所述待存儲數(shù)據(jù)的大小的整數(shù)倍;
29、將所述待存儲數(shù)據(jù)存儲至所述存儲空間中。
30、另一方面,在所述通過持久性內(nèi)存開發(fā)工具包技術(shù)將所述待存儲數(shù)據(jù)存儲至所述非易失性內(nèi)存中之后,還包括:
31、當(dāng)接收到對所述非易失性內(nèi)存中目標(biāo)數(shù)據(jù)的刪除指令時,判斷當(dāng)前是否存在任務(wù)重用所述目標(biāo)數(shù)據(jù);
32、若是,則等待所述任務(wù)重用完成后將所述目標(biāo)數(shù)據(jù)刪除。
33、為解決上述技術(shù)問題,本申請還提供一種數(shù)據(jù)存儲裝置,包括:
34、管理模塊,用于基于系統(tǒng)內(nèi)存設(shè)置初始緩存,并通過最近最少使用算法管理所述初始緩存中的目標(biāo)索引條目;
35、存儲模塊,用于設(shè)置基于b+樹數(shù)據(jù)結(jié)構(gòu)的非易失性內(nèi)存,并通過所述非易失性內(nèi)存存儲全部的索引條目;其中,所述目標(biāo)索引條目是全部的所述索引條目的子集;
36、確定模塊,用于當(dāng)系統(tǒng)掉電后重新上電時,根據(jù)所述非易失性內(nèi)存中全部的所述索引條目確定所述目標(biāo)索引條目;
37、加載模塊,用于將所述目標(biāo)索引條目重新加載至所述系統(tǒng)內(nèi)存的初始緩存中。
38、為解決上述技術(shù)問題,本申請還提供一種數(shù)據(jù)存儲設(shè)備,包括:
39、存儲器,用于存儲計(jì)算機(jī)程序;
40、處理器,用于執(zhí)行所述計(jì)算機(jī)程序時實(shí)現(xiàn)上述的數(shù)據(jù)存儲方法的步驟。
41、為解決上述技術(shù)問題,本申請還提供一種計(jì)算機(jī)可讀存儲介質(zhì),所述計(jì)算機(jī)可讀存儲介質(zhì)上存儲有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時實(shí)現(xiàn)上述的數(shù)據(jù)存儲方法的步驟。
42、本申請所提供的數(shù)據(jù)存儲方法,基于系統(tǒng)內(nèi)存設(shè)置初始緩存,并通過最近最少使用算法管理初始緩存中的目標(biāo)索引條目;設(shè)置基于b+樹數(shù)據(jù)結(jié)構(gòu)的非易失性內(nèi)存,并通過非易失性內(nèi)存存儲全部的索引條目;其中,目標(biāo)索引條目是全部的索引條目的子集;當(dāng)系統(tǒng)掉電后重新上電時,根據(jù)非易失性內(nèi)存中全部的索引條目確定目標(biāo)索引條目;將目標(biāo)索引條目重新加載至系統(tǒng)內(nèi)存的初始緩存中。
43、本申請的有益效果在于,利用非易失性內(nèi)存的非易失特性存儲全部的索引條目;當(dāng)系統(tǒng)掉電后重新上電時,根據(jù)非易失性內(nèi)存中全部的索引條目將目標(biāo)索引條目重新加載至系統(tǒng)內(nèi)存的初始緩存中,有效避免了元數(shù)據(jù)丟失,保證了元數(shù)據(jù)的完整性。另一方面,方案采用最近最少使用算法管理初始緩存中的目標(biāo)索引條目,同時為非易失性內(nèi)存設(shè)置b+樹數(shù)據(jù)結(jié)構(gòu),能夠有效地提高索引條目的訪問速度,大幅減小了元數(shù)據(jù)的讀寫延遲,使得系統(tǒng)能夠更快地響應(yīng)用戶的操作請求。
44、此外,本申請還提供了一種數(shù)據(jù)存儲裝置、設(shè)備及介質(zhì),效果同上。
1.一種數(shù)據(jù)存儲方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)存儲方法,其特征在于,所述基于系統(tǒng)內(nèi)存設(shè)置初始緩存,并通過最近最少使用算法管理所述初始緩存中的目標(biāo)索引條目,包括:
3.根據(jù)權(quán)利要求2所述的數(shù)據(jù)存儲方法,其特征在于,還包括:
4.根據(jù)權(quán)利要求2所述的數(shù)據(jù)存儲方法,其特征在于,還包括:
5.根據(jù)權(quán)利要求1所述的數(shù)據(jù)存儲方法,其特征在于,還包括:
6.根據(jù)權(quán)利要求5所述的數(shù)據(jù)存儲方法,其特征在于,所述通過持久性內(nèi)存開發(fā)工具包技術(shù)將所述待存儲數(shù)據(jù)存儲至所述非易失性內(nèi)存中,包括:
7.根據(jù)權(quán)利要求5所述的數(shù)據(jù)存儲方法,其特征在于,在所述通過持久性內(nèi)存開發(fā)工具包技術(shù)將所述待存儲數(shù)據(jù)存儲至所述非易失性內(nèi)存中之后,還包括:
8.一種數(shù)據(jù)存儲裝置,其特征在于,包括:
9.一種數(shù)據(jù)存儲設(shè)備,其特征在于,包括:
10.一種計(jì)算機(jī)可讀存儲介質(zhì),其特征在于,所述計(jì)算機(jī)可讀存儲介質(zhì)上存儲有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時實(shí)現(xiàn)如權(quán)利要求1至7任一項(xiàng)所述的數(shù)據(jù)存儲方法的步驟。