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

本篇主要讲解下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结构、流程、类关系图进行的整体的说明,接下来的文章会进行源码的走读注解。