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)

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

leveldb整体架构

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

LevelDB整体介绍

参考:http://www.cnblogs.com/haippy/archive/2011/12/04/2276064.html1. leveldb简单介绍说起LevelDb也许您不清楚,但是如果作为...
  • charles1e
  • charles1e
  • 2016年10月29日 21:25
  • 793

leveldb整体架构

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

LevelDB原理探究与代码分析(上)

1.概述 LevelDB(http://code.google.com/p/leveldb/)是google开源的Key/Value存储系统,它的committer阵容相当强大,基本上是bigta...
  • u012432778
  • u012432778
  • 2015年06月14日 20:34
  • 1234

Leveldb源码分析--1

【前言:看了一点oceanbase,没有意志力继续坚持下去了,暂时就此中断,基本上算把master看完了,比较重要的update server和merge server代码却没有细看。中间又陆续研...
  • sparkliang
  • sparkliang
  • 2013年02月05日 22:58
  • 43328

LevelDB原理探究和代码分析(下)

3.文件结构 3.1 文件组成 Level DB包含一下几种文件: 文件类型 说明 dbname/MANIFEST-[0-9]+   清单文件             ...
  • u012432778
  • u012432778
  • 2015年06月14日 21:31
  • 695

leveldb学习开篇

打算研究生在读期间好好学习下leveldb的源码,期望能够从中感悟一下现代软件的开发流程和设计模式,体验一下google编程规范,不得不承认leveldb源码写得很有美感,最后最重要的当然是希望从中进...
  • tmshasha
  • tmshasha
  • 2015年06月16日 22:06
  • 733

LevelDB使用入门

1,下载levelDB源码 git clone https://github.com/google/leveldb.git 2,编译LevelDB cd leveldb & make all 编译...
  • doc_sgl
  • doc_sgl
  • 2016年10月03日 12:17
  • 5966

leveldb之SSTable的创建与访问

在上篇 leveldb之SSTable 中,已经分析了SSTable的结构布局,并详细分析了数据区DataBlock的生成和使用,本文将详细分析一个完整的sstable的生成。 SSTable主要分为...
  • u012658346
  • u012658346
  • 2015年05月11日 16:18
  • 1339

leveldb原理和使用

LevelDB是一个基于本地文件的存储引擎,非分布式存储引擎,原理基于BigTable(LSM文件树),无索引机制,存储条目为Key-value。适用于保存数据缓存、日志存储、高速缓存等应用,主要是避...
  • chary8088
  • chary8088
  • 2017年02月09日 11:24
  • 2094
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:levelDB—整体架构介绍
举报原因:
原因补充:

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