






收稿日期:2023-12-01
DOI:10.19850/j.cnki.2096-4706.2024.03.014
摘" 要:區(qū)塊鏈在實(shí)際溯源場(chǎng)景中存在無(wú)法支撐大規(guī)模連續(xù)性數(shù)據(jù)高效存儲(chǔ)的問(wèn)題,且單一的數(shù)據(jù)查詢方式無(wú)法滿足應(yīng)用需求,不利于溯源應(yīng)用在多樣化場(chǎng)景下的大規(guī)模落地。為探索溯源場(chǎng)景的高可拓展區(qū)塊鏈存儲(chǔ)引擎技術(shù),通過(guò)基于數(shù)據(jù)連續(xù)性特點(diǎn)來(lái)優(yōu)化數(shù)據(jù)存儲(chǔ)、優(yōu)化默克爾B+樹(shù)結(jié)構(gòu)、創(chuàng)建索引數(shù)據(jù)庫(kù)等創(chuàng)新手段,實(shí)現(xiàn)了溯源數(shù)據(jù)區(qū)塊鏈高效混合存儲(chǔ)和高效數(shù)據(jù)檢索,在食品安全溯源應(yīng)用場(chǎng)景中提升了效率。
關(guān)鍵詞:區(qū)塊鏈;食品溯源;存儲(chǔ);檢索
中圖分類號(hào):TP311.1;TP393" 文獻(xiàn)標(biāo)識(shí)碼:A" " 文章編號(hào):2096-4706(2024)03-0064-05
Application Research on the Method of Food Traceability Storage and Retrieval Based on Blockchain
LIU Guanghui1, CHEN Honggu2, ZHANG Jiyin2, SONG Lyu2
(1.Archives Information Center of Chongqing Administration for Market Regulation, Chongqing" 401121, China;
2.Chongqing Qulian Digital Technology Co., Ltd., Chongqing" 400010, China)
Abstract: Blockchain has the problem of being unable to support efficient storage of large-scale continuous data in practical traceability scenarios, and a single data query method cannot meet application requirements, which is not conducive to the large-scale implementation of traceability applications in diverse scenarios. In order to explore the highly scalable blockchain storage engine technology for traceability scenarios, innovative methods such as optimizing data storage based on data continuity characteristics, optimizing Merkel B+tree structure, and creating index databases have been used to achieve efficient hybrid storage of traceability data blockchain and efficient data retrieval. This has improved efficiency in food safety traceability application scenarios.
Keywords: blockchain; food traceability; storage; retrieval
0" 引" 言
食品溯源數(shù)據(jù)主要從供應(yīng)鏈業(yè)務(wù)流程中采集,常規(guī)供應(yīng)鏈上下游鏈條長(zhǎng),數(shù)據(jù)收集流程復(fù)雜,數(shù)據(jù)與數(shù)據(jù)之間存在強(qiáng)連續(xù)性關(guān)系[1]。為便于溯源區(qū)塊鏈底層平臺(tái)與其他鏈的集成或方便企業(yè)使用,都會(huì)提供輕節(jié)點(diǎn)的功能來(lái)存儲(chǔ)少量數(shù)據(jù),針對(duì)全量數(shù)據(jù)存儲(chǔ)的節(jié)點(diǎn)(例如以太坊、fabric等共識(shí)節(jié)點(diǎn))存儲(chǔ)優(yōu)化問(wèn)題,它們會(huì)進(jìn)行定期的數(shù)據(jù)遷移以減少線上LevelDB數(shù)據(jù)量,如果數(shù)據(jù)體量大則需要頻繁操作。隨著數(shù)據(jù)量的日益增大,數(shù)據(jù)庫(kù)存儲(chǔ)讀寫(xiě)性能將會(huì)受到嚴(yán)重影響,特別是區(qū)塊鏈基礎(chǔ)信息的查詢(區(qū)塊查詢、溯源交易查詢)性能會(huì)急劇下降,導(dǎo)致用戶查詢延遲大幅增加[2]。
1" 方案設(shè)計(jì)
1.1" 設(shè)計(jì)概要
采取相應(yīng)措施優(yōu)化區(qū)塊鏈溯源存儲(chǔ)及其檢索性能。一是針對(duì)鏈上大規(guī)模數(shù)據(jù)存儲(chǔ)性能瓶頸問(wèn)題,提出基于區(qū)塊鏈的混合存儲(chǔ)引擎結(jié)合數(shù)據(jù)類型設(shè)計(jì)數(shù)據(jù)存儲(chǔ)模式,運(yùn)用默克爾B+樹(shù)存儲(chǔ)機(jī)制滿足輕量級(jí)節(jié)點(diǎn)驗(yàn)證需求,實(shí)現(xiàn)區(qū)塊鏈數(shù)據(jù)的高效存取。二是為了解決數(shù)據(jù)查詢問(wèn)題,搭建索引數(shù)據(jù)庫(kù),采用可插拔存儲(chǔ)引擎將關(guān)鍵信息存儲(chǔ)在索引數(shù)據(jù)庫(kù)中,通過(guò)特殊的ID標(biāo)識(shí)與關(guān)鍵內(nèi)容進(jìn)行映射,實(shí)現(xiàn)業(yè)務(wù)數(shù)據(jù)的快速索引功能[2]。在實(shí)際溯源場(chǎng)景中,通過(guò)優(yōu)化區(qū)塊鏈性能來(lái)滿足試點(diǎn)市監(jiān)大規(guī)模數(shù)據(jù)溯源性能需求,實(shí)現(xiàn)數(shù)據(jù)收集、數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)處理性能的有效提升。
1.2" 技術(shù)要點(diǎn)
1.2.1" 優(yōu)化連續(xù)性數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)
在溯源場(chǎng)景中,大多數(shù)上鏈數(shù)據(jù)屬于連續(xù)性數(shù)據(jù),通過(guò)優(yōu)化連續(xù)性數(shù)據(jù)存儲(chǔ)方案,實(shí)現(xiàn)大量連續(xù)性數(shù)據(jù)的效上鏈,助力溯源場(chǎng)景大規(guī)模落地。區(qū)塊鏈實(shí)際是一個(gè)賬本,記下來(lái)的賬目按區(qū)塊號(hào)向后追加,形成以區(qū)塊號(hào)為單位的連續(xù)性數(shù)據(jù)存儲(chǔ)模式,比如溯源場(chǎng)景中每發(fā)生一筆數(shù)據(jù)變動(dòng),在區(qū)塊鏈中對(duì)應(yīng)一筆交易,該交易包含溯源哈希或源數(shù)據(jù)、回執(zhí)數(shù)據(jù)等,這些數(shù)據(jù)都屬于連續(xù)性數(shù)據(jù)。然而,市面上所有成熟型區(qū)塊鏈產(chǎn)品(例如以太坊、fabric等)都沒(méi)有完全利用連續(xù)性數(shù)據(jù)的特點(diǎn)來(lái)優(yōu)化該類型數(shù)據(jù)的存儲(chǔ)性能。
連續(xù)性數(shù)據(jù)存儲(chǔ)優(yōu)化結(jié)構(gòu)如圖1所示,該數(shù)據(jù)庫(kù)由多個(gè)log segment組成,每一個(gè)log segment由一個(gè)后綴為.log和一個(gè)后綴為.idx的文件組成,分別用于存儲(chǔ)數(shù)據(jù)和索引數(shù)據(jù)。每一個(gè)log segment的結(jié)構(gòu)如圖2所示[3]。數(shù)據(jù)以文件的方式記錄到磁盤中,以log為后綴的文件記錄原數(shù)據(jù)的信息,以idx為后綴的文件記錄以log文件為單位的文件索引信息,用于快速定位需要查找的數(shù)據(jù)位置,每一個(gè)log文件都配有一個(gè)相同前綴的idx文件。文件名前綴為文件中存儲(chǔ)的第一條數(shù)據(jù)的偏移量數(shù)值。每一個(gè)log文件都有大小限制,文件超過(guò)該限制時(shí)將新打開(kāi)一個(gè)文件用于后續(xù)數(shù)據(jù)寫(xiě)入,以確保連續(xù)性數(shù)據(jù)的高效寫(xiě)入。采用log segment中第一條數(shù)據(jù)的key值作為文件名,根據(jù)數(shù)據(jù)有序的特點(diǎn),采用時(shí)間復(fù)雜度更低的二分查找法來(lái)快速確認(rèn)某一條數(shù)據(jù)位于哪個(gè)log segment中。在這樣的數(shù)據(jù)結(jié)構(gòu)下,數(shù)據(jù)的讀寫(xiě)效率將變得非常高。
圖1" 連續(xù)型結(jié)構(gòu)
在這樣的設(shè)計(jì)之下,一次數(shù)據(jù)寫(xiě)入操作只需要兩次磁盤IO,一次數(shù)據(jù)讀取操作只需要三次磁盤IO(一次讀Index Entity、一次讀Log Entity的header、一次讀Log Entity的data)。相較于LeveDB復(fù)雜的數(shù)據(jù)格式,讀寫(xiě)效率大大提高。此外,數(shù)據(jù)量的增大只會(huì)增加文件個(gè)數(shù),即稍微增加二分查找的時(shí)間,計(jì)算時(shí)間的增加幾乎可以忽略不計(jì),隨著數(shù)據(jù)的增大該數(shù)據(jù)庫(kù)的性能不會(huì)衰減。
其次在存儲(chǔ)架構(gòu)上,優(yōu)化默克爾B+樹(shù)葉子節(jié)點(diǎn)4 K存儲(chǔ)閾值,對(duì)于將節(jié)點(diǎn)限制在4 K大小這一點(diǎn),本方案從磁盤讀取的角度提出優(yōu)化思路,將索引節(jié)點(diǎn)與數(shù)據(jù)節(jié)點(diǎn)視為索引文件和數(shù)據(jù)文件,可以有效提高節(jié)點(diǎn)分叉數(shù),降低樹(shù)高,進(jìn)而降低磁盤IO次數(shù)[4],默克爾樹(shù)結(jié)構(gòu)如圖3所示。隨后新生成的節(jié)點(diǎn)信息插入到原父節(jié)點(diǎn)的子節(jié)點(diǎn)列表中,再遞歸檢查父節(jié)點(diǎn)即索引節(jié)點(diǎn)是否超過(guò)閾值,如果索引節(jié)點(diǎn)超過(guò)閾值將會(huì)重復(fù)分裂過(guò)程。由于默克爾B+樹(shù)在每個(gè)節(jié)點(diǎn)都存儲(chǔ)了哈希值,每次對(duì)狀態(tài)數(shù)據(jù)的增刪改查,都會(huì)造成底層數(shù)據(jù)節(jié)點(diǎn)的變動(dòng),進(jìn)而影響數(shù)據(jù)節(jié)點(diǎn)到根節(jié)點(diǎn)路徑上的節(jié)點(diǎn)哈希值,最終實(shí)現(xiàn)數(shù)據(jù)可信存儲(chǔ)。在生成數(shù)據(jù)證明時(shí),同樣是沿著樹(shù)根,通過(guò)鍵的比對(duì)向下索引,并把索引路徑上的節(jié)點(diǎn)打包成證明返回[5]。驗(yàn)證數(shù)據(jù)證明的時(shí)候,可以在數(shù)據(jù)證明中的節(jié)點(diǎn)路徑進(jìn)行同樣的索引操作,驗(yàn)證索引路徑的一致性,并進(jìn)行節(jié)點(diǎn)哈希值的正確性校驗(yàn),最后比對(duì)樹(shù)根的值。例如在溯源場(chǎng)景中,按供應(yīng)鏈的環(huán)節(jié)信息數(shù)據(jù)上鏈,上下游參與者作為底層葉子節(jié)點(diǎn)進(jìn)行數(shù)據(jù)錄入,在供應(yīng)鏈核心環(huán)節(jié)進(jìn)行數(shù)據(jù)的整合,逐步完善形成一棵溯源樹(shù),最后通過(guò)溯源碼進(jìn)行溯源查詢。
圖3" 默克爾B+邏輯圖
1.2.2" 優(yōu)化索引數(shù)據(jù)庫(kù)標(biāo)識(shí)緩解查詢時(shí)延
為緩解溯源查詢時(shí)的壓力,建立索引庫(kù),提升區(qū)塊鏈索引效率。將原本存儲(chǔ)于同一位置的索引數(shù)據(jù)與賬本數(shù)據(jù)進(jìn)行拆分,優(yōu)化存儲(chǔ)效能。
然而,在溯源存證生產(chǎn)過(guò)程中,即便使用一個(gè)獨(dú)立的LevelDB作為索引數(shù)據(jù)庫(kù),在數(shù)據(jù)量增大后讀寫(xiě)性能也會(huì)出現(xiàn)一定程度的下降。究其原因,是LevelDB使用了LSM-Tree作為底層數(shù)據(jù)結(jié)構(gòu)來(lái)組織數(shù)據(jù)庫(kù),其設(shè)計(jì)思想源于順序操作的效率遠(yuǎn)遠(yuǎn)高于隨機(jī)操作。LSM-Tree是一種多層級(jí)的數(shù)據(jù)結(jié)構(gòu),包含一層內(nèi)存結(jié)構(gòu)與多層磁盤結(jié)構(gòu),每一層磁盤結(jié)構(gòu)的空間上限呈指數(shù)級(jí)增長(zhǎng)。在LevelDB中,數(shù)據(jù)的插入或更新將被緩存在內(nèi)存中,當(dāng)緩存達(dá)到預(yù)設(shè)上限時(shí)會(huì)以有序的方式將內(nèi)存中的數(shù)據(jù)寫(xiě)入磁盤,形成一個(gè)L0層的SSTable [6]。隨著寫(xiě)入操作的不斷進(jìn)行,L0層的SSTable數(shù)量會(huì)持續(xù)上升(SSTable之間可能存在重疊部分)。
目前區(qū)塊鏈中索引信息的鍵主要有區(qū)塊編號(hào)、區(qū)塊哈希與交易哈希,而區(qū)塊哈希和交易哈希是根據(jù)區(qū)塊和交易的內(nèi)容通過(guò)哈希算法計(jì)算得到的無(wú)規(guī)則字符數(shù)組,且交易索引數(shù)據(jù)(如交易哈希到區(qū)塊編號(hào))占據(jù)的數(shù)據(jù)量最大。如果所插入的數(shù)據(jù)key均為完全隨機(jī)的字符數(shù)組,那么LevelDB中每?jī)蓪拥腟STable都會(huì)存在大量的重疊[7]。在數(shù)據(jù)量較大且讀寫(xiě)頻繁的情況下,Compaction將會(huì)頻頻發(fā)生,并且在讀取索引數(shù)據(jù)時(shí)可能需要遍歷L0層的所有SSTable與其余層的對(duì)應(yīng)SStable,效率同樣極低。
進(jìn)一步分析發(fā)現(xiàn),引入索引數(shù)據(jù)后性能降低的主要原因是完全隨機(jī)化的鍵使得讀寫(xiě)效率急速下降。優(yōu)化思路是基于區(qū)塊哈希與交易哈希的唯一標(biāo)識(shí)特性,通過(guò)重新設(shè)計(jì)使其呈現(xiàn)出一定的順序性,并且通過(guò)將區(qū)塊哈希到區(qū)塊編號(hào)的索引信息直接編碼進(jìn)區(qū)塊哈希中,完全去除這部分的索引存儲(chǔ)開(kāi)銷。區(qū)塊哈希中的第一個(gè)字節(jié)為版本信息,后八個(gè)字節(jié)為區(qū)塊號(hào),后綴字節(jié)為區(qū)塊內(nèi)容哈希結(jié)果。經(jīng)過(guò)這樣的編碼,在最理想的情況下,LevelDB內(nèi)部的SSTable將不會(huì)有任何重疊的部分,從而避免compaction,以實(shí)現(xiàn)性能的最優(yōu)化。索引節(jié)點(diǎn)中只存放了鍵,因此索引文件遠(yuǎn)遠(yuǎn)小于數(shù)據(jù)文件,通過(guò)mmap(內(nèi)存映射)的方式將索引文件存儲(chǔ)到內(nèi)存中,這樣對(duì)底層數(shù)據(jù)的讀取只需數(shù)據(jù)文件的一次磁盤IO即可,大大提升了讀效率,在讀多寫(xiě)少的溯源場(chǎng)景下具有較大的優(yōu)勢(shì)[8]。
1.3" 性能測(cè)試
針對(duì)上述優(yōu)化內(nèi)容,改進(jìn)區(qū)塊鏈的底層設(shè)計(jì),創(chuàng)建連續(xù)性存儲(chǔ)結(jié)構(gòu)Filelog來(lái)優(yōu)化存儲(chǔ)結(jié)構(gòu)以及拆分索引數(shù)據(jù)庫(kù)優(yōu)化查詢性能,并且進(jìn)行產(chǎn)品性能測(cè)試。
1.3.1" 存儲(chǔ)性能測(cè)試
如圖4所示為本次設(shè)計(jì)的連續(xù)性數(shù)據(jù)庫(kù)Filelog與傳統(tǒng)LevelDB數(shù)據(jù)庫(kù)在不同的存儲(chǔ)大小下寫(xiě)入、讀取方面的性能對(duì)比,從圖中可以發(fā)現(xiàn),存儲(chǔ)量越大,兩者之間的性能差別越大,由此得出優(yōu)化后的連續(xù)性數(shù)據(jù)庫(kù)Filelog的讀寫(xiě)性能遠(yuǎn)遠(yuǎn)高于LevelDB。
1.3.2" 檢索性能測(cè)試
基于TPS(Transactions Per Second)關(guān)鍵指標(biāo)進(jìn)行檢索性能測(cè)試,TPS為每秒處理事務(wù)數(shù),反映一個(gè)系統(tǒng)處理能力的指標(biāo)(包括存儲(chǔ)、檢索等)。TPS=并發(fā)數(shù)/平均響應(yīng)時(shí)間。從表1中可以看出,在溯源場(chǎng)景中,相同時(shí)間內(nèi)并發(fā)數(shù)越大表明區(qū)塊鏈讀寫(xiě)速度越快。無(wú)任何優(yōu)化措施區(qū)塊鏈中的并發(fā)數(shù)為200,僅進(jìn)行數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)優(yōu)化后的并發(fā)數(shù)為400,同時(shí)實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)優(yōu)化和索引數(shù)據(jù)庫(kù)升級(jí)的并發(fā)數(shù)為600,從實(shí)驗(yàn)中得出索引數(shù)據(jù)庫(kù)經(jīng)過(guò)優(yōu)化后,系統(tǒng)查詢等性能得以提升。
圖4" 數(shù)據(jù)庫(kù)性能對(duì)比
表1" 性能測(cè)試對(duì)比表
并發(fā)數(shù) 節(jié)點(diǎn)響應(yīng)TPS 持續(xù)時(shí)間/s 等待時(shí)間/ms TPS
600 537.02 600 10 519.70
400 400.52 600 10 399.75
200 200.60 600 10 200.21
2" 實(shí)際應(yīng)用
將上述優(yōu)化策略應(yīng)用于重慶市智慧食品安全監(jiān)管追溯應(yīng)用進(jìn)行理論驗(yàn)證。在食品監(jiān)管體系中,食品本身的管理和流動(dòng)軌跡溯源是溯源監(jiān)管體系的兩大重要模塊,食品流通會(huì)產(chǎn)生大量的狀態(tài)數(shù)據(jù),需要持續(xù)地將這些數(shù)據(jù)記錄下來(lái),市級(jí)食品市場(chǎng)數(shù)據(jù)量粗略估計(jì)在百億級(jí)別,要滿足如此巨大規(guī)模狀態(tài)數(shù)據(jù)的存儲(chǔ),極高的寫(xiě)入吞吐、海量存儲(chǔ)規(guī)模、可控的存儲(chǔ)成本、高效數(shù)據(jù)索引成為關(guān)鍵問(wèn)題[9]。
整個(gè)食品安全溯源過(guò)程涉及監(jiān)管機(jī)構(gòu)、相關(guān)市場(chǎng)主體等單位的參與,整體架構(gòu)如圖5所示。市場(chǎng)監(jiān)管局、農(nóng)委和商務(wù)委等機(jī)構(gòu)通過(guò)部署節(jié)點(diǎn)組成溯源監(jiān)管聯(lián)盟鏈,部分重點(diǎn)企業(yè)以節(jié)點(diǎn)方式接入,其他主體以服務(wù)方式接入。
在區(qū)塊鏈溯源系統(tǒng)中通過(guò)權(quán)限體系保護(hù)數(shù)據(jù)隱私,權(quán)限體系所保護(hù)的資源一般可以從資源對(duì)區(qū)塊鏈系統(tǒng)的影響層級(jí)維度劃分成四類:對(duì)整個(gè)鏈運(yùn)轉(zhuǎn)產(chǎn)生影響的鏈級(jí)權(quán)限、對(duì)單個(gè)智能合約運(yùn)行產(chǎn)生影響的合約權(quán)限、對(duì)區(qū)塊鏈上單個(gè)賬號(hào)產(chǎn)生影響的賬號(hào)權(quán)限以及只對(duì)區(qū)塊鏈系統(tǒng)中單個(gè)節(jié)點(diǎn)產(chǎn)生影響的節(jié)點(diǎn)權(quán)限。不同角色接入?yún)^(qū)塊鏈的方式不同,例如監(jiān)管者以節(jié)點(diǎn)形式接入、企業(yè)以賬戶或節(jié)點(diǎn)形式接入,消費(fèi)者以賬戶形式接入[9]。
圖5" 食品安全溯源架構(gòu)圖
對(duì)于溯源數(shù)據(jù)有效性問(wèn)題,利用區(qū)塊鏈+物聯(lián)網(wǎng)模組的方式實(shí)現(xiàn)數(shù)據(jù)最后一公里真實(shí)可信;數(shù)據(jù)索引采用內(nèi)嵌式索引數(shù)據(jù)庫(kù),在保證檢索結(jié)果可信的同時(shí),極大地提升了業(yè)務(wù)數(shù)據(jù)的檢索效率。最后按照溯源標(biāo)準(zhǔn)以溯源碼為載體整合區(qū)塊鏈上參與者的數(shù)據(jù),實(shí)現(xiàn)產(chǎn)品全流程溯源。
區(qū)塊鏈?zhǔn)称匪菰淳唧w業(yè)務(wù)流程如圖6所示,將食品溯源上下游食品生產(chǎn)、流通以及消費(fèi)等環(huán)節(jié)重要信息與區(qū)塊鏈溯源身份做數(shù)據(jù)綁定,形成追溯信息重要依據(jù)。在食品生產(chǎn)環(huán)節(jié),結(jié)合生產(chǎn)智能設(shè)備和生產(chǎn)業(yè)務(wù)系統(tǒng)建立食品生產(chǎn)企業(yè)檔案基本信息庫(kù)(包括生產(chǎn)環(huán)境、生產(chǎn)原料、生產(chǎn)人員等信息);在食品監(jiān)督檢查環(huán)節(jié),基于市監(jiān)食品管理平臺(tái)建立市場(chǎng)監(jiān)督檢查數(shù)據(jù)庫(kù),食品監(jiān)督人員借助監(jiān)督檢查數(shù)據(jù)庫(kù)完成監(jiān)督檢查任務(wù);在食品流通環(huán)節(jié),通過(guò)對(duì)接分銷或配送系統(tǒng)建立食品流通檔案基本信息庫(kù),將流通中的配送信息(包括配送環(huán)節(jié)溫度、配送路線、配送人員等)、分銷信息(包括供應(yīng)商、地點(diǎn)等)實(shí)時(shí)上鏈[10];在食品消費(fèi)環(huán)節(jié),通過(guò)商品銷售結(jié)算系統(tǒng)將食品條碼、批次和臺(tái)賬建立關(guān)聯(lián),所記錄的銷售終端信息(包括門店、時(shí)間、上貨時(shí)間等)、消費(fèi)投訴信息均與溯源身份進(jìn)行數(shù)據(jù)鏈接。為所有環(huán)節(jié)的參與者分配公私鑰,進(jìn)行數(shù)據(jù)加解密操作以保證數(shù)據(jù)流轉(zhuǎn)過(guò)程中的安全性。在數(shù)據(jù)應(yīng)用過(guò)程中,利用智能合約事先規(guī)范數(shù)據(jù)應(yīng)用事件,例如溯源查詢等。通過(guò)智能合約完成數(shù)據(jù)鏈上操作,通過(guò)私鑰確認(rèn)查詢對(duì)象數(shù)據(jù)權(quán)限,從而保證被查數(shù)據(jù)隱私安全。
試點(diǎn)運(yùn)行階段選擇重糧米業(yè)—東北長(zhǎng)粒香米作為溯源試點(diǎn)對(duì)象,重糧米業(yè)擁有完善的信息化基礎(chǔ)設(shè)施,不僅儲(chǔ)備有充足的重慶本地自產(chǎn)優(yōu)質(zhì)大米,更有來(lái)自全國(guó)優(yōu)質(zhì)糧產(chǎn)區(qū)口感豐富的“人和”品牌大米,品牌溯源價(jià)值高。目前,已實(shí)現(xiàn)對(duì)該產(chǎn)品年銷量250噸的產(chǎn)品溯源信息上鏈存儲(chǔ),存儲(chǔ)數(shù)量3萬(wàn)條,溯源校驗(yàn)查詢記錄7萬(wàn)多條。溯源查詢展示部分頁(yè)面如圖7所示。
3" 結(jié)" 論
基于區(qū)塊鏈存儲(chǔ)結(jié)構(gòu)優(yōu)化以及高效檢索方案,實(shí)現(xiàn)在塊間和塊內(nèi)使用不同存儲(chǔ)模式進(jìn)一步優(yōu)化檢索速度。在空間占用上也實(shí)現(xiàn)了一定的優(yōu)化,相同數(shù)據(jù)量下,可以顯著降低鏈上數(shù)據(jù)的空間占用。通過(guò)理論和實(shí)踐的驗(yàn)證,本次優(yōu)化的數(shù)據(jù)庫(kù)針對(duì)不同的數(shù)據(jù)類型設(shè)計(jì)了相應(yīng)的存儲(chǔ)模式,并利用默克爾B+樹(shù)存儲(chǔ)機(jī)制實(shí)現(xiàn)了輕量級(jí)節(jié)點(diǎn)的驗(yàn)證,從而實(shí)現(xiàn)了區(qū)塊鏈數(shù)據(jù)的高效存取。在實(shí)際的食品溯源查詢業(yè)務(wù)中,產(chǎn)業(yè)鏈上不同環(huán)節(jié)企業(yè)作為存儲(chǔ)結(jié)構(gòu)樹(shù)的最小節(jié)點(diǎn)單位,隨著溯源數(shù)據(jù)的寫(xiě)入,優(yōu)化單個(gè)節(jié)點(diǎn)數(shù)據(jù)存儲(chǔ)閾值,最終構(gòu)建一棵溯源樹(shù),并將樹(shù)根值映射為溯源查詢碼,同時(shí)將關(guān)鍵信息建立在索引數(shù)據(jù)庫(kù)中,查詢時(shí)優(yōu)先查詢索引數(shù)據(jù)庫(kù),從而有效降低數(shù)據(jù)讀取的延時(shí),提升用戶滿意度。
基于本次區(qū)塊鏈存儲(chǔ)與查詢優(yōu)化方案,在實(shí)際食品溯源場(chǎng)景中的存儲(chǔ)效率和檢索能力上都有不錯(cuò)的表現(xiàn),但隨著信息技術(shù)和區(qū)塊鏈的快速發(fā)展,針對(duì)未來(lái)數(shù)據(jù)更加海量化、應(yīng)用領(lǐng)域更加復(fù)雜的情況,本方案需要做進(jìn)一步的完善。從目前來(lái)看,還有以下提升空間:
1)增強(qiáng)系統(tǒng)的穩(wěn)定性和安全性。在提高系統(tǒng)性能的前提下,重點(diǎn)提高系統(tǒng)的穩(wěn)定性和安全性,確保數(shù)據(jù)存儲(chǔ)和檢索過(guò)程中的完整性和機(jī)密性。
2)支持跨鏈合作,突破多結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)能力,優(yōu)化系統(tǒng)使得不同區(qū)塊鏈網(wǎng)絡(luò)之間可以相互連接和共享數(shù)據(jù)。在食品溯源領(lǐng)域,通過(guò)跨鏈合作實(shí)現(xiàn)不同企業(yè)、不同地區(qū)之間的信息共享和協(xié)同工作,提高溯源的準(zhǔn)確性和全面性。
3)完善溯源數(shù)據(jù)標(biāo)準(zhǔn)化和法規(guī)遵從。符合相關(guān)法規(guī)和標(biāo)準(zhǔn)的優(yōu)化系統(tǒng)可以更好地服務(wù)于食品溯源場(chǎng)景。標(biāo)準(zhǔn)化工作的開(kāi)展,可以促進(jìn)食品溯源信息的互聯(lián)互通,提高溯源的可信度和有效性。
參考文獻(xiàn):
[1]楊曉,秦一浪,王進(jìn)磊.果品質(zhì)量安全溯源管理系統(tǒng)設(shè)計(jì) [J].現(xiàn)代農(nóng)業(yè)科技,2018(16):245-247.
[2] 段冉陽(yáng),周文輝,魏驍,等.基于Hyperledger Fabric的食品溯源系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) [J].電子技術(shù)應(yīng)用,2021,47(3):55-60.
[3] 楊信廷,王明亭,徐大明,等.基于區(qū)塊鏈的農(nóng)產(chǎn)品追溯系統(tǒng)信息存儲(chǔ)模型與查詢方法 [J].農(nóng)業(yè)工程學(xué)報(bào),2019,35(22):323-330.
[4] 陳飛,葉春明,陳濤.基于區(qū)塊鏈的食品溯源系統(tǒng)設(shè)計(jì) [J].計(jì)算機(jī)工程與應(yīng)用,2021,57(2):60-69.
[5] 王仕棟,孫建明,李昭,等.基于區(qū)塊鏈技術(shù)的農(nóng)產(chǎn)品質(zhì)量溯源系統(tǒng) [J].包裝學(xué)報(bào),2020,12(6):80-85.
[6] 禹忠,郭暢,謝永斌,等.基于區(qū)塊鏈的醫(yī)藥防偽溯源系統(tǒng)研究[J].計(jì)算機(jī)工程與應(yīng)用,2020,56(3):35-41.
[7] 王千閣,何蒲,聶鐵錚,等.區(qū)塊鏈系統(tǒng)的數(shù)據(jù)存儲(chǔ)與查詢技術(shù)綜述 [J].計(jì)算機(jī)科學(xué),2018,45(12):12-18.
[8] 張德鈺.基于分布式存儲(chǔ)的區(qū)塊鏈上高效檢索的研究 [D].西安:西安電子科技大學(xué),2022.
[9] 王健佐.基于區(qū)塊鏈技術(shù)應(yīng)用于綠色有機(jī)食品溯源系統(tǒng)的探索 [J].農(nóng)村實(shí)用技術(shù),2019(8):58-59.
[10] 關(guān)于進(jìn)一步做好冷鏈?zhǔn)称纷匪莨芾砉ぷ鞯耐ㄖ?[J].中華人民共和國(guó)國(guó)家衛(wèi)生健康委員會(huì)公報(bào),2020(11):123-128.
作者簡(jiǎn)介:劉光惠(1973—),女,漢族,重慶江津人,高級(jí)工程師,博士研究生,研究方向:計(jì)算機(jī)軟件與理論;陳虹谷(1994—),女,漢族,重慶南岸人,工程師,本科,研究方向:信息管理與信息系統(tǒng);張吉印(1992—),男,漢族,重慶巴南人,項(xiàng)目管理,本科,研究方向:通信工程;宋呂(1990—),男,漢族,重慶九龍坡人,工程師,本科,研究方向:通信工程。