木星链 木星链
Ctrl+D收藏木星链
首页 > 火必 > 正文

区块链:技术 | 链上账本数据写入慢?试试LSM

作者:

时间:1900/1/1 0:00:00

导读

首先问大家一个小问题?区块链的账本数据存储格式主要是什么类型的?

相信聪明的你一定知道是Key-Value类型存储。

下一个问题,这些Key-Value数据在底层数据库如何高效组织?

答案就是我们本期介绍的内容:LSM。

LSM是一种被广泛采用的持久化Key-Value存储方案,如LevelDB,RocksDB,Cassandra等数据库均采用LSM作为其底层存储引擎。

据公开数据调研,LSM是当前市面上写密集应用的最佳解决方案,也是区块链领域被应用最多的一种存储模式,今天我们将对LSM基本概念和性能进行介绍和分析。

LSM-Tree背景:追本溯源

LSM-Tree的设计思想来自于一个计算机领域一个老生常谈的话题——对存储介质的顺序操作效率远高于随机操作。

如图1所示,对磁盘的顺序操作甚至可以快过对内存的随机操作,而对同一类磁盘,其顺序操作的速度比随机操作高出三个数量级以上,因此我们可以得出一个非常直观的结论:应当充分利用顺序读写而尽可能避免随机读写。

Figure1Randomaccessvs.Sequentialaccess

声音 | 南方报业:将运用区块链等技术 提升新闻传播效能:南方报业发文称,2020年将持续实施移动优先、数据优先、用户优先战略,促媒体融合发展取得阶段性成效。着眼提升传播效能,构建立体传播新格局,大力实施“提升技术能力,服务融合转型”工程,将大数据、区块链、云计算、人工智能等新技术广泛运用到新闻采集、生产、分发、接收、反馈中,形成智慧化的内容生产和传播模式,全面提升传播效能。[2020/1/21]

考虑到这一点,如果我们想尽可能提高写操作的吞吐量,那么最好的方法一定是不断地将数据追加到文件末尾,该方法可将写入吞吐量提高至磁盘的理论水平,然而也有显而易见的弊端,即读效率极低,我们称这种数据更新是非原地的,与之相对的是原地更新。

为了提高读取效率,一种常用的方法是增加索引信息,如B+树,ISAM等,对这类数据结构进行数据的更新是原地进行的,这将不可避免地引入随机IO。

LSM-Tree与传统多叉树的数据组织形式完全不同,可以认为LSM-Tree是完全以磁盘为中心的一种数据结构,其只需要少量的内存来提升效率,而可以尽可能地通过上文提到的Journaling方式来提高写入吞吐量。当然,其读取效率会稍逊于B+树。

LSM-Tree数据结构:抽丝剥茧

声音 | 中科院院士:加快融合区块链等技术 有利于助推智慧社会高速发展:12月18日,以“智聚赋能 创新未来”为主题的2019山东省创新驱动发展高峰论坛在山东济南召开。围绕“密码学与区块链技术”主题,中国科学院院士王小云在现场表示,密码是保障网络与信息安全的核心技术和基础支撑,而区块链技术创造性地解决了如何在无许可环境下达成共识的问题。在发展供应链金融方面,区块链可解决多个行业痛点,加速普惠金融。加快融合区块链、人工智能等信息技术,有利于助推智慧社会高速发展。(中新网济南)[2019/12/18]

图2展示了LSM-Tree的理论模型(a)和一种实现方式(b)。LSM-Tree是一种层级的数据结构,包含一层空间占用较小的内存结构以及多层磁盘结构,每一层磁盘结构的空间上限呈指数增长,如在LevelDB中该系数默认为10。

Figure2LSM与其LevelDB实现

对于LSM-Tree的数据插入或更新,首先会被缓存在内存中,这部分数据往往由一颗排序树进行组织。

当缓存达到预设上限,则会将内存中的数据以有序的方式写入磁盘,我们称这样的有序列为一个SortedRun,简称为Run。

随着写入操作的不断进行,L0层会堆积越来越多的Run,且显然不同的Run之前可能存在重叠部分,此时进行某一条数据的查询将无法准确判断该数据存在于哪个Run中,因此最坏情况下需要进行等同于L0层Run数量的I/O。

为了解决该问题,当某一层的Run数目或大小到达某一阈值后,LSM-Tree会进行后台的归并排序,并将排序结果输出至下一层,我们将一次归并排序称为Compaction。如同B+树的分裂一样,Compaction是LSM-Tree维持相对稳定读写效率的核心机制,我们将会在下文详细介绍两种不同的Compaction策略。

