目前,区块链应用已经不仅局限于资产转账、信息追溯等领域,新型商业化应用不断涌现,视频、图片、医疗信息等大体量数据也越来越多地需要存储于区块链中。大规模分布式数据的存储和管理需求,使得区块链数据处理的时间和空间消耗问题越来越突出。因此,BUMO在数据存储设计中充分考虑到上述挑战,提出了大规模数据的差异化分布式存储体系Trailer。
Trailer首先对数据进行差异化分类处理,根据数据特点将其分为链上数据和链下数据。链上数据指实时存储于区块链节点的数据,比如账户、交易、区块头等基础链数据等;链下数据指不需实时存储于区块链节点的数据,比如存在性证明所需的历史视频数据等。但是,链下数据需要进行链上数据锚定,即将数据哈希值作为链上数据存储。其次,针对链上数据和链下数据的不同特点,选择不同的存储引擎,并进行接口封装和成本计算,满足大规模数据差异化存储需求的同时,具有较高的用户友好性。
1. 数据差异化定义
链上数据指实时存储于区块链节点的数据,区块链节点具备对链上数据的全拷贝能力,是能形成区块有效性证明的最小单元数据集合,典型数据如下:
●链基础数据: 比如账户、交易、区块头等直接数据,账户树、交易树及区块生成证明等区块有效性证明数据,以及供用户数据查询必要的索引数据等;
●智能合约及 合约 *** 作数据:智能合约的图灵完备脚本及其依赖数据均需要在链上存储,以保证其可执行和去中心化特性,随时提供智能合约访问能力;
●资产类数据: 这类数据存储需求量小,但对安全性要求极高,链上存储可以在提供充分冗余存储的同时提供安全的计算环境;
●简短静态数据: 比如交易备注等通常数据量很小的数据。
链下数据指无需实时存储于区块链节点的数据,通常是使用频率较低、存储体量相对较大的数据集合,比如存在性证明所需的历史视频数据等。链下数据通常需要进行链上数据锚定,即将数据哈希值、数据索引|等作为链上数据存储。典型数据如下:
●大体量数据: 该类数据特点是所需的存储空间大,比如视频、图片、志、地理位置等数据;
●区块历史数据:使用频率低,户无需实时查询,链下数据可作为备份手段;
●保密性要求较高数据: 比如个人身份信息,医疗数据等,链下数据脱敏存储,只在验证请求或授权请求时提供原始数据证明。
2. 数据分类筛选
数据存储结构图
存储适配器模块负责筛选、甄别链上数据和链下数据,并分别进行存储 *** 作。一般而言,区块链网络中的参与节点均会选择使用链上存储,而链下存储的选择则与用户应用方式紧密相关。链下存储按照数据存储的开放程度,可分为私有存储和共享存储两类。链下私有存储指用户搭建并进行运维的存储系统,具有前期投入大、运维成本高的特点;链下共享存储指无需用户自身投入建设,通过付费等方式获取的共享存储系统。存储适配器模块的主要作用如下:
●接口封装:将复杂的内部存储功能封 装为少量简单易用的用户服务接口;
●数据分类: 对链上数据及链下数据进行分类,如需进行链下数据存储,需进一步选择链下共享存储或者链下私有存储。在链下数据存储前,需先将待存储数据进行哈希运算,进而将哈希值作为链上数据进行存储 *** 作;
●成本计算: 支持对链上数据存储所需的成本(比如Gas值), 以及共享存储需支付的费用等进行综合计算,提供给用户作为成本参考。
3. 链上数据存储实现
针对链上数据存储需求,BUMO基于TIDB技术构建了专用的分布式存储引擎数据库ChainDB。TIDB 是受Google Spanner/ F1论文启发而设计的开源分布式HTAP (Hybrid TransacTIonal and AnalyTIcal Processing)数据库。ChainDB 具备如下能力:
●水平d性扩 展:通过简单配置即可实现新节点添加并且能在不停止终端业务的前提下,动态添加存储节点,提高整体的数据存储能力;
●高可用性: 数据存储引擎可在保证大多数副本不丢失的前提下实现故障的自动恢复;
●分布式事务: 采用优化后的Percolator模型支持分布式事务,同时使用乐观锁技术,在事务执行过程中不会检测写冲突,只在提交过程中进行冲突检测,冲突双方中较早完成提交的一方会率先写入成功,另一方会尝试重新执行整个事务,具备高效的事务处理能力。
4. 链下数据存储实现
BUMO结合IPFS等现有分布式存储技术,有效满足链下数据存储需求。不同于链上数据的相对传统数据库存储方案,IPFS 等存储体系是永久、去中心化保存和共享文件的技术,是内容可寻址、版本化、点对点超媒体的分布式存储协议,基于该类技术构建的链下数据存储弓|擎具备如下能力:
●降低存储空间: 通过对文件生成唯一哈希 值的方式标识文件,取代传统的通过文件位置标识文件的方式,有效降低存储空间;
●提高存储多样性: 支持更多业务数据类型及大体星数据的存储(视频、照片、日志地理位置) ;
●降低硬件成本: 支持水平扩展,对存储节点的硬件要求较低;
●多种部署形式: 在提供共享服务能力的同时,也可以利用该技术进行私有化部署;
●易于扩 展维护:满足代码开源、版本可追溯等开源特征。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)