leveldb 代码阅读五
manifest 文件
MANIFEST文件是Level DB的元信息文件,记录的是版本管理
manifest格式
与log 格式相同,一个menfiest 记录的是一个record
将次record 作为一次log 写入的data,写入manifest文件
4 bytes | 2 bytes | 1 byte | x byte |
---|---|---|---|
crc32 | length | log type | manifest record data |
初始化
Status DBImpl::NewDB() {
VersionEdit new_db;
new_db.SetComparatorName(user_comparator()->Name());
new_db.SetLogNumber(0);
new_db.SetNextFile(2);
new_db.SetLastSequence(0);
// manifest 文件起始编号为 1
const std::string manifest = DescriptorFileName(dbname_, 1);
、、、
new_db.EncodeTo(&record);
s = log.AddRecord(record);
、、、
将new_db 写入menifest 文件
参数说明
参数名 | 参数用途 |
---|---|
kComparator | 比较器名称 |
kLogNumber | 记录当前log 的编号 |
kNextFileNumber | 记录下一个log文件的编号 |
kLastSequence | 记录最后的key-value对的编号【最大序列编号】 |
kCompactPointer | |
kDeletedFile | |
kNewFile | |
kPrevLogNumber | 前一个log文件编号 【已废弃】 |