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