leveldb
2018-02-05 15:02:19 11 举报
leveldb sstable 文件结构
作者其他创作
大纲/内容
150
index_block_handle
filter_offsets_[3]
...
record 40
索引区
record 17
restarts_[2]
70
restarts_[1]
1
201
offset | size
block
hash num
重启点
record 33
record 16
type
crc32
group 1
filter_offsets_[1]
group 2
record 1
record 32
key共享长度
restarts_[0]
filter_offset
key非共享内容
files_[2]
9
files_[0]
metaindex block
index block
200
num restarts
每个重启点记录的是group相对block偏移 所以 data_+restarts_[index]就是group的地址 restarts_[index]的地址就是data_ + restarts_ + index * sizeof(uint32_t)
level-1
50
restarts_ 相对block起始地址偏移
filter_offsets_[2]
5
filter block
300
600
TableBuilder::Rep
+data_block : BlockBuilder +index_block :BlockBuilder
group 3
6
Bloom Filter
data_block
7
key 非共享长度
files_[1]
3
index_block
20
SSTable文件
level-0
footer
data block 2
largest_key
data_ block的起始地址
TableBuilder
+ rep_: TableBuilder::Rep
100
8
151
padding
BlockBuilder
+ restarts_:std::vector+buffer_: std::string
magic_number
4
80
data block ...
data block 1
2
数据区
value长度
value内容
10
level-2
101
filter_offsets_[0]
metaindex_block_handle
kFilterBaseLg
0 条评论
下一页