本技術(shù)涉及計(jì)算機(jī)領(lǐng)域,具體涉及一種基于區(qū)塊鏈的數(shù)據(jù)處理方法、裝置、設(shè)備和介質(zhì)。
背景技術(shù):
1、區(qū)塊鏈(block?chain)是一種去中心化、分布式的賬本技術(shù),通過鏈?zhǔn)芥溄拥膮^(qū)塊記錄并共識(shí)機(jī)制確保交易的安全性和可追溯性。
2、區(qū)塊生成的過程中,會(huì)產(chǎn)生大量的交易信息,每個(gè)交易信息都可以指示交易金額或資產(chǎn)、交易發(fā)送方、交易接收方和簽名等數(shù)據(jù),這樣就會(huì)產(chǎn)生一些用戶狀態(tài)信息的變更,例如用戶的余額、資產(chǎn)等,而這些用戶狀態(tài)信息可以根據(jù)交易信息所生成的操作記錄來進(jìn)行更新。
3、相關(guān)技術(shù)中,往往是將大量的操作記錄寫入硬盤的數(shù)據(jù)庫,并且還需要保證這些操作記錄立刻寫入,否則如果出現(xiàn)宕機(jī),就無法恢復(fù)數(shù)據(jù)。這樣會(huì)在短時(shí)間內(nèi)對(duì)硬盤進(jìn)行大量的寫入操作,造成硬盤壓力過大,增加硬盤能耗。
4、因此,如何在存儲(chǔ)數(shù)據(jù)時(shí)減少寫入操作次數(shù)是亟待解決的問題。
技術(shù)實(shí)現(xiàn)思路
1、為解決上述技術(shù)問題,本技術(shù)的實(shí)施例提供了一種基于區(qū)塊鏈的數(shù)據(jù)處理方法、裝置、設(shè)備以及計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),可以減少存儲(chǔ)數(shù)據(jù)時(shí)的寫入操作次數(shù)。
2、其中,本技術(shù)所采用的技術(shù)方案為:
3、一種基于區(qū)塊鏈的數(shù)據(jù)處理方法,包括:
4、獲取待處理區(qū)塊對(duì)應(yīng)的第一操作記錄;
5、若檢測到緩存中存儲(chǔ)有與所述第一操作記錄對(duì)應(yīng)的第一操作對(duì)象相匹配的第二操作記錄,則基于所述第一操作記錄對(duì)所述第二操作記錄進(jìn)行更新,得到更新后的操作記錄;
6、獲取所述緩存中所存儲(chǔ)操作記錄的數(shù)據(jù)量與預(yù)設(shè)數(shù)據(jù)量閾值之間的關(guān)系;
7、若所述關(guān)系表征所述數(shù)據(jù)量達(dá)到預(yù)設(shè)數(shù)據(jù)量閾值,則將所述緩存中所存儲(chǔ)操作記錄轉(zhuǎn)移到硬盤中。
8、一種基于區(qū)塊鏈的數(shù)據(jù)處理裝置,包括:
9、獲取單元,用于獲取待處理區(qū)塊對(duì)應(yīng)的第一操作記錄;
10、處理單元,用于若檢測到緩存中存儲(chǔ)有與所述第一操作記錄對(duì)應(yīng)的第一操作對(duì)象相匹配的第二操作記錄,則基于所述第一操作記錄對(duì)所述第二操作記錄進(jìn)行更新,得到更新后的操作記錄;
11、所述獲取單元,還用于獲取所述緩存中所存儲(chǔ)操作記錄的數(shù)據(jù)量與預(yù)設(shè)數(shù)據(jù)量閾值之間的關(guān)系;
12、存儲(chǔ)單元,用于若所述關(guān)系表征所述數(shù)據(jù)量達(dá)到預(yù)設(shè)數(shù)據(jù)量閾值,則將所述緩存中所存儲(chǔ)操作記錄轉(zhuǎn)移到硬盤中。
13、在本技術(shù)的一個(gè)實(shí)施例中,基于前述方案,所述處理單元,還用于若所述第一操作記錄對(duì)應(yīng)更新類型,則用所述更新類型替換所述第二操作記錄對(duì)應(yīng)的類型,并用所述第一操作記錄對(duì)應(yīng)的狀態(tài)值替換所述第二操作記錄對(duì)應(yīng)的狀態(tài)值;其中,所述狀態(tài)值用于表征對(duì)所述第一操作對(duì)象的狀態(tài)數(shù)據(jù)進(jìn)行操作之后所得到的值;若所述第一操作記錄對(duì)應(yīng)刪除類型,則用所述刪除類型替換所述第二操作記錄對(duì)應(yīng)的類型,并將所述第二操作記錄對(duì)應(yīng)的狀態(tài)值進(jìn)行清除。
14、在本技術(shù)的一個(gè)實(shí)施例中,基于前述方案,所述處理單元,還用于若所述緩存中未存儲(chǔ)有與所述第一操作記錄對(duì)應(yīng)的第一操作對(duì)象相匹配的操作記錄,則直接將所述第一操作記錄添加至所述緩存中。
15、在本技術(shù)的一個(gè)實(shí)施例中,基于前述方案,所述獲取單元,還用于獲取所述硬盤中所存儲(chǔ)操作記錄對(duì)應(yīng)的第二操作對(duì)象;所述處理單元,還用于基于所述緩存中與所述第二操作對(duì)象相匹配的操作記錄,對(duì)所述硬盤中與所述第二操作對(duì)象的操作記錄進(jìn)行更新,得到更新后的操作記錄,以實(shí)現(xiàn)所述緩存中所存儲(chǔ)操作記錄的轉(zhuǎn)移。
16、在本技術(shù)的一個(gè)實(shí)施例中,基于前述方案,所述硬盤中還存儲(chǔ)有最大區(qū)塊高度信息;在所述基于所述緩存中與所述第二操作對(duì)象相匹配的操作記錄,對(duì)所述硬盤中與所述第二操作對(duì)象的操作記錄進(jìn)行更新,得到更新后的操作記錄之后,所述獲取單元,還用于獲取所述緩存中的終止操作記錄所對(duì)應(yīng)的區(qū)塊高度值;所述處理單元,還用于將所述最大區(qū)塊高度信息更新為所述終止操作記錄所對(duì)應(yīng)的區(qū)塊高度值。
17、在本技術(shù)的一個(gè)實(shí)施例中,基于前述方案,在所述獲取待處理區(qū)塊對(duì)應(yīng)的第一操作記錄之前,若收發(fā)單元接收到斷電指令,則所述獲取單元,還用于獲取所述緩存中所存儲(chǔ)操作記錄的起始操作記錄對(duì)應(yīng)的區(qū)塊高度值,以及中止操作記錄對(duì)應(yīng)的區(qū)塊高度值;所述處理單元,還用于將所述所存儲(chǔ)操作記錄、所述起始操作記錄對(duì)應(yīng)的區(qū)塊高度值,以及所述中止操作記錄對(duì)應(yīng)的區(qū)塊高度值進(jìn)行關(guān)聯(lián),得到關(guān)聯(lián)數(shù)據(jù);將所述關(guān)聯(lián)數(shù)據(jù)存儲(chǔ)到所述硬盤中;其中,所述關(guān)聯(lián)數(shù)據(jù)用于在接收到啟動(dòng)指令后恢復(fù)所述緩存中所存儲(chǔ)操作記錄、所述起始操作記錄對(duì)應(yīng)的區(qū)塊高度值,以及所述中止操作記錄對(duì)應(yīng)的區(qū)塊高度值。
18、在本技術(shù)的一個(gè)實(shí)施例中,基于前述方案,若所述收發(fā)單元接收到啟動(dòng)指令,則所述獲取單元,還用于從所述硬盤的指定區(qū)域中獲取所述關(guān)聯(lián)數(shù)據(jù);所述處理單元,還用于對(duì)所述關(guān)聯(lián)數(shù)據(jù)進(jìn)行解析,得到所述所存儲(chǔ)操作記錄、所述起始操作記錄對(duì)應(yīng)的區(qū)塊高度值,以及所述中止操作記錄對(duì)應(yīng)的區(qū)塊高度值;基于所述起始操作記錄對(duì)應(yīng)的區(qū)塊高度值與所述硬盤中的最大區(qū)塊高度信息獲取所述第一操作記錄。
19、在本技術(shù)的一個(gè)實(shí)施例中,基于前述方案,所述處理單元,還用于若所述起始操作記錄對(duì)應(yīng)的區(qū)塊高度值與所述最大區(qū)塊高度信息相匹配,則基于所述中止操作記錄對(duì)應(yīng)的區(qū)塊高度值和區(qū)塊鏈中的最新區(qū)塊高度值獲取所述待處理區(qū)塊,并基于所述待處理區(qū)塊中的交易獲取所述第一操作記錄;若所述起始操作記錄對(duì)應(yīng)的區(qū)塊高度值與所述最大區(qū)塊高度信息不匹配,則基于所述最大區(qū)塊高度信息和區(qū)塊鏈中的最新區(qū)塊高度值獲取所述待處理區(qū)塊,并基于所述待處理區(qū)塊中的交易獲取所述第一操作記錄。
20、在本技術(shù)的一個(gè)實(shí)施例中,基于前述方案,所述處理單元,還用于在將所述緩存中所存儲(chǔ)操作記錄轉(zhuǎn)移到硬盤中之后,若檢測到所述緩存中所存儲(chǔ)的任一操作記錄未成功轉(zhuǎn)移到所述硬盤中,則回溯到轉(zhuǎn)移前所述硬盤中所存儲(chǔ)操作記錄。
21、在本技術(shù)的一個(gè)實(shí)施例中,基于前述方案,所述收發(fā)單元,還用于接收針對(duì)指定操作記錄的查詢指令;所述處理單元,還用于若在所述緩存中查詢到所述指定操作記錄,則基于所述指定操作記錄所包括的操作類型返回查詢值;若未在所述緩存中查詢到所述指定操作記錄,則在所述硬盤中查詢所述指定操作記錄。
22、在本技術(shù)的一個(gè)實(shí)施例中,基于前述方案,所述處理單元,還用于若所述指定操作記錄所包括的操作類型為更新類型,則將所述指定操作記錄對(duì)應(yīng)的狀態(tài)值作為所述查詢值,并返回所述查詢值;若所述指定操作記錄所包括的操作類型為刪除類型,則將所述查詢值設(shè)置為空,并返回所述查詢值。
23、一種基于區(qū)塊鏈的數(shù)據(jù)處理設(shè)備,包括處理器及存儲(chǔ)器,存儲(chǔ)器上存儲(chǔ)有計(jì)算機(jī)可讀指令,計(jì)算機(jī)可讀指令被處理器執(zhí)行時(shí)實(shí)現(xiàn)如上的基于區(qū)塊鏈的數(shù)據(jù)處理方法。
24、一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)可讀指令,當(dāng)計(jì)算機(jī)可讀指令被計(jì)算機(jī)的處理器執(zhí)行時(shí),使計(jì)算機(jī)執(zhí)行如上的基于區(qū)塊鏈的數(shù)據(jù)處理方法。
25、一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)可讀指令,計(jì)算機(jī)可讀指令被處理器執(zhí)行時(shí)實(shí)現(xiàn)如上的基于區(qū)塊鏈的數(shù)據(jù)處理方法。
26、在上述技術(shù)方案中:
27、一方面,在獲取到第一操作記錄后,可以在緩存中檢測是否存在與第一操作記錄所對(duì)應(yīng)的第一操作對(duì)象的另一個(gè)操作記錄,即第二操作記錄。若存在,則可以基于第一操作記錄對(duì)第二操作記錄進(jìn)行更新,這樣,相同操作對(duì)象的操作記錄就會(huì)從兩個(gè)變成一個(gè)。當(dāng)將操作記錄轉(zhuǎn)移到硬盤時(shí),只需要寫入更新后的操作記錄,而不是分別寫入每個(gè)操作記錄,這樣減少了對(duì)硬盤的寫入次數(shù)。因此,該方法可以降低硬盤的寫入操作頻率,減少硬盤的能耗和磨損,提高硬盤的壽命。
28、另一方面,緩存中的數(shù)據(jù)量達(dá)到預(yù)設(shè)數(shù)據(jù)量閾值時(shí),則將緩存中所存儲(chǔ)操作記錄轉(zhuǎn)移到硬盤中,實(shí)現(xiàn)了操作記錄的定時(shí)轉(zhuǎn)移,不會(huì)頻繁地對(duì)硬盤進(jìn)行寫入操作,進(jìn)一步減少了對(duì)硬盤的寫入次數(shù),降低了硬盤的能耗。
29、應(yīng)當(dāng)理解的是,以上的一般描述和后文的細(xì)節(jié)描述僅是示例性和解釋性的,并不能限制本技術(shù)。