AtomicPointer 是 leveldb 提供的一个原子指针操作类,使用了基于原子操作(atomic operation)或者内存屏障(memory barrier)的同步访问机制,这比用锁和信
一.Block的存储格式Block的种类很多,包括Data Block、Meta Block等,每个Block由三部分组成,如下图所示: 1.block data block data是具体的KV对
一.Table的逻辑结构 Table也叫SSTable(Sorted String Table),是数据在.sst文件中的存储形式。Table的逻辑结构如下所示,包括存储数据的Block,存储索引信息
LevelDB中log文件在LevelDB中的主要作用是系统故障恢复时,能够保证不会丢失数据。因为在将记录写入内存的Memtable之前,会先写入Log文件,这样即使系统发生故障,Memtable中的
阅读本文可参考: LevelDB源码分析之一:coding LevelDB源码分析之二:comparator LevelDB源码分析之三:arena LevelDB源码分析之四:AtomicPoint
阅读本文可参考:LevelDB源码分析之一:codingLevelDB源码分析之二:comparatorLevelDB源码分析之三:arenaLevelDB源码分析之四:AtomicPointerLe
首先要区分LOG文件和.log文件。LOG文件:用来记录数据库打印的运行日志信息,方便bug的查找。.log文件:在LevelDB中的主要作用是系统故障恢复时,能够保证不会丢失数据。因为在将记录写入内
一.原理 arena是LevelDB内部实现的内存池。 我们知道,对于一个高性能的服务器端程序来说,内存的使用非常重要。C++提供了new/delete来管理内存的申请和释
一.原理先看一个例子,我们为书店写一个管理图书的程序,书店里有许多书Book,每个书架(BookShelf)上有多本书。类结构如下所示:class Book { private: string bo
LevelDB默认使用的是小端字节序存储,低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。 编码分为变长的EncodeVarint和固定大小的EncodeFixed两种,每种又分32位和6
考虑到移植以及灵活性,LevelDB将系统相关的处理(文件/进程/时间)抽象成Evn,用户可以自己实现相应的接口,作为option的一部分传入,默认使用自带的实现。 env.h中声明了:虚基类env,
这里的comparator包括抽象类Comparator及其两个实现类:一个是内置的BytewiseComparatorImpl,另一个是InternalKeyComparator。一.Compara
一.skiplist简介跳表是由William Pugh发明。他在 Communications of the ACM June 1990, 33(6) 668-676 发表了Skip lists:
一.原理先看一个例子,我们为书店写一个管理图书的程序,书店里有许多书Book,每个书架(BookShelf)上有多本书。类结构如下所示:class Book { private: string bo
考虑到移植以及灵活性,LevelDB将系统相关的处理(文件/进程/时间)抽象成Evn,用户可以自己实现相应的接口,作为option的一部分传入,默认使用自带的实现。 env.h中声明了:虚基类env,
LevelDB中的skiplist实现方式基本上和中的实现方式类似。它向外暴露接口非常简单,如下:public: // Create a new SkipList object that will
一.原理:C语言中伪随机数生成算法实际上是采用了"线性同余法"。具体的计算如下: seed = (seed * A + C ) % M其中A,C,M都是常数(一般会取质数)。当C=0时,叫做乘同余法。
一.skiplist简介跳表是由William Pugh发明。他在 Communications of the ACM June 1990, 33(6) 668-676 发表了Skip lists:
一.原理 arena是LevelDB内部实现的内存池。 我们知道,对于一个高性能的服务器端程序来说,内存的使用非常重要。C++提供了new/delete来管理内存的申请和释