• 简体版 | 繁體版
  • 联系我们
  • 加入我们
  • 关于我们
  •  
  • 首页
  • 快讯
  • 价值号
  • 视频
  • 专题
  • DeFi优选
  • 滚动
  • 入驻价值号
  • 碳链APP
    微信公众号

    扫码下载App

  • 登录
  • 微信公众号

    微信公众号

导航
  • 首页
  • 快讯
  • 区块链+
  • 价值号
  • 视频
  • 专题
  • DeFi优选
碳链价值APP
专注服务于金融科技和区块链
立即打开

链上账本数据写入慢?试试LSM

碳链精选 •  2020-12-16
据公开数据调研,LSM是当前市面上写密集应用的最佳解决方案,也是区块链领域被应用最多的一种存储模式,本文将对LSM基本概念和性能进行介绍和分析。 趣链科技 1 小时前 区块链技术 存储 LSM 2858

导 读

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

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

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

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

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

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

LSM-Tree背景:追本溯源

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

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

Figure 1 Random access vs. Sequential access

考虑到这一点,如果我们想尽可能提高写操作的吞吐量,那么最好的方法一定是不断地将数据追加到文件末尾,该方法可将写入吞吐量提高至磁盘的理论水平,然而也有显而易见的弊端,即读效率极低(这也是许多数据库避免数据意外丢失的手段,因通常不需要对其进行读取,称为Journaling或WAL),我们称这种数据更新是非原地的(Out-of-place),与之相对的是原地更新(In-place)。

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

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

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

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

Figure 2 LSM与其LevelDB实现

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

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

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

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

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

Leveling vs. Tiering:一读一写,不分伯仲

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

Figure 3 两种Compaction策略对比

▲ Leveling

