本發(fā)明屬于大數(shù)據(jù),涉及一種基于rocksdb的ttl控制方法、系統(tǒng)、設(shè)備及介質(zhì)。
背景技術(shù):
1、隨著大數(shù)據(jù)技術(shù)的迅猛發(fā)展,各種應(yīng)用場景對數(shù)據(jù)的管理提出了更高的要求,尤其是在需要對數(shù)據(jù)的生命周期進(jìn)行精確控制的場合,如緩存系統(tǒng)、消息隊(duì)列、會話管理等。ttl(time-to-live,生存時(shí)間)機(jī)制是管理這些時(shí)效性數(shù)據(jù)的常用方法,它允許數(shù)據(jù)在指定時(shí)間后自動過期并從存儲系統(tǒng)中刪除,從而減少不必要的數(shù)據(jù)存儲和檢索負(fù)擔(dān)。
2、rocksdb作為一種高效的鍵值存儲引擎,被廣泛應(yīng)用于需要處理大量數(shù)據(jù)的場景中。然而,現(xiàn)有的rocksdb在ttl控制方面存在一些局限性。首先,rocksdb無法精確控制每個(gè)鍵值對的過期時(shí)間,而是只能對整個(gè)列族(column?family)中的所有鍵值對設(shè)置相同的ttl。這意味著在一個(gè)列族中,所有的鍵值對共享相同的過期策略,無法針對單個(gè)鍵值對的具體需求進(jìn)行靈活處理。這種局限性在需要處理具有不同生命周期的數(shù)據(jù)時(shí),顯得尤為不便。
3、其次,rocksdb對于每個(gè)鍵值對的過期并沒有實(shí)現(xiàn)即時(shí)刪除。盡管rocksdb支持設(shè)置全局ttl,但它并不會在鍵值對過期時(shí)立即清除數(shù)據(jù),而是依賴于后續(xù)的compaction過程來進(jìn)行清理。因此,即使某個(gè)鍵值對已經(jīng)過期,用戶在執(zhí)行查詢時(shí)仍然可能讀取到該過期的數(shù)據(jù)。對于需要確保數(shù)據(jù)準(zhǔn)確性的場景來說,這無疑增加了系統(tǒng)復(fù)雜度和數(shù)據(jù)處理的難度。
4、此外,現(xiàn)有的rocksdb在ttl數(shù)據(jù)的讀取過程中也沒有提供屏蔽過期數(shù)據(jù)的機(jī)制,這意味著即使數(shù)據(jù)已經(jīng)不再有效,用戶在查詢時(shí)依然可能獲得這些過期信息,進(jìn)而影響應(yīng)用的正確性和可靠性。這種不便不僅增加了開發(fā)者的額外處理成本,也可能導(dǎo)致一些意想不到的錯(cuò)誤和問題。
5、因此,現(xiàn)有技術(shù)的不足之處在于rocksdb無法靈活、精確地控制數(shù)據(jù)的ttl,且過期數(shù)據(jù)的處理不夠及時(shí),影響了數(shù)據(jù)管理的效率和系統(tǒng)的可靠性。為了解決這些問題,亟需一種新的機(jī)制來實(shí)現(xiàn)對rocksdb中每個(gè)鍵值對的精確ttl控制,并在數(shù)據(jù)過期后立即對其進(jìn)行處理,從而優(yōu)化存儲系統(tǒng)的性能和使用體驗(yàn)。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明的目的在于克服上述現(xiàn)有技術(shù)的缺點(diǎn),提供了一種基于rocksdb的ttl控制方法、系統(tǒng)、設(shè)備及介質(zhì),該方法、系統(tǒng)、設(shè)備及介質(zhì)能夠靈活、精確地控制數(shù)據(jù)的ttl,同時(shí)能夠及時(shí)處理過期數(shù)據(jù)。
2、為達(dá)到上述目的,本發(fā)明公開了一種基于rocksdb的ttl控制方法,包括:
3、在各鍵值對的value部分前插入時(shí)間戳;
4、在執(zhí)行put操作時(shí),根據(jù)提供的預(yù)設(shè)過期時(shí)間計(jì)算ttl,并將所述計(jì)算得到的ttl存儲到value的前8個(gè)字節(jié)中;
5、在讀取數(shù)據(jù)時(shí),先解析value中的時(shí)間戳,并將解析得到的時(shí)間戳與當(dāng)前時(shí)間進(jìn)行比較,當(dāng)解析出來的時(shí)間戳早于當(dāng)前時(shí)間,認(rèn)為讀取的數(shù)據(jù)已經(jīng)過期,則將讀取的數(shù)據(jù)進(jìn)行異步刪除,當(dāng)解析的時(shí)間戳晚于當(dāng)前時(shí)間,則輸出讀取的數(shù)據(jù)。
6、作為本發(fā)明所述基于rocksdb的ttl控制方法的進(jìn)一步改進(jìn)在于:
7、進(jìn)一步的,所述時(shí)間戳為8個(gè)字節(jié),所述時(shí)間戳用于標(biāo)記該數(shù)據(jù)的過期時(shí)間。
8、進(jìn)一步的,在執(zhí)行put操作時(shí),根據(jù)提供的預(yù)設(shè)過期時(shí)間計(jì)算ttl,并將所述計(jì)算得到的ttl存儲到value的前8個(gè)字節(jié)中的過程中,當(dāng)未提供預(yù)設(shè)過期時(shí)間時(shí)或者所述提供的所述預(yù)設(shè)過期時(shí)間小于等于0,則將long型的最大值存儲到value的前8個(gè)字節(jié)中,表示該數(shù)據(jù)永不過期。
9、進(jìn)一步的,通過compaction?filter,將讀取的數(shù)據(jù)進(jìn)行異步刪除,其中,所述compaction?filter,用于在rocksdb的compaction過程中檢查并刪除過期的數(shù)據(jù)。
10、本發(fā)明公開了一種基于rocksdb的ttl控制系統(tǒng),其特征在于,包括:
11、插入模塊,用于在各鍵值對的value部分前插入時(shí)間戳;
12、計(jì)算模塊,用于在執(zhí)行put操作時(shí),根據(jù)提供的預(yù)設(shè)過期時(shí)間計(jì)算ttl,并將所述計(jì)算得到的ttl存儲到value的前8個(gè)字節(jié)中;
13、讀取模塊,用于在讀取數(shù)據(jù)時(shí),先解析value中的時(shí)間戳,并將解析得到的時(shí)間戳與當(dāng)前時(shí)間進(jìn)行比較,當(dāng)解析出來的時(shí)間戳早于當(dāng)前時(shí)間,認(rèn)為讀取的數(shù)據(jù)已經(jīng)過期,則將讀取的數(shù)據(jù)進(jìn)行異步刪除,當(dāng)解析的時(shí)間戳晚于當(dāng)前時(shí)間,則輸出讀取的數(shù)據(jù)。
14、作為本發(fā)明所述基于rocksdb的ttl控制系統(tǒng)的進(jìn)一步改進(jìn)在于:
15、進(jìn)一步的,所述時(shí)間戳為8個(gè)字節(jié),所述時(shí)間戳用于標(biāo)記該數(shù)據(jù)的過期時(shí)間。
16、進(jìn)一步的,在執(zhí)行put操作時(shí),根據(jù)提供的預(yù)設(shè)過期時(shí)間計(jì)算ttl,并將所述計(jì)算得到的ttl存儲到value的前8個(gè)字節(jié)中的過程中,當(dāng)未提供預(yù)設(shè)過期時(shí)間時(shí)或者所述提供的所述預(yù)設(shè)過期時(shí)間小于等于0,則將long型的最大值存儲到value的前8個(gè)字節(jié)中,表示該數(shù)據(jù)永不過期。
17、進(jìn)一步的,通過compaction?filter,將讀取的數(shù)據(jù)進(jìn)行異步刪除,其中,所述compaction?filter,用于在rocksdb的compaction過程中檢查并刪除過期的數(shù)據(jù)。
18、本發(fā)明公開了一種計(jì)算機(jī)設(shè)備,包括存儲器、處理器以及存儲在所述存儲器中并可在所述處理器上運(yùn)行的計(jì)算機(jī)程序,所述處理器執(zhí)行所述計(jì)算機(jī)程序時(shí)實(shí)現(xiàn)所述基于rocksdb的ttl控制方法的步驟。
19、本發(fā)明公開了一種計(jì)算機(jī)可讀存儲介質(zhì),所述計(jì)算機(jī)可讀存儲介質(zhì)存儲有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)所述基于rocksdb的ttl控制方法的步驟。
20、本發(fā)明具有以下有益效果:
21、本發(fā)明所述的基于rocksdb的ttl控制方法、系統(tǒng)、設(shè)備及介質(zhì)在具體操作時(shí),通過在每個(gè)鍵值對的value部分前面插入時(shí)間戳,能夠?qū)崿F(xiàn)對每個(gè)鍵值對的獨(dú)立ttl控制,使得不同的數(shù)據(jù)條目可以根據(jù)各自的需求設(shè)置不同的過期時(shí)間,相比于傳統(tǒng)的全局ttl策略,這種方法更加靈活,能夠適應(yīng)復(fù)雜的數(shù)據(jù)管理需求。同時(shí)對已經(jīng)過期的數(shù)據(jù)進(jìn)行異步刪除,從而及時(shí)處理過期數(shù)據(jù)。
1.一種基于rocksdb的ttl控制方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的基于rocksdb的ttl控制方法,其特征在于,所述時(shí)間戳為8個(gè)字節(jié),所述時(shí)間戳用于標(biāo)記該數(shù)據(jù)的過期時(shí)間。
3.根據(jù)權(quán)利要求1所述的基于rocksdb的ttl控制方法,其特征在于,在執(zhí)行put操作時(shí),根據(jù)提供的預(yù)設(shè)過期時(shí)間計(jì)算ttl,并將所述計(jì)算得到的ttl存儲到value的前8個(gè)字節(jié)中的過程中,當(dāng)未提供預(yù)設(shè)過期時(shí)間時(shí)或者所述提供的所述預(yù)設(shè)過期時(shí)間小于等于0,則將long型的最大值存儲到value的前8個(gè)字節(jié)中,表示該數(shù)據(jù)永不過期。
4.根據(jù)權(quán)利要求1所述的基于rocksdb的ttl控制方法,其特征在于,通過compactionfilter,將讀取的數(shù)據(jù)進(jìn)行異步刪除,其中,所述compaction?filter,用于在rocksdb的compaction過程中檢查并刪除過期的數(shù)據(jù)。
5.一種基于rocksdb的ttl控制系統(tǒng),其特征在于,包括:
6.根據(jù)權(quán)利要求4所述的基于rocksdb的ttl控制系統(tǒng),其特征在于,所述時(shí)間戳為8個(gè)字節(jié),所述時(shí)間戳用于標(biāo)記該數(shù)據(jù)的過期時(shí)間。
7.根據(jù)權(quán)利要求4所述的基于rocksdb的ttl控制系統(tǒng),其特征在于,在執(zhí)行put操作時(shí),根據(jù)提供的預(yù)設(shè)過期時(shí)間計(jì)算ttl,并將所述計(jì)算得到的ttl存儲到value的前8個(gè)字節(jié)中的過程中,當(dāng)未提供預(yù)設(shè)過期時(shí)間時(shí)或者所述提供的所述預(yù)設(shè)過期時(shí)間小于等于0,則將long型的最大值存儲到value的前8個(gè)字節(jié)中,表示該數(shù)據(jù)永不過期。
8.根據(jù)權(quán)利要求4所述的基于rocksdb的ttl控制系統(tǒng),其特征在于,通過compactionfilter,將讀取的數(shù)據(jù)進(jìn)行異步刪除,其中,所述compaction?filter,用于在rocksdb的compaction過程中檢查并刪除過期的數(shù)據(jù)。
9.一種計(jì)算機(jī)設(shè)備,包括存儲器、處理器以及存儲在所述存儲器中并可在所述處理器上運(yùn)行的計(jì)算機(jī)程序,其特征在于,所述處理器執(zhí)行所述計(jì)算機(jī)程序時(shí)實(shí)現(xiàn)如權(quán)利要求1-4任一項(xiàng)所述基于rocksdb的ttl控制方法的步驟。
10.一種計(jì)算機(jī)可讀存儲介質(zhì),所述計(jì)算機(jī)可讀存儲介質(zhì)存儲有計(jì)算機(jī)程序,其特征在于,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如權(quán)利要求1-4任一項(xiàng)所述基于rocksdb的ttl控制方法的步驟。