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文件编号 【已废弃】 |
1945

被折叠的 条评论
为什么被折叠?



