levelDB—整体架构介绍

来源:互联网 发布:中国移动手机oa软件 编辑:程序博客网 时间:2024/06/10 17:21

levelDB的整体架构见下图1。总体而言分内存和磁盘两部分。

     1:memtable:内存中存放key-value的数据结构

     2:Immutable memtable:是memtable的副本,一模一样,除了该table只不过是可读的,不能写入。

     3:log:日志文件。

     4:sstable manifest  current:磁盘中存放key-value的数据结构。


当写入一个key-value的时候,首先写入log文件中,然后才会写入memtable中,然后当memtable到达一定程度时,然后转变成Immutable memtable,系统此时会重新创建新的memtable用于插入数据。然后Immutable memtable通过压缩数据存储到磁盘sstable中。


为什么先要写入log文件中呢?以防意外情况发生,导致memtable中的数据未及时写入到磁盘上,如果先写入到log文件中,可以重新进行恢复数据。

下述博客内容主要从源代码进行讲解相关的levelDB的内容,会穿插一些详细的设计策略等,阅读源代码的顺序主要为:

1:include文件夹中包含的.h文件,该文件夹中的文件定义了系统所有使用到的类或者结构体,明白这些类型的定义有助于读懂其他文件夹的类实现或者定义。

2:util文件夹中包含的文件

3:table文件夹包含的文件

4:db文件夹中包含的实现cc文件

本文只讲解大体的架构,后续会继续讲解相关的主要流程以及数据结构等。此文会继续更新。


         

             图1:   levelDB架构图(感谢csdn博主sparkliang提供此图,http://blog.csdn.net/sparkliang/article/details/8567602)

原创粉丝点击