levelDB—整体架构介绍

原创 2013年12月05日 14:11:45

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)

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

#ifdef DEBUG编程示例(项目开发时对中间状态信息的控制)

在开发程序或者大型项目的时候,特别需要打印一些中间的状态信息到日志文件中,方便跟踪程序的执行流程,加速程序开发的进度。 但是在发布程序的时候,我们并不想打印那些对用户是无关紧要的中间过程信息。 那应该...

MPEG-4 AVC/H.264 信息------作者:haibara 来源:pcicp.com

本FAQ系列由(haibara)翻译,期间受到kaito_mkid(pcicp)帮助,在此感谢,由于Newbie的关系,如有翻译错误,还请各位指出,由Doom9的bond编撰的原文。译者注:基本专业名...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

CodeIgniter开源框架剖析(一)

Code Igniter是开源的网站PHP框架,是一个轻量级的框架,该框架基于MVC架构,能够快速的进行网站的开发。 本系列文章,用于深度剖析CodeIgniter框架的细节,不分析该框架的底层实现细...

leveldb整体架构

1.   LevelDb作为存储系统,数据记录的存储介质包括内存以及磁盘文件, 当LevelDb运行了一段时间,此时我们给LevelDb进行透视拍照,会看到如下图: 从图中可以看出,构成Leve...

C++ Concurrency in Action 书籍阅读

并发编程,之前甚少接触,也基本上未进行过任何的编程任务。始终是心里的一个痛。于是,痛定思痛,安排今年两个月左右的时间仔细研究一本书籍《C++ Concurrency in Action》。     ...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)