目前,區(qū)塊鏈應用已經(jīng)不僅局限于資產(chǎn)轉賬、信息追溯等領域,新型商業(yè)化應用不斷涌現(xiàn),視頻、圖片、醫(yī)療信息等大體量數(shù)據(jù)也越來越多地需要存儲于區(qū)塊鏈中。大規(guī)模分布式數(shù)據(jù)的存儲和管理需求,使得區(qū)塊鏈數(shù)據(jù)處理的時間和空間消耗問題越來越突出。因此,BUMO在數(shù)據(jù)存儲設計中充分考慮到上述挑戰(zhàn),提出了大規(guī)模數(shù)據(jù)的差異化分布式存儲體系Trailer。
Trailer首先對數(shù)據(jù)進行差異化分類處理,根據(jù)數(shù)據(jù)特點將其分為鏈上數(shù)據(jù)和鏈下數(shù)據(jù)。鏈上數(shù)據(jù)指實時存儲于區(qū)塊鏈節(jié)點的數(shù)據(jù),比如賬戶、交易、區(qū)塊頭等基礎鏈數(shù)據(jù)等;鏈下數(shù)據(jù)指不需實時存儲于區(qū)塊鏈節(jié)點的數(shù)據(jù),比如存在性證明所需的歷史視頻數(shù)據(jù)等。但是,鏈下數(shù)據(jù)需要進行鏈上數(shù)據(jù)錨定,即將數(shù)據(jù)哈希值作為鏈上數(shù)據(jù)存儲。其次,針對鏈上數(shù)據(jù)和鏈下數(shù)據(jù)的不同特點,選擇不同的存儲引擎,并進行接口封裝和成本計算,滿足大規(guī)模數(shù)據(jù)差異化存儲需求的同時,具有較高的用戶友好性。
1. 數(shù)據(jù)差異化定義
鏈上數(shù)據(jù)指實時存儲于區(qū)塊鏈節(jié)點的數(shù)據(jù),區(qū)塊鏈節(jié)點具備對鏈上數(shù)據(jù)的全拷貝能力,是能形成區(qū)塊有效性證明的最小單元數(shù)據(jù)集合,典型數(shù)據(jù)如下:
●鏈基礎數(shù)據(jù): 比如賬戶、交易、區(qū)塊頭等直接數(shù)據(jù),賬戶樹、交易樹及區(qū)塊生成證明等區(qū)塊有效性證明數(shù)據(jù),以及供用戶數(shù)據(jù)查詢必要的索引數(shù)據(jù)等;
●智能合約及 合約操作數(shù)據(jù):智能合約的圖靈完備腳本及其依賴數(shù)據(jù)均需要在鏈上存儲,以保證其可執(zhí)行和去中心化特性,隨時提供智能合約訪問能力;
●資產(chǎn)類數(shù)據(jù): 這類數(shù)據(jù)存儲需求量小,但對安全性要求極高,鏈上存儲可以在提供充分冗余存儲的同時提供安全的計算環(huán)境;
●簡短靜態(tài)數(shù)據(jù): 比如交易備注等通常數(shù)據(jù)量很小的數(shù)據(jù)。
鏈下數(shù)據(jù)指無需實時存儲于區(qū)塊鏈節(jié)點的數(shù)據(jù),通常是使用頻率較低、存儲體量相對較大的數(shù)據(jù)集合,比如存在性證明所需的歷史視頻數(shù)據(jù)等。鏈下數(shù)據(jù)通常需要進行鏈上數(shù)據(jù)錨定,即將數(shù)據(jù)哈希值、數(shù)據(jù)索引|等作為鏈上數(shù)據(jù)存儲。典型數(shù)據(jù)如下:
●大體量數(shù)據(jù): 該類數(shù)據(jù)特點是所需的存儲空間大,比如視頻、圖片、志、地理位置等數(shù)據(jù);
●區(qū)塊歷史數(shù)據(jù):使用頻率低,戶無需實時查詢,鏈下數(shù)據(jù)可作為備份手段;
●保密性要求較高數(shù)據(jù): 比如個人身份信息,醫(yī)療數(shù)據(jù)等,鏈下數(shù)據(jù)脫敏存儲,只在驗證請求或授權請求時提供原始數(shù)據(jù)證明。
2. 數(shù)據(jù)分類篩選
數(shù)據(jù)存儲結構圖
存儲適配器模塊負責篩選、甄別鏈上數(shù)據(jù)和鏈下數(shù)據(jù),并分別進行存儲操作。一般而言,區(qū)塊鏈網(wǎng)絡中的參與節(jié)點均會選擇使用鏈上存儲,而鏈下存儲的選擇則與用戶應用方式緊密相關。鏈下存儲按照數(shù)據(jù)存儲的開放程度,可分為私有存儲和共享存儲兩類。鏈下私有存儲指用戶搭建并進行運維的存儲系統(tǒng),具有前期投入大、運維成本高的特點;鏈下共享存儲指無需用戶自身投入建設,通過付費等方式獲取的共享存儲系統(tǒng)。存儲適配器模塊的主要作用如下:
●接口封裝:將復雜的內(nèi)部存儲功能封 裝為少量簡單易用的用戶服務接口;
●數(shù)據(jù)分類: 對鏈上數(shù)據(jù)及鏈下數(shù)據(jù)進行分類,如需進行鏈下數(shù)據(jù)存儲,需進一步選擇鏈下共享存儲或者鏈下私有存儲。在鏈下數(shù)據(jù)存儲前,需先將待存儲數(shù)據(jù)進行哈希運算,進而將哈希值作為鏈上數(shù)據(jù)進行存儲操作;
●成本計算: 支持對鏈上數(shù)據(jù)存儲所需的成本(比如Gas值), 以及共享存儲需支付的費用等進行綜合計算,提供給用戶作為成本參考。
3. 鏈上數(shù)據(jù)存儲實現(xiàn)
針對鏈上數(shù)據(jù)存儲需求,BUMO基于TiDB技術構建了專用的分布式存儲引擎數(shù)據(jù)庫ChainDB。TiDB 是受Google Spanner/ F1論文啟發(fā)而設計的開源分布式HTAP (Hybrid Transactional and Analytical Processing)數(shù)據(jù)庫。ChainDB 具備如下能力:
●水平彈性擴 展:通過簡單配置即可實現(xiàn)新節(jié)點添加并且能在不停止終端業(yè)務的前提下,動態(tài)添加存儲節(jié)點,提高整體的數(shù)據(jù)存儲能力;
●高可用性: 數(shù)據(jù)存儲引擎可在保證大多數(shù)副本不丟失的前提下實現(xiàn)故障的自動恢復;
●分布式事務: 采用優(yōu)化后的Percolator模型支持分布式事務,同時使用樂觀鎖技術,在事務執(zhí)行過程中不會檢測寫沖突,只在提交過程中進行沖突檢測,沖突雙方中較早完成提交的一方會率先寫入成功,另一方會嘗試重新執(zhí)行整個事務,具備高效的事務處理能力。
4. 鏈下數(shù)據(jù)存儲實現(xiàn)
BUMO結合IPFS等現(xiàn)有分布式存儲技術,有效滿足鏈下數(shù)據(jù)存儲需求。不同于鏈上數(shù)據(jù)的相對傳統(tǒng)數(shù)據(jù)庫存儲方案,IPFS 等存儲體系是永久、去中心化保存和共享文件的技術,是內(nèi)容可尋址、版本化、點對點超媒體的分布式存儲協(xié)議,基于該類技術構建的鏈下數(shù)據(jù)存儲弓|擎具備如下能力:
●降低存儲空間: 通過對文件生成唯一哈希 值的方式標識文件,取代傳統(tǒng)的通過文件位置標識文件的方式,有效降低存儲空間;
●提高存儲多樣性: 支持更多業(yè)務數(shù)據(jù)類型及大體星數(shù)據(jù)的存儲(視頻、照片、日志地理位置) ;
●降低硬件成本: 支持水平擴展,對存儲節(jié)點的硬件要求較低;
●多種部署形式: 在提供共享服務能力的同時,也可以利用該技術進行私有化部署;
●易于擴 展維護:滿足代碼開源、版本可追溯等開源特征。
評論