美文网首页
levelDB的LSM文件树浅析

levelDB的LSM文件树浅析

作者: 散入风中 | 来源:发表于2018-08-23 11:34 被阅读0次

前言

    LSM文件树是基于Bigtable思想用于levelDB数据库(google两位重量级架构,Jeff Dean和Sanjay Ghemawat所发起的开源数据库)的一个存储结构,在这里做一个简单的理解。

LSM文件树结构与各文件作用解析

    LSM文件树在内存中有两种不同的表现形式,分别为MemTable(可读写的内存表空间),ImmutableMemTable(可读不可写的内存表空间),而levelDB表现出来的是以文件存储为优先的存储形式,区别于Redis这样的内存型nosql,所以在磁盘中,LSM文件树表现出几种主要文件,分别为Current文件,Manifest文件,log文件,以及SSTable文件,以上六种元素构成了levelDB的主体。

    在LSM文件树中,log文件和MemTable是绑定在一起的,并且log文件的优先级大于MemTable,在插入一条数据时,先向log文件中写入插入的数据,成功之后才将这条数据写入MemTable中,如果出现内存断电这种情况,因为写入log执行级别大于写入内存,不需要担心丢失内存数据,我们可以再次根据log中的内容写入MemTable中,这样就避免了Redis的问题,而且,因为只需执行一次磁盘顺序写和一次内存随机写,大大提高了写的效率。

    当MemTable达到一个界限时,会自动转变为ImmutableMemTable,此时该内存可读不可写,会另外开辟一块空间生成新的MemTable和新的log,新到来的数据会被写入到新的log和MemTable中,levelDB后台调度会将ImmutableMemTable导出,生成一个SSTable文件,SSTable就是由这样的不断推演不断产生,并且这些SSTable有一种层级结构,第一层为level0,第二层为level1,这也是levelDB名字的由来。

    而SSTable的某个文件属于特定层级,且key有序,那必然存在最大key和最小key,这是树的特征,也是非常重要的信息,Manifest文件就是用来存储这些信息的,它记载了SSTable各个文件的管理信息,比如属于哪一个Level,文件的名称,min key 和max key 各是什么等。

    Current文件是用来记录当前Manifest名字的一个文件,随着SSTable文件的变化,会有新的SSTable产生,也会有废弃的SSTable被删除,Manifest文件也在随之变化,也会生成新的Manifest文件来记录这种变化,Current就是记录当前的Manifest的文件名,方便我们能够轻易查看到当前数据变化的Manifest的一个文件。

相关文章

  • levelDB的LSM文件树浅析

    前言 LSM文件树是基于Bigtable思想用于levelDB数据库(google两位重量级架构,Jeff Dea...

  • LevelDB:写操作

    前面已经写了几篇文章介绍一些和 LevelDB 相关的内容: LSM 简介 LevelDB:整体架构 LevelD...

  • 【工作】深度理解LSM树

    LSM树应用场景太多了,个人接触过的就有这些。。戳个FLAG,一定要弄明白。 HBASE LevelDB/Rock...

  • LSM upon SSD

    近年来,以LevelDB和Rocksdb为代表的LSM(Log-Structured Merge-Tree)存储引...

  • Designing Data-Intensive Applica

    B树和LSM树的对比 整体来说,B树的实现比LSM更成熟,LSM在写上明显更快,但是B树在读上会比LSM快很多,因...

  • HBase与LSM树

    一、LSM树的原理 讲LSM树之前,需要提下三种基本的存储引擎,这样才能清楚LSM树的由来: 哈希存储引擎是哈希表...

  • LevelDB简述与LSM介绍

    在前面我写了B、B+树、Wisckey的总结。不过我觉得应该将今天的内容放在总结Wisckey之前。因为wisck...

  • [Hbase] hbase的存储设计

    1.Hbase中的LSM存储思想 1.1 什么是LSM树?LSM树是日志结构合并树,是由两个或两个以上的存储结构组...

  • LSM tree 入门

    最近练手的项目里用到了LevelDB, 具有很优秀的存储效率,DDIA中有介绍它底层是LSM-tree实现的,今天...

  • HBASE-LSM树

    HBASE-LSM树

网友评论

      本文标题:levelDB的LSM文件树浅析

      本文链接:https://www.haomeiwen.com/subject/zgrpiftx.html