博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
KV型数据存储引擎Leveldb/lmdb/comdb /rocksdb
阅读量:6152 次
发布时间:2019-06-21

本文共 717 字,大约阅读时间需要 2 分钟。

hot3.png

单机存储引擎分类

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

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

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可以是任意的字节流,支持原子的读和写。

转载于:https://my.oschina.net/u/347414/blog/2999274

你可能感兴趣的文章
cobbler 在centos7.3上的部署
查看>>
JavaScript学习(1)
查看>>
JVM【第一回】:【JVM运行时数据区域总览】
查看>>
CentOS7操作端口
查看>>
Python的语法及if、while、for语句
查看>>
java 线程协作
查看>>
雅虎CEO:支付宝所有权谈判顺利 将获补偿
查看>>
服务器集群中实现Session共享的解决办法(Redis)
查看>>
linux oracle 11g安装
查看>>
urllib url后面传长数据
查看>>
开放平台的搭建
查看>>
LoadRunner11-遇到问题及解决办法
查看>>
mongodb 常见问题处理方法收集
查看>>
servlet获取服务器地址
查看>>
spring boot(1) - spring tool suite 工具的安装
查看>>
linux 文件与用户管理
查看>>
[转载] 考试经验——2011下半年信息系统项目管理师论文52分者谈论文写作经验...
查看>>
网络*** 应用层防护建设是重点
查看>>
【Mysql】 事务学习
查看>>
fedora18下安装小企鹅输入法(fcitx)
查看>>