RocksDB存储引擎技术解析

9 下载量 180 浏览量 更新于2024-08-27 收藏 762KB PDF 举报
RocksDB 是一个高性能的 Key-Value 数据库,设计了完善的持久化机制,保证性能和安全性,能够良好的支持范围查询。其核心组件包括内存结构 memtable、事务日志角色的 WAL 文件和持久化的 SST 文件。 1. RocksDB 的写入流程:数据首先写入到内存结构 memtable,当达到一定条件时将数据写入到 SST 文件,WAL 文件是可选的,用来恢复未写入到磁盘的 memtable。 2. RocksDB 的读取层次:memtable 和 SST 文件组成数据的全集,之上是缓存层,缓存为提升查询性能做了分片,底层都采用 hash 查询,不同缓存结构的区别在于热点数据的替换逻辑。 3. RocksDB 的缓存机制:缓存为提升查询性能做了分片,底层都采用 hash 查询,不同缓存结构的区别在于热点数据的替换逻辑。 4. RocksDB 的 memtable 结构:memtable 的结构有几种可选,本质都是排序的结构(为了支持范围查询)。其中之一是跳跃表,不了解跳跃表机制的读者可以简单理解为有序支持近似二分查找的时间复杂度为 log2(N) 的结构。 5. RocksDB 的 WAL 文件结构:WAL 文件按照写入的顺序来存储变长的 K-V,按照固定长度来分组存储(可能一个 K-V 跨多个分组)的目的是便于读取。 6. RocksDB 的 SST 文件结构:支持几种 SST 文件结构,上图为按照多块来存储的结构。每块的 K-V 都是有序的,而多块也是有序的。文件中包含元数据相关的信息,包括数据压缩字典、过滤器等。 7. RocksDB 的查询机制:直接访问 db 时,会持有文件句柄,这样多个 SST 文件合并时,已经被合并但被访问的文件就不能被删除。而快照机制保证了访问过程中文件能被删除(我并未想明白如何做到的),不过打开期间被删除的 key 的记录还会在新合并的文件里存在。 8. RocksDB 的快照机制:快照机制保证了访问过程中文件能被删除(我并未想明白如何做到的),不过打开期间被删除的 key 的记录还会在新合并的文件里存在。 9. RocksDB 的热点数据替换逻辑:不同的缓存结构的区别在于热点数据的替换逻辑。 10. RocksDB 的应用场景:RocksDB 是一个高性能的 Key-Value 数据库,适用于需要高性能和高可靠性的应用场景。
2019-01-11 上传