LSM Tree是一种用于高写入吞吐量的数据库存储引擎,广泛应用于现代分布式数据库系统。其核心思想是将写入操作缓存在内存中,并定期批量写入磁盘,减少磁盘 I/O 操作,提高写入性能。因其高效的写入性能和适应大规…
"The log-structured merge-tree (LSM-tree)" by Patrick O'Neil是LSM Tree的开创性论文,介绍了LSM Tree的基本结构和设计理念。 论文首先将LSM树和数据库中传统使用的B树索引结构进行的对比,LSM树大大减少了磁盘臂的移动,从而提高了数据写入的成本性能,其最大优势在于写入性能。通过批量写入和合并操作,它能够高效...
本文是对VLDB22的文章——Spooky: Granulating LSM-Tree Compactions Correctly的翻译,在个别地方对原文内容作了修改以更方便理解,同时在一些地方给出了笔者的思考和对论文的理解。 本文重点关注Compaction的粒度——Full Merge还是Partial Merge? 关键名词和符号介绍: N:LSM-tree中总数据大小(bytes) B:LSM-tree中的...
LSM-Tree 英文全称是 Log Structured Merge Tree (中文:日志结构合并树),是一种分层,有序,面向磁盘的数据结构,其核心思想是充分了利用了,磁盘批量的顺序写要远比随机写性能高的技术特点,来实现高写入吞吐量的存储系统的核心。 具体的说,原理就是针对硬盘,尽量追加数据,而不是随机写数据,追加速度要比随机写的速度...
本系列教程主要是分享关于“数据存储与检索”相关的知识,主要会涉及b+树(b+ tree)存储引擎、lsm树(lsm tree)存储引擎,涉及的工程项目有:boltdb、innodb、buntdb、bitcask、moss、pebble、leveldb等。本系列教程是会按照理论结合实践的过程来录制。每一部分会先介绍其理论知识:包括为什么?是什么?怎么做?其次会介绍实际...
基于LSM-tree的存储引擎自从Google发表了bigtable论文之后, 就变得异常火热起来, 工业界和学术界先后做了大量的研究和优化. 为此, 我计划把比较知名的论文整理下, 整体学习和思考下业界的研究思路和成果. 这篇文章总结的两篇论文思路大体一致, 首先从数学角度对LSM-tree进行建模, 然后来找到优化点, 虽然里面公式比较...
LSM-Tree全称为“Log Structured Merge Tree”,是一种基于磁盘存储的数据结构。1996年Patrick O’Neil等人在信息系统期刊上发表了一篇题名为“Log Structured Merge Tree”的论文,首次提出LSM-Tree结构。相比于传统的B+树,LSM-Tree具有更好的写性能,可以将离散的随机写请求转换成批量的顺序写操作,无论是在RAM、HDD...
那就是既然LSM-tree模型虽然实用, 但是存在非常严重的读写放大问题, 而产生读写放大的根源就是需要不停的compact. 那如果把value独立存储到一个叫做vLog的文件里, 使用lsm-tree只存储索引的话, 就可以极大的减少lsm-tree后台compact的开销了. 不过想法虽然简单, 却仍然有不少问题需要考虑, 这篇论文针对这些问题给...
存在写放大和空间放大问题, 因此LSM-tree的研究往往在读放大, 写放大和空间放大之间进行折中. 这篇论文观察到有很多workload, 他们的key存在所谓的semi-sorted特点, 具体的来说就是很多key存在共同的前缀, 比如推荐系统的特征存储, 文件系统的元数据存储, 图数据库存储等. 针对semi-sorted特点, 这篇论文提出了更...
LSM-tree 是专门为 key-value 存储系统设计的,key-value 类型的存储系统最主要的就两个个功能,put(k,v):写入一个(k,v),get(k):给定一个 k 查找 v。 LSM-tree 最大的特点就是写入速度快,主要利用了磁盘的顺序写,pk掉了需要随机写入的 B-tree。关于磁盘的顺序和随机写可以参考:《硬盘的各种概念...