深入理解LSM存储模型

LSM(Log-Structured Merge Tree)是一种有效提高数据写性能的数据组织方式

为何用LSM存储模型

    先说哈希存储引擎 ,它是哈希表的持久化实现,支持增、删、改以及随机读取操作,但不支持顺序扫描,对应的存储系统为key-value存储系统。对于key-value的插入以及查询,哈希表的复杂度都是O(1),明显比树的操作O(n)快,如果不需要有序的遍历数据,哈希表则是最佳的选择。
    B树存储引擎是B树的持久化实现,不仅支持单条记录的增、删、读、改操作,还支持顺序扫描(B+树的叶子节点之间的指针),从而实现较快的搜索。
    LSM树(Log-Structured Merge Tree)存储引擎和B树存储引擎一样,同样支持增、删、读、改、顺序扫描操作。而且通过批量存储技术规避磁盘随机写入问题。LSM树和B+树相比,LSM树牺牲了部分读性能,但是写入性能得到了有效的提高。

    传统磁盘I/O是比较耗性能的,优化系统性能往往需要和磁盘I/O打交道,由于操作磁盘的速度远远低于CPU和内存,并且差距越来越大,磁盘I/O已经成为很多系统的瓶颈;与此同时磁盘高速缓存也迅速增加,进而很大一部分读请求是直接来自文件系统高速缓存的,并不需要磁盘访问操作,I/O的优化很大程度上着手于对写操作的优化。因此LSM树在分布式数据存储中得到广泛的应用。

存储过程:

     在内存中保存数据,再定时刷到磁盘,实现顺序IO操作,通过定期合并文件减少数据冗余;文件有序,保证读取操作相对快速

    1. 当有写操作(或update操作)时,写入位于内存的buffer,内存中通过某种数据结构(如skiplist)保持key有序

    2. 一般的实现也会将数据追加写到磁盘Log文件,以备必要时恢复

    3. 内存中的数据定时或按固定大小地刷到磁盘,更新操作只不断地写到内存,并不更新磁盘 已有文件。

    4. 随着越来越多写操作,磁盘上积累的文件也越来越多,这些文件不可写且有序。

    5. 定时对文件进行合并操作(compaction),消除冗余数据,减少文件数量。 一个后台进程负责将这些文件聚合成更大的文件,这样磁盘seek操作就限制在一定数目的存储文件上。存储在磁盘上的树结构也可以被分割成多个存储文件。因为所有的存储数据都是按照key排序的,因此在现有节点中插入新的keys时不需要重新进行排序。

搜索过程:

    先看是否命中内存,如果没命中内存,则到下一层的磁盘中搜索。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值