light as birdby Yipu Zhang

为什么要有LSM?LSM的背景

August 7, 2018

LSM,全名Log Structured Merge Tree。是一种被广泛应用在Leveldb、Rocksdb等存储引擎的文件组织策略(而非数据结构)。在了解LSM的具体实现前,有必要了解它的需求背景。

1.数据量的爆发性增长

随着移动设备、物联网的普及,互联网数据量爆发性增长。而传统数据库更加注重优化数据的读取效率,写入速度在面对大量级数据时往往力不从心。

2.硬件的发展趋势

由于传统计算机架构的缓存机制,商用服务器的主存越来越大(上百G),数据读取的速度在硬件优化下提升显著。使得上层的开发者把重心放在提升写入速度上。

3.硬盘的顺序写速度比随机写速度快

该事实对于磁盘(HDD)很好理解,因为在磁盘中定位数据需要移动磁头,顺序写只需要移动一次磁头,而随机写需要移动多次磁头。

对于固态硬盘(SSD),则是由于写放大的问题,随机写相比顺序写涉及更多的块,造成了更严重的写放大,降低写入速度。

总结

根据以上三点,需要有一种方法,能把数据的就地更新转化为顺序更新。当然除此之外,牺牲的读取性能也要尽可能少,不然直接写日志即可满足需求了。

LSM应运而生。

参考文章

Log Structured Merge Trees


Discuss on 𝕏  ·  Edit on GitHub