Leveldb/lmdb/comdb 各种存储引擎的个人见解

单机存储引擎分类

根据《大规模分布式存储系统:原理解析与架构实战》,有三类单机存储引擎:哈希存储引擎是哈希表的持久化实现,B树存储引擎是B树的持久化实现,而LSM树(Log Structure Merge Tree)存储引擎采用批量转储技术来避免磁盘随机写入。以下各拿三个我熟悉的引擎做例子,进行个人理解。

对比


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

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

  • lmdb

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

  • leveldb

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值