共计 2963 个字符,预计需要花费 8 分钟才能阅读完成。
—— Part1 现状 ——
区块链能够视作一个在分布式环境下泛滥可信节点独特保护的且不可篡改的账本。在区块链零碎中,数据以区块作为根本单位,区块链零碎利用 levelDB 基于 Key-Value 构造的数据库存取数据,通过多节点冗余存储实现账本可信,然而随着区块链运行工夫的增长,区块链的存储容量将呈线性增长,且这种数据的增长速度甚至会超过存储介质容量增长的速度,因而,区块链数据存储将成为限度区块链技术倒退的重要因素。
面对这一辣手的问题,数据归档技术应运而生,什么是数据归档呢?
—— Part2 什么是数据归档——
数据备份的概念大家应该是比拟理解的,随着数字化的推动,企业对数据的敏感度逐步加强,数据备份零碎曾经成为各大中型企业的必备零碎。然而正如咱们对数据归档认知的有余,企业对于数据归档的应用也不如数据备份宽泛。
备份的目标是为了复原,保障在零碎出现意外状况时业务的间断停顿。对于企业来说,每天产生的大量数据,其实绝大部分的使用率很低,然而,出于一些非凡起因,这些数据却必须保留以备查问。简言之,归档的目标是为了服务品质和保证数据的可治理,使得运行、保护、投入整体的老本升高,如何最大化应用存储,保证数据的拜访。数据归档,即数据的应用。然而如何标准的归档数据呢?咱们就得具备相应的归档准则。
数据存储:无论是备份还是归档,数据的完整性必须失去保障,且需在规定工夫内保证数据的平安存储。保证数据的完整性、时效性及存储的安全性。
数据易读取:尽管大部分数据反复读取可能性低,但归档零碎仍旧不是一个备份零碎,必须保障在须要的时候能不便地读取数据。保证系统数据的可读性。
数据可扩大:因为存在不同品种的数据,且数据也是实时变动且增长迅猛,因而为满足企业需要,还应具备可扩大的要求。
数据非法:任何的企业零碎运作都应该恪守各项规章制度,要恪守政府和行业指定的各项法律、法规及各种规章。
—— Part3 实现难点——
正如大家所知,区块链存在数据单向增长(只增不减)的个性,这样数据量的增多会导致系统磁盘空间占用率高,所以须要研发区块链专用数据归档技术,将数据进行“冷热拆散”(冷热拆散绝对于数据来说,“冷数据”即能够进行归档的数据,在应用中相较于热数据应用的频率低的数据。冷热拆散即数据实现不同应用频率的数据离开存储),保障系统的高效牢靠运行;
另外,因为区块链是一个在分布式环境下泛滥可信节点独特保护的且不可篡改的账本,所以传统的数据归档技术无奈解决多个节点数据归档某一范畴数据而账本状态放弃一致性的问题,在理论状况中还存在区块链上繁多节点数据归档导致的多节点数据同步时账本状态一致性的问题。
总结:
- 区块链存在数据单向增长,须要进行冷热拆散存储;
- 分布式环境下,难以保障所有节点实时进行数据归档且保证数据状态的一致性;
- 繁多节点数据归档导致多节点数据同步时状态一致性难以保障。
—— Part4 数据归档的架构解读——
理解了数据归档的基本概念,那么,在区块链中它是如何运作的呢?数据归档性能的主要职责是将一部分旧的线上数据移到线下转存。对此,趣链科技提出了区块链数据归档的办法,使得整个区块链零碎能在不停机状况下,将区块链数据划分为链上、链下两局部,热数据仍保留在链上,但冷数据能够存储在低成本的硬件设施上,进行动静的数据归档。而且,通过数据调度层,能够很好地实现热数据和冷数据的灵便拜访,热数据间接通过平台拜访,冷数据则通过归档数据浏览技术浏览。另外,每个节点能够自主、屡次地对数据进行归档,从而使得零碎的链上数据量维持在一个稳固程度,无效开释磁盘空间。
为更形象地解说数据归档技术,咱们以趣链数据归档为解说内容进行:
区块链的数据归档形式是一种基于状态备份的归档办法。
简略来说,用户想要对某一个区块链节点(如图 B100)做数据归档,必须在过来某一时刻对区块链制作一个状态快照(B0-100)(快照:区块链状态数据库在某一个区块号上的备份;创世状态:节点以创世状态为根底状态;世界状态:区块链账本状态,每一次节点状态的变迁);
进行数据归档时,能够将快照点之前所有的区块链数据(包含区块数据、交易数据、回执数据等)进行归档转储,以实现区块链节点存储压力的减负。后续未归档第一个区块的节点(B101)成为新链的 1 号区块。
▲ 数据归档流程
制作快照:
- 零碎获取最近间隔的快照,即比以后要做快照的区块号小的最大的高度,返回该快照的信息。若没有任何快照,则以 0 号区块数据为根底新建快照并作为 start,其制作的高度为 end。
- 快照拷贝以单纯的磁盘 io 拷贝一份第一步取得的账本到新文件夹,并作为后续账本操作的根底。
- 依据日志数据,遍历线上[start,end],制作到账本,且同时遍历区块的 merkleRoot(每个区块都有一个 merkle Tree,区块头的 Merkle Root 也称为根哈希值),保障账本的正确性。
查看快照:
遍历 snashot 数据库中的状态数据,从新计算出 bucketTree 的根哈希,与最新的区块哈希比照,以保障制作的快照与理论的账本是否统一。
数据归档:
如图,用户发动数据归档申请,要求将快照点前所有的区块链数据进行转储归档。该节点将所需转储的区块数据以及相应的交易回执等数据转储,且将本地的创世状态内容更新为之前备份失去的快照状态。
如果说区块链失常的状态变迁是状态起点不停向前更新的过程,那么数据归档就是一个区块链状态终点向起点更新的过程。上面是一个比拟典型的相干数据平台利用案例:
数百家核心数据,存量数据 4T,日均 10GB,年均 3.6T 数据上链,因为链上存储通常采纳 SSD 硬盘,导致存储老本昂扬。针对此问题,咱们采纳定期归档的形式对链上数据进行归档,由图可见,咱们采纳了分段存储的形式,平台可对任意的某段数据进行归档操作并保障各节点数据状态的一致性。保障链上数据稳固在 1T 左右,无效地开释磁盘空间的同时,极大地升高了老本,减少了零碎性能。
上述的数据归档次要是针对区块链数据,而部署在区块链上的智能合约,同样有较大的存储需要用来记录宏大的业务数据。针对于这部分数据,趣链提供了另外一种归档机制,用户仅需发动一笔带有非凡标记的交易,调用智能合约中自定义的归档函数,即可实现合约数据的转储。合约编码者能够在合约中实现任意逻辑的归档函数,以满足不同的业务需要。
—— Part5 总结 ——
在本片中较为具体地解说了数据归档技术在区块链中的应用,不仅实现了数据的冷热拆散存储,保障了繁多节点的数据归档而放弃整个区块链所有节点的账本状态的一致性,而且实现了分段存储的模式,使得数据在任意范畴内被归档。
从设计角度来看,数据归档后不影响原先链上数据的正确性与连续性,而且反对不同节点、不同分区自定义归档序列的范畴。
从性能角度来看,数据归档次要解决区块链链上数据的冗余问题。缩小链上数据存储压力,将过期数据和历史数据进行线下的存储,冲破链上存储的限度。并且,并发执行数据归档过程中的各种操作,晋升了归档的效率。
从利用场景来看,数据归档实用于数据冗余存储、链式递增、时效无限等状况导致的存储资源被大量过期数据占用的痛点。
对于数据归档或者区块链技术有趣味的小伙伴,可加小助手桔子(18458407117)退出技术交换群,欢迎您和咱们共享观点,共论区块链的有限将来~
作者简介
陈少蔚
趣链科技根底平台部文档工程师