本發(fā)明涉及區(qū)塊鏈,尤其涉及一種區(qū)塊鏈數(shù)據(jù)存儲和查詢方法、裝置、設(shè)備及介質(zhì)。
背景技術(shù):
1、在區(qū)塊鏈系統(tǒng)中,高效的數(shù)據(jù)存儲是一個重要的研究方向?,F(xiàn)有多數(shù)區(qū)塊鏈系統(tǒng)采用kv(key-value)型數(shù)據(jù)庫(如leveldb、rocksdb)以提升系統(tǒng)性能及響應(yīng)速度。然而,隨著鏈上交易和區(qū)塊的不斷增加,數(shù)據(jù)庫中存儲的數(shù)據(jù)量也隨之增多,導(dǎo)致區(qū)塊鏈節(jié)點性能大幅下降。如何避免日益增長的區(qū)塊數(shù)據(jù)導(dǎo)致數(shù)據(jù)庫性能下降是亟需解決的問題。
技術(shù)實現(xiàn)思路
1、本發(fā)明提供一種區(qū)塊鏈數(shù)據(jù)存儲和查詢方法、裝置、設(shè)備及介質(zhì),用以解決相關(guān)技術(shù)中數(shù)據(jù)庫性能下降拖慢區(qū)塊鏈節(jié)點的缺陷。
2、本發(fā)明提供一種區(qū)塊鏈數(shù)據(jù)存儲方法,包括如下步驟。
3、獲取區(qū)塊鏈上待存儲的區(qū)塊數(shù)據(jù);
4、將所述區(qū)塊數(shù)據(jù)存入所述區(qū)塊鏈之外的存儲空間;
5、基于所述區(qū)塊數(shù)據(jù)在所述存儲空間上的位置,建立所述區(qū)塊數(shù)據(jù)的區(qū)塊索引,將所述區(qū)塊索引存入所述區(qū)塊鏈上的區(qū)塊數(shù)據(jù)庫。
6、根據(jù)本發(fā)明提供的區(qū)塊鏈數(shù)據(jù)存儲方法,所述將所述區(qū)塊數(shù)據(jù)存入所述區(qū)塊鏈之外的存儲空間,包括:
7、將所述區(qū)塊數(shù)據(jù)寫入所述存儲空間中存儲的區(qū)塊文件;
8、所述區(qū)塊數(shù)據(jù)在所述存儲空間上的位置包括所述區(qū)塊文件的文件名以及所述區(qū)塊數(shù)據(jù)在所述區(qū)塊文件中的偏移量。
9、根據(jù)本發(fā)明提供的區(qū)塊鏈數(shù)據(jù)存儲方法,所述基于所述區(qū)塊數(shù)據(jù)在所述存儲空間上的位置,建立所述區(qū)塊數(shù)據(jù)的區(qū)塊索引,包括:
10、基于所述區(qū)塊數(shù)據(jù)的區(qū)塊標(biāo)識,以及所述區(qū)塊數(shù)據(jù)所寫入的區(qū)塊文件的文件名、所述區(qū)塊數(shù)據(jù)在所述區(qū)塊文件中的偏移量,建立所述區(qū)塊數(shù)據(jù)的區(qū)塊索引。
11、根據(jù)本發(fā)明提供的區(qū)塊鏈數(shù)據(jù)存儲方法,還包括:
12、基于所述區(qū)塊數(shù)據(jù)的交易標(biāo)識,以及所述區(qū)塊數(shù)據(jù)所寫入的區(qū)塊文本的文件名、所述區(qū)塊數(shù)據(jù)中的交易數(shù)據(jù)和/或交易回執(zhí)數(shù)據(jù)在所述區(qū)塊文件中的偏移量,建立所述區(qū)塊數(shù)據(jù)的交易索引;
13、將所述交易索引存入所述區(qū)塊數(shù)據(jù)庫。
14、根據(jù)本發(fā)明提供的區(qū)塊鏈數(shù)據(jù)存儲方法,還包括:
15、獲取區(qū)塊鏈上待存儲的狀態(tài)數(shù)據(jù),將所述狀態(tài)數(shù)據(jù)存入所述區(qū)塊鏈上的狀態(tài)數(shù)據(jù)庫。
16、根據(jù)本發(fā)明提供的區(qū)塊鏈數(shù)據(jù)存儲方法,還包括:
17、在所述區(qū)塊數(shù)據(jù)庫和/或所述狀態(tài)數(shù)據(jù)庫中最新的區(qū)塊標(biāo)識與所述區(qū)塊鏈的二進制日志中最新的區(qū)塊標(biāo)識不同的情況下,從所述二進制日志中確定待恢復(fù)的區(qū)塊數(shù)據(jù)和/或待恢復(fù)的狀態(tài)數(shù)據(jù);
18、將所述待恢復(fù)的區(qū)塊數(shù)據(jù)作為待存儲的區(qū)塊數(shù)據(jù),和/或,將所述待恢復(fù)的狀態(tài)數(shù)據(jù)作為待存儲的狀態(tài)數(shù)據(jù)。
19、本發(fā)明提供一種區(qū)塊鏈數(shù)據(jù)查詢方法,包括如下步驟。
20、確定待查詢的區(qū)塊數(shù)據(jù)的區(qū)塊標(biāo)識;
21、從區(qū)塊鏈上的區(qū)塊數(shù)據(jù)庫中,確定與所述區(qū)塊標(biāo)識對應(yīng)的區(qū)塊索引,所述區(qū)塊索引基于所述區(qū)塊數(shù)據(jù)在所述區(qū)塊鏈之外的存儲空間上的位置確定;
22、基于所述區(qū)塊索引,從所述存儲空間處查詢所述區(qū)塊數(shù)據(jù)。
23、本發(fā)明還提供一種區(qū)塊鏈數(shù)據(jù)存儲裝置,包括:
24、數(shù)據(jù)獲取單元,用于獲取區(qū)塊鏈上待存儲的區(qū)塊數(shù)據(jù);
25、數(shù)據(jù)存儲單元,用于將所述區(qū)塊數(shù)據(jù)存入所述區(qū)塊鏈之外的存儲空間;
26、索引存儲單元,用于基于所述區(qū)塊數(shù)據(jù)在所述存儲空間上的位置,建立所述區(qū)塊數(shù)據(jù)的區(qū)塊索引,將所述區(qū)塊索引存入所述區(qū)塊鏈上的區(qū)塊數(shù)據(jù)庫。
27、本發(fā)明還提供一種區(qū)塊鏈數(shù)據(jù)查詢裝置,包括:
28、標(biāo)識確定單元,用于確定待查詢的區(qū)塊數(shù)據(jù)的區(qū)塊標(biāo)識;
29、索引確定單元,用于從區(qū)塊鏈上的區(qū)塊數(shù)據(jù)庫中,確定與所述區(qū)塊標(biāo)識對應(yīng)的區(qū)塊索引,所述區(qū)塊索引基于所述區(qū)塊數(shù)據(jù)在所述區(qū)塊鏈之外的存儲空間上的位置確定;
30、數(shù)據(jù)查詢單元,用于基于所述區(qū)塊索引,從所述存儲空間處查詢所述區(qū)塊數(shù)據(jù)。
31、本發(fā)明還提供一種電子設(shè)備,包括存儲器、處理器及存儲在存儲器上并可在處理器上運行的計算機程序,所述處理器執(zhí)行所述程序時實現(xiàn)如上述任一種所述區(qū)塊鏈數(shù)據(jù)存儲及查詢方法。
32、本發(fā)明還提供一種非暫態(tài)計算機可讀存儲介質(zhì),其上存儲有計算機程序,該計算機程序被處理器執(zhí)行時實現(xiàn)如上述任一種所述區(qū)塊鏈數(shù)據(jù)存儲及查詢方法。
33、本發(fā)明還提供一種計算機程序產(chǎn)品,包括計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)如上述任一種所述區(qū)塊鏈數(shù)據(jù)存儲及查詢方法。
34、本發(fā)明提供的區(qū)塊鏈數(shù)據(jù)存儲及查詢方法、裝置、設(shè)備及介質(zhì),通過將區(qū)塊數(shù)據(jù)從區(qū)塊鏈數(shù)據(jù)庫中分離出來,以文件形式進行存儲,可以緩解數(shù)據(jù)庫數(shù)據(jù)膨脹的問題,減少數(shù)據(jù)庫負(fù)載,從而提升區(qū)塊鏈節(jié)點的響應(yīng)速度和整體性能。同時,索引信息的建立能夠幫助實現(xiàn)快速的數(shù)據(jù)檢索,大幅縮短查詢響應(yīng)時間。通過精確的區(qū)塊索引,能夠快速定位到具體的存儲位置,直接訪問所需的區(qū)塊數(shù)據(jù),顯著減少了查詢時間。使用區(qū)塊索引進行數(shù)據(jù)查詢可以在一定程度上隔離數(shù)據(jù),減少直接暴露存儲結(jié)構(gòu)的風(fēng)險,從而提高數(shù)據(jù)安全性。
1.一種區(qū)塊鏈數(shù)據(jù)存儲方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的區(qū)塊鏈數(shù)據(jù)存儲方法,其特征在于,所述將所述區(qū)塊數(shù)據(jù)存入所述區(qū)塊鏈之外的存儲空間,包括:
3.根據(jù)權(quán)利要求2所述的區(qū)塊鏈數(shù)據(jù)存儲方法,其特征在于,所述基于所述區(qū)塊數(shù)據(jù)在所述存儲空間上的位置,建立所述區(qū)塊數(shù)據(jù)的區(qū)塊索引,包括:
4.根據(jù)權(quán)利要求3所述的區(qū)塊鏈數(shù)據(jù)存儲方法,其特征在于,還包括:
5.根據(jù)權(quán)利要求1至4中任一項所述的區(qū)塊數(shù)據(jù)存儲方法,其特征在于,還包括:
6.根據(jù)權(quán)利要求5所述的區(qū)塊鏈數(shù)據(jù)存儲方法,其特征在于,還包括:
7.一種區(qū)塊鏈數(shù)據(jù)查詢方法,其特征在于,包括:
8.一種區(qū)塊鏈數(shù)據(jù)存儲裝置,其特征在于,包括:
9.一種區(qū)塊鏈數(shù)據(jù)查詢裝置,其特征在于,包括:
10.一種電子設(shè)備,包括存儲器、處理器及存儲在所述存儲器上并可在所述處理器上運行的計算機程序,其特征在于,所述處理器執(zhí)行所述程序時實現(xiàn)如權(quán)利要求1至6任一項所述區(qū)塊鏈數(shù)據(jù)存儲方法、或如權(quán)利要求7所述的區(qū)塊鏈數(shù)據(jù)查詢方法。
11.一種非暫態(tài)計算機可讀存儲介質(zhì),其上存儲有計算機程序,其特征在于,所述計算機程序被處理器執(zhí)行時實現(xiàn)如權(quán)利要求1至6任一項所述區(qū)塊鏈數(shù)據(jù)存儲方法、或如權(quán)利要求7所述的區(qū)塊鏈數(shù)據(jù)查詢方法。
12.一種計算機程序產(chǎn)品,包括計算機程序,其特征在于,所述計算機程序被處理器執(zhí)行時實現(xiàn)如權(quán)利要求1至6任一項所述區(qū)塊鏈數(shù)據(jù)存儲方法、或如權(quán)利要求7所述的區(qū)塊鏈數(shù)據(jù)查詢方法。