声音 | 解放日报:我们要支持真正的区块链技术 而不是投资局:解放日报今日发表文章《真正的区块链不是那些“比特币”》。文中称区块链技术并不复杂,但找到合适的应用场景,可能还需要有一个很长的过程。比如海关可以利用区块链解决贸易真实性问题,供应链可以利用区块链解决事故追溯问题,保险可以利用区块链解决保赔问题,这些都是将技术与产业结合,解决实际问题的例子,也是区块链未来的发展方向。但几乎可以肯定的是,在行业火热的同时,必然也会有一些打着区块链旗号的投资局出现。请记住,我们要支持的,是真正的区块链技术,而不是那些加密数字货币。对于这一点,监管层和投资者都一定要保持清醒和冷静,做到心中有数,风险可控。那些投机取巧,只想靠区块链捞一笔的,只会成为区块链发展中被挤出的泡沫。[2019/10/27]

另外值得一提的是,无论是从内存到磁盘的写入,还是磁盘中不断进行的Compaction,都是对磁盘的顺序I/O,这就是LSM拥有更高写入吞吐量的原因。

Levelingvs.Tiering:一读一写,不分伯仲

LSM-Tree的Compaction策略可以分为Leveling和Tiering两种,前者被LevelDB,RocksDB等采用,后者被Cassandra等采用,称采用Leveling策略的的LSM-Tree为LeveledLSM-Tree,采用Tiering的LSM-Tree为TieredLSM-Tree,如图3所示。

动态 | 精准信息:不开发区块链底层技术 目前主要是代维支付方面:据财联社消息,6连板的精准信息回复深交所关注函称,公司区块链业务主要方向是基于区块链技术开发在行业客户的应用平台,不开发底层技术,目前主要是代维支付方面,属于私有链范畴,因此要求既要了解区块链技术又要对客户运营模式熟悉,这是未来需要竞争的方面。[2019/4/7]

Figure3两种Compaction策略对比

▲Leveling

简而言之,Tiering是写友好型的策略,而Leveling是读友好型的策略。在Leveling中,除了L0的每一层最多只能有一个Run,如图3右侧所示,当在L0插入13时,触发了L0层的Compaction,此时会对Run-L0与下层Run-L1进行一次归并排序,归并结果写入L1,此时又触发了L1的Compaction,此时会对Run-L1与下层Run-L2进行归并排序,归并结果写入L2。

▲Tiering

反观Tiering在进行Compaction时并不会主动与下层的Run进行归并,而只会对发生Compaction的那一层的若干个Run进行归并排序,这也是Tiering的一层会存在多个Run的原因。

▲对比分析

相比而言,Leveling方式进行得更加贪婪,进行了更多的磁盘I/O,维持了更高的读效率,而Tiering则相正好反。

本节我们将对LSM-Tree的设计空间进行更加形式化的分析。

LSM层数

沃尔玛利用区块链分类账技术 可以将产品追溯回农场:沃尔玛公司开始利用在线分类账技术来管理芒果,浆果和几十种其他产品的供应链数据。这个系统是由国际商业机器公司(International Business Machines Corp.)制造,在沃尔玛测试区块链可追溯性的过程中,沃尔玛员工可以检查货架上或后台的产品,并用零售商的智能应用程序追溯到农场。在产品召回过的过程中可以追溯不合格食物的来源。[2018/2/7]

布隆过滤器

LSM-Tree应用布隆过滤器来加速查找,LSM-Tree为每个Run设置一个布隆过滤器,在通过I/O查询某个Run之前,首先通过布隆过滤器判断待查询的数据是否存在于该Run,若布隆过滤器返回Negative,则可断言不存在,直接跳到下个Run进行查询,从而节省了一次I/O;而若布隆过滤器返回Positive,则仍不能确定数据是否存在,需要消耗一次I/O去查询该Run,若成功查询到数据,则终止查找,否则继续查找下一个Run,我们称后者为假阳现象,布隆过滤器的过高的假阳率会严重影响读性能,使得花费在布隆过滤器上的内存形同虚设。限于篇幅本文不对布隆过滤器做更多的介绍,直接给出FPR的计算公式,为公式2.

其中是为布隆过滤器设置的内存大小,为每个Run中的数据总数。读写I/O

考虑读写操作的最坏场景,对于读操作,认为其最坏场景是空读,即遍历每一层的每个Run,最后发现所读数据并不存在;对于写操作,认为其最坏场景是一条数据的写入会导致每一层发生一次Compaction。

核心理念:基于场景化的设计空间

基于以上分析,我们可以得出如图4所示的LSM-Tree可基于场景化的设计空间。

