【leveldb】Cache(十六):leveldb 内部整体Cache结构说明

    技术2025-04-29  19

    本篇主要讲解下leveldb内部所使用的Cache整体结构及初始化好流程。Cache主要分TableCache和BlockCache。

    Cache结构

    1.TableCache

    图1

    TableCache:

    Key: 落地存储文件名称,例如000021.ldb文件,file_number就是000021。Value: 包括两部分,一是ldb文件句柄,二是ldb文件的table信息,详细的内容已在图1中介绍。

    注: 当前版本是1.22版本,落地的文件好像不是sst格式,而是ldb格式。

    2.BlockCache

    图2

    BlockCache:

    key: 当前table对应的缓存id + BlockData在ldb文件中的偏移位。Value: 就是真实的BlockData数据。

    注: 因为打开的ldb(就是sst)文件中的BlockData都是存放于全局一份的BlockCache中的, 而不同的ldb文件其BlockData的offset可能相同,为了区分不同ldb文件中的BlockData的 offset,所以要给每个ldb文件分配一个唯一的 cache_id,这样key = cache_id + block_offset的组合就是唯一的了。


    Cache创建流程

    图3

    Cache中Key查询流程

    图4

    Cache类关系图

    图5

    总结:

    本篇主要是对leveldb中的Cache结构、流程、类关系图进行的整体的说明,接下来的文章会进行源码的走读注解。

    Processed: 0.026, SQL: 9