简而言之,Tiering是写友好型的策略,而Leveling是读友好型的策略。在Leveling中,除了L0的每一层最多只能有一个Run(Run为一组有序且不重叠的序列,可以考虑LevelDB中除了L0每一层中的SSTable都是有序且互相不重叠的,统称这些SSTable为一个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,维持了更高的读效率(每一层只有一个Run),而Tiering则相正好反。

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

LSM层数

布隆过滤器

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

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

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

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

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

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

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

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

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

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

Figure 4 LSM由日志到有序列的设计空间

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

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

小结

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

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

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

参考文献

[1]. O’Neil P, Cheng E, Gawlick D, et al. The log-structured merge-tree (LSM-tree)[J]. Acta Informatica, 1996, 33(4): 351-385.

[2]. Jacobs A. The pathologies of big data[J]. Communications of the ACM, 2009, 52(8): 36-44.

[3]. Lu L, Pillai T S, Gopalakrishnan H, et al. Wisckey: Separating keys from values in ssd-conscious storage[J]. ACM Transactions on Storage (TOS), 2017, 13(1): 1-28.

[4]. Dayan N, Athanassoulis M, Idreos S. Monkey: Optimal navigable key-value store[C]//Proceedings of the 2017 ACM International Conference on Management of Data. 2017: 79-94.

[5]. Dayan N, Idreos S. Dostoevsky: Better space-time trade-offs for LSM-tree based key-value stores via adaptive removal of superfluous merging[C]//Proceedings of the 2018 International Conference on Management of Data. 2018: 505-520.

[6]. Luo C, Carey M J. LSM-based storage techniques: a survey[J]. The VLDB Journal, 2020, 29(1): 393-418.

展开全文
打开碳链价值APP  查看更多精彩资讯
声明:本文内容为作者独立观点,不代表碳链价值立场,且不构成任何投资理财建议。
0 0
区块链技术存储LSM技术指南

扫一扫,分享到微信

相关推荐

DeFi火爆背后的3个系统运作和5个好处 深度

DeFi火爆背后的3个系统运作和5个好处

加密谷Live 2021-02-07 深度
DeFi区块链区块链技术CeFi智能合约
DeFi的人气如此之高,已经成为加密领域炙手可热的讨论话题之一。
新年推荐5本必读「金融科技」好书 深度

新年推荐5本必读「金融科技」好书

金融科技微洞察 2021-02-07 深度
金融科技区块链区块链技术产业区块链分布式经济
让五本金融科技好书驱散疫情的寒凉。
A16Z:5张图总结2020年的加密世界 深度

A16Z:5张图总结2020年的加密世界

加密谷Live 2021-01-14 深度
区块链区块链技术加密技术去中心化交易所比特币以太坊
对于加密技术来说,这是一个大年。

碳链快讯更多 ›

2021-04-10

莱特币2021年Q1报告:日均交易数、新建地址、推文数翻倍

2021-04-10

灰度在24小时内增持10亿美元BTC

2021-04-10

ZKSwap流动性挖矿加码活动于今日18:00已开启

2021-04-10

法院拒绝美SEC要求披露Ripple高管个人财务记录要求

2021-04-10

马斯克:快上月球了

2021-04-10

Ethermine矿池母公司Bitfly:网站前端和统计模块出现短时故障,挖矿收入未受影响

2021-04-10

韩国政府宣布打击「过热市场」中非法加密相关交易

2021-04-10

Compound锁仓量击穿100亿美元,创历史新高

2021-04-10

BTC持续上攻突破61000 USDT

2021-04-10

一名投资者在几分钟内对16枚CryptoPunk NFT出价630万美元

2021-04-10

区块链动作角色扮演游戏Mist将在KickPad平台进行IDO

2021-04-10

46%西班牙大公司赞成采用区块链和加密技术以提高自身安全性

2021-04-10

Ripple CTO:公司目前正在制定NFT策略

2021-04-10

研究公司:Coinbase估值或高达2300亿美元

2021-04-10

深圳数字人民币测试人群再扩容50万名

2021-04-10

汇丰在线交易平台已禁止购买MicroStrategy股票

2021-04-10

资产管理公司Kryptoin Investment Advisors向美SEC提交比特币ETF申请

2021-04-10

拉卡拉:目前已具备数字人民币交易全面受理能力

2021-04-10

美SEC开始将Paragon民事罚款发放给受害投资者

2021-04-10

Mirror将在Coinbase上市后为其股票COIN提供合成资产,由Band提供喂价

2021-04-10

报告:韩国家庭主妇投资者向子女学习比特币投资技巧

2021-04-10

VanEck比特币ETF申请初步评论期已结束,或将下个月决定是否批准

2021-04-10

美SEC开始审查WisdomTree比特币ETF

2021-04-10

Coinbase Custody现已支持RAMP存取款

2021-04-10

Coinbase现已支持1INCH、ENJ、NKN及OGN充提及交易

2021-04-10

PolkaDomain完成40万美元战略融资,Spark Digital Capital等参投

2021-04-10

美纽约对冲基金Third Point通过Coinbase旗下基金持有加密货币

2021-04-09

Occam Finance启动首个以太坊到Cardano跨链流动性桥

2021-04-09

比特大陆将于下周开售一批蚂蚁矿机S19j Pro

2021-04-09

欧洲央行董事会成员:比特币不是货币

2021-04-09

区块链打车创业公司MVL完成1500美元B轮融资

2021-04-09

巴基斯坦央行正在探索数字货币

2021-04-09

欧易OKEx DeFi播报:DeFi总市值1392.10亿美元,欧易OKEx平台MIR领涨

2021-04-09

欧易OKEx上线GAL、TRA 充值交易赢限量签名球衣

2021-04-09

央视财经《经济半小时》今晚将播出《400亿大案里的38岁“赌客”》

2021-04-09

趣链科技完成数亿元C轮融资,区块链独角兽企业诞生

2021-04-09

亿邦国际计划下周初发公开信回应做空报告指控

2021-04-09

九城宣布签署第四批比特币矿机购买备忘录

2021-04-09

新华财经:数字人民币试点一周年,落地近在咫尺

2021-04-09

Poly Network跨链资产总量突破37亿美金

2021-04-09

ZKSwap流动性挖矿额外追加600万ZKS,并将推出Layer2 稳定币协议

2021-04-09

美国家情报委员会:稳定币和私人数字货币对美元和欧元构成威胁

2021-04-09

斯里兰卡中央银行警告虚拟货币投资相关风险

2021-04-09

欧易 OKEx 旗下 Block Dream Fund 启动 1000 万美元 Filecoin 生态基金

2021-04-09

金融分析师:投资者正在以更快的速度积累比特币

2021-04-09

抵押贷款经纪公司Matrix宣布接受加密货币支付

2021-04-09

欧易OKEx交易大数据:BTC合约多空持仓人数比1.20,合约持仓总量为27.73亿美元

2021-04-09

易纲:将就数字货币的影响等问题开展研究

2021-04-09

加密钱包Exodus获美国SEC批准在钱包中发售A类普通股

2021-04-09

比特币锚定币的流通量突破19万枚

推荐文章

  • 专题报道:NFT大爆炸

    2021-03-24

  • 专题报道:聚焦两会区块链声音

    2021-03-04

  • 拜登将任命加密专家Gary Gensler为美SEC主席

    2021-01-13

  • 周小川:数字人民币之父

    2020-12-16

  • 变革时刻:信用卡巨头Visa宣布将稳定币USDC接入其6000万商家全球支付网络

    2020-12-03

价值号更多 ›

链集市ChainMarket
链集市ChainMarket
文章: 29
  • 银行业只是开始:60个可以被区块链变革的行业(下篇)
  • 深耕区块链2年、服务资产超3000亿:荷月科技的突围法宝是什么?
  • 区块链产业周刊|OSL DS香港证监会「持牌交易所」正式上线;韩国加密货币日交易量超过该国股市;穆长春针对数字人民币发表讲话
加密谷Live
加密谷Live
文章: 757
  • NFTs为什么值得艺术家关注?
  • NFTs革命刚刚开始:混合现实技术为收藏品提供了更多机会
  • 简析BTC和山寨币周期是否一致
蔡维德
蔡维德
文章: 74
  • 从美联储央行数字货币思想看区块链设计原则:下一代区块链系统(一)
  • IMF《跨境支付的数字货币:宏观金融的影响》报告解读
  • 美国银行体系的拆分以及稳定币评级系统:新型货币战争进入第二阶段 (三)
换一批

热门标签

新基建 比特币 以太坊 矿业 DeFi 共识对话 区块链+ 研报 美联储 央行数字货币 无限QE 加密衍生品 AI 云计算 大数据 5G 政策 交易所 稳定币 电子支付 Libra 算力产业 联盟链 公链 区块链 加密货币 Nervos Cosmos EOS STO

邮件订阅

及时、全面、专业、准确的资讯与数据,致力于为区块链爱好者以及数字货币投资者提供最好的服务。

App内打开

邮件订阅

及时、全面、专业、准确的资讯与数据,致力于为区块链爱好者以及数字货币投资者提供最好的服务。

Moshou

碳链价值是集资讯、行情、数据于一身的区块链信息服务平台,我们追求及时、全面、专业、精确的资讯与数据,致力于为区块链创新者和数字货币投资者提供优质的服务。

关于我们 加入我们 联系我们 隐私条款

行业伙伴

微信公众号

扫一扫关注微信公众号

Copyright © 2018-2020 碳链价值 京ICP备18046423号
下载碳链App

下载碳链App

微信公众号

微信公众号

微信公众号

微信公众号

打赏文章作者

支付宝打赏二维码 支付宝扫一扫打赏
微信打赏二维码 微信扫一扫打赏

# 热门搜索 #

央行数字货币 比特币 DeFi 以太坊 区块链