文件名称:概述-空间谱估计算法及应用 王永良
文件大小:8.18MB
文件格式:PDF
更新时间:2024-07-13 16:36:38
leveldb rocksdb leveldb架构
5.1 概概概述述述 如我们之前提到的,leveldb是典型的LSM树(Log Structured-Merge Tree)实现,即一次leveldb的写入过程并不 是直接将数据持久化到磁盘文件中,而是将写操作首先写入日志文件中,其次将写操作应用在memtable上。 当leveldb达到checkpoint点(memtable中的数据量超过了预设的阈值),会将当前memtable冻结成一个不可 更改的内存数据库(immutable memory db),并且创建一个新的memtable供系统继续使用。 immutable memory db会在后台进行一次minor compaction,即将内存数据库中的数据持久化到磁盘文件中。 注注注解解解: 在这里我们暂时不展开讨论minor compaction相关的内容,读者可以简单地理解为将内存中的数据持 久化到文件 leveldb(或者说LSM树)设计Minor Compaction的目的是为了: 1. 有效地降低内存的使用率; 2. 避免日志文件过大,系统恢复时间过长; 当memory db的数据被持久化到文件中时,leveldb将以一定规则进行文件组织,这种文件格式成为sstable。 在本文中将详细地介绍sstable的文件格式以及相关读写操作。 5.2 SStable文文文件件件格格格式式式 5.2.1 物物物理理理结结结构构构 为了提高整体的读写效率,一个sstable文件按照固定大小进行块划分,默认每个块的大小为4KiB。每 个Block中,除了存储数据以外,还会存储两个额外的辅助字段: 1. 压缩类型 25