简而言之,LSM-Tree的设计空间是:在极端优化写的日志方式与极端优化读的有序列表方式之间的折中,折中策略取决于场景,折中方式可以对以下参数进行调整:

当Level间放大比例时,两种Compaction策略的读写开销是一致的,而随着T的不断增加,Leveling和Tiering方式的读开销分别提高/减少。

当T达到上限时,前者只有一层,且一层中只有一个Run,因此其读开销到达最低,即最坏情况下只需要一次I/O,而每次写入都会触发整层的Compaction;

而对于后者当T到达上限时,也只有一层,但是一层中存在:

因此读开销达到最高,而写操作不会触发任何的Compaction,因此写开销达到最低。

Figure4LSM由日志到有序列的设计空间

事实上,基于图4及上文的分析可以进行对LSM-Tree的性能进一步的优化,如文献对每一层的布隆过滤器大小进行动态调整,以充分优化内存分配并降低FPR来提高读取效率;文献提出“LazyLeveling”方式来自适应的选择Compaction策略等。

限于篇幅本文不再对这些优化思路进行介绍,感兴趣的读者可以自行查阅文献。

小结

LSM-Tree提供了相当高的写性能、空间利用率以及非常灵活的配置项可供调优,其仍然是适合区块链应用的最佳存储引擎之一。

本文对LSM-Tree从设计思想、数据结构、两种Compaction策略几个角度进行了由浅入深地介绍,限于篇幅,基于本文之上的对LSM-Tree的调优方法将会在后续文章中介绍。

作者简介叶晨宇来自趣链科技基础平台部,区块链账本存储研究小组

参考文献

.O’NeilP,ChengE,GawlickD,etal.Thelog-structuredmerge-tree(LSM-tree).ActaInformatica,1996,33(4):351-385.

.JacobsA.Thepathologiesofbigdata.CommunicationsoftheACM,2009,52(8):36-44.

.LuL,PillaiTS,GopalakrishnanH,etal.Wisckey:Separatingkeysfromvaluesinssd-consciousstorage.ACMTransactionsonStorage(TOS),2017,13(1):1-28.

.DayanN,AthanassoulisM,IdreosS.Monkey:Optimalnavigablekey-valuestore//Proceedingsofthe2017ACMInternationalConferenceonManagementofData.2017:79-94.

.DayanN,IdreosS.Dostoevsky:Betterspace-timetrade-offsforLSM-treebasedkey-valuestoresviaadaptiveremovalofsuperfluousmerging//Proceedingsofthe2018InternationalConferenceonManagementofData.2018:505-520.

.LuoC,CareyMJ.LSM-basedstoragetechniques:asurvey.TheVLDBJournal,2020,29(1):393-418.

标签:区块链TREERUNING区块链技术通俗讲解中山大学TreeSwapRunBloxhotcoinglobal交易所怎么样

火必热门资讯
稳定币:利弊如何权衡?解读美国最新稳定币监管法案

美国国会议员提出了一项名为《稳定币网络共享和银行执照执行法》的新法案,将要求稳定币发行商在发行稳定币之前必须获得银行特许执照并获得监管部门的批准.

1900/1/1 0:00:00
加密货币:加密投资者:黑客入侵了美国财政部,而比特币永远不会遭遇黑客攻击

关于黑客入侵了美国财政部的消息,加密货币投资者快速地给出了回应。根据路透社的一份报告,从熟悉此次调查的三位人士那里了解到,由一个外国政府支持的“老练的黑客团体”能够攻击美国财政部以及国家电信与信.

1900/1/1 0:00:00
加密货币:从加密项目数据指标,看如何对加密资产进行估值

原文标题:《Howtoanalyzecryptoassets》原文作者:HenriHyvarinen、AleksisTapper和RobertValta.

1900/1/1 0:00:00
SWAP:观察 | 十字路口上的Uniswap

作者:Azuma来源:Odaily星球日报 AndreCronje无疑是业界过去半个月内最响亮的名字.

1900/1/1 0:00:00
比特币:调查:67%的千禧一代选择比特币而非黄金 预计带来60万亿美元财富转移

近日,独立国际金融咨询公司deVereGroup发表了针对千禧一代的一项研究结果。结果中称:千禧一代更喜欢比特币而不是黄金作为避险资产.

1900/1/1 0:00:00
NFT:精析DeFi协议Warp Finance“预言机”攻击事件

北京时间12月18日6时许,DeFi借贷协议WarpFinance遭到黑客攻击,造成了近800万美元的资产损失.

1900/1/1 0:00:00