KV型数据存储引擎Leveldb/lmdb/comdb /rocksdb

单机存储引擎分类

根据《大规模分布式存储系统:原理解析与架构实战》,有三类单机存储引擎:c++

哈希存储引擎是哈希表的持久化实现;数据库

B树存储引擎是B树的持久化实现;架构

LSM树(Log Structure Merge Tree)存储引擎采用批量转储技术来避免磁盘随机写入。分布式

  • comdb(百度内部Mola开发的一个单机存储引擎)和文中的Bitcask存储引擎相似,不过更搓一些,没有对索引文件进行固化,启动速度比较慢(小时级别)。

1 写入过程:对日志进行追加写入,更新内存索引,标记老纪录无效,等待按期rewrite。 
2 读取过程:检索内存,读盘 
3 rewrite 过程:限速读取一个数据分片,顺序读取索引表,写回新文件,切换,删除老文件。性能

  • lmdb优化

    利用mmap 直接进行映射,尽可能少内存拷贝(能够为只读直接返回引擎中的内存),提升读性能 
    利用tree 方式组织数据,而且和系统虚拟内存页大小一致的页进行文件组织 
    优势:专门进行了读优化 
    缺点:和系统页同样大的组织方式(4k),若是单条record为1k,浪费严重日志

  • leveldb索引

利用层表方式组织数据,优化写入速度 优势:为写入优化,而且进行压缩 缺点:写入太频繁,来不及重写磁盘会爆掉(LSM通病)。最坏落盘7次,不可忍受。内存

  • rocksdb: RocksDB是FaceBook起初做为实验性质开发的一个高效数据库软件,旨在充分实现快存上存储数据的服务能力。RocksDB是一个c++库,能够用来存储keys和values,且keys和values能够是任意的字节流,支持原子的读和写。
相关文章
相关标签/搜索