LSM-Tree介绍

LSM树是一种为提高写入性能而设计的分层、有序的硬盘数据结构,常用于大数据和分布式存储系统。通过批量写入内存,定时合并到磁盘,利用磁盘顺序访问优势,减少随机写入。虽然牺牲了部分读取速度,但在写多读少的场景下表现出色。优化策略包括使用布隆过滤器提高查询效率和多路归并减少读取复杂性。

前言

2006年的OSDI有两篇Google的论文,分别是BigTable和Chubby。Chubby是一个分布式锁服务,基于Paxos算法;BigTable是一个用于管理结构化数据的分布式存储系统,构建在GFS、Chubby、SSTable等google技术之上。相当多的google应用使用了BigTable,比如Google Earth和Google Analytics,因此它和GFS、MapReduce并称为谷歌技术"三宝"。

Google发布的BigTable这篇论文的一个很有价值的方面是它使用的文件组织,通常被称为日志结构的合并树(Log Structured-Merge Tree)。LSM现在作为主要的文件组织策略在许多产品中使用,比如HBase, Cassandra, LevelDB, SQLite,甚至MongoDB 3.0都在收购Wired Tiger后附带了可选的LSM引擎。LSM树的有趣之处在于它脱离了统治该领域几十年的二叉树风格的文件组织,本篇文章主要介绍下其大概的原理实现。

 

LSM-tree

日志结构的合并树(LSM-tree)是一种分层的、有序的、基于硬盘的数据结构,它的核心思路其实非常简单,首先写入数据到内存中,不需要每次有数据更新就必须将数据写入到磁盘中,等到积累到一定阈值之后,再使用归并排序的方式将内存中的数据合并追加到磁盘队尾(因为所有待排序的树都是有序的,可以通过合并排序的方式快速合并到一起)。

图片

LSM-tree为什么这么设计呢,这么设计有什么好处呢? 

我们知道一般情况下磁盘在随机操作时速度很慢,但在顺序访问时速度很快,其实无论是磁盘还是主存(虽然程度较轻),随机和顺序这两种访问方式之间都存在一条鸿沟,如下图引入ACM的测试报告,顺序磁盘访问要比随机访问快很多。所以磁盘有如下技术特性:对磁

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值