Manifest
manifest文件专用于记录版本信息。leveldb采用了增量式的存储方式,记录每一个版本相较于上一个版本的变化情况。
展开来说,一个Manifest文件中,包含了多条Session Record。一个SessionRecord记录了从上一个版本至该版本的变化情况。
注解
变化情况大致包括:
(1)新增了哪些sstable文件;
(2)删除了哪些sstable文件(由于compaction导致);
(3)最新的journal日志文件标号等;
借助这个Manifest文件,leveldb启动时,可以根据一个初始的版本状态,不断地应用这些版本改动,使得系统的版本信息恢复到最近一次使用的状态。
一个Manifest文件的格式示意图如下所示:
一个Manifest内部包含若干条Session Record,其中第一条SessionRecord记载了当时leveldb的全量版本信息,其余若干条SessionRecord仅记录每次更迭的变化情况。
因此,每个manifest文件的第一条SessionRecord都是一个记录点,记载了全量的版本信息,可以作为一个初始的状态进行版本恢复。
一个Session Record可能包含以下字段:
- Comparer的名称;
- 最新的journal文件编号;
- 下一个可以使用的文件编号;
- 数据库已经持久化数据项中最大的sequence number;
- 新增的文件信息;
- 删除的文件信息;
- compaction记录信息;
当前内容版权归 rjl493456442 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 rjl493456442 .