深入理解 LSM 树:现代存储系统的基础

引言

LSM树的背景和重要性

十多年前,谷歌发布了大名鼎鼎的"三驾马车"的论文,分别是GFS(2003年),MapReduce(2004 年),BigTable(2006年),为开源界在大数据领域带来了无数的灵感.

“BigTable” 的论文中作者提到了Bigtable中用于存储更新数据的机制,这与LSM树(Log-Structured Merge Tree)的概念类似,作者明确提到了LSM树,并将其与Bigtable的设计进行了比较。
在这里插入图片描述

Bigtable使用内存表(memtables)和排序字符串表(SSTables)来存储对平板电脑(tablets)的更新,这种方式类似于日志结构合并树(Log-Structured Merge Tree,LSM树)存储索引数据更新的方式。在这两种系统中,排序后的数据首先在内存中进行缓冲,然后再写入磁盘,而读取操作需要合并内存和磁盘中的数据

在面对亿级别之上的海量数据的存储和检索的场景下,我们选择的数据库通常都是各种强力的NoSQL,比如Hbase,Cassandra,Leveldb,RocksDB等等,这其中前两者是Apache下面的顶级开源项目数据库,后两者分别是Google和Facebook开源的数据库存储引擎。

而这些强大的NoSQL数据库都有一个共性,就是其底层使用的数据结构,都是仿照“BigTable”中的文件组织方式来实现的,也就是我们今天要介绍的LSM-Tree。

LSM树的基础概念

什么是LSM树

LSM-Tree全称是Log Structured Merge Tree,是一种分层,有序,面向磁盘的数据结构,其核心思想是充分了利用了:磁盘批量的顺序写要远比随机写性能高出很多

磁盘顺序写:
将消息先写入到操作系统的页缓存中,由页缓存直接映射到磁盘文件,不需要在用户空间和内核空间直接拷贝消息,也可以认为消息传输是发送在内存中的

在这里插入图片描述

磁盘随机写:
磁盘随机写入是指数据写入磁盘时,写入位置不连续,磁盘的磁头需要频繁移动到不同位置进行写入。
在这里插入图片描述

LSM树的核心特点是利用顺序写来提高写性能,但因为分层(此处分层是指的分为内存和文件两部分)的设计会稍微降低读性能,但是通过牺牲小部分读性能换来高性能写,使得LSM树成为非常流行的存储结构。

如图所示
如图所示,顺序内存读写速度>随机内存读写≈顺序io读写>>随机io读写

LSM-Tree的基础结构

LSM-Tree 的基本结构如下图所示:

在这里插入图片描述
LSM 树(Log-Structured Merge Tree)由多个层级的

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值