用的是诺顿的开源库,参考url来自这里下载git clone git@github.com:/norton/lets.git编译cd lets./rebar get-deps./rebar compilecd ebinerl -pa ../deps/*/ebin测试application:start...
分类:
数据库 时间:
2015-10-10 00:16:05
阅读次数:
247
在过去的一年中的数据库相关的源代码分析。前段时间分析levelDB实施和BeansDB实现,数据库网络分析这两篇文章非常多。他们也比较深比较分析,所以没有必要重复很多劳力。MYSQL,当然主要还是数据库存储引擎,首先我还是从innodb这个最流行的开源关系数据库引擎着手来逐步分析和理解。我一般分析源...
分类:
数据库 时间:
2015-09-23 18:50:45
阅读次数:
296
“LOG文件在LevelDb中的主要作用是系统故障恢复时,能够保证不会丢失数据。因为在将记录写入内存的Memtable之前,会先写入Log文件,这样即使系统发生故障,Memtable中的数据没有来得及Dump到磁盘的SSTable文件,LevelDB也可以根据log文件恢复内存的Memtable数据...
分类:
数据库 时间:
2015-09-17 23:05:02
阅读次数:
247
其中的一个细节是Channel服务需要带有本地数据缓存,按照小时切分数据。一个小时内的数据是一个list放在一个key下面,用leveldb来存储。???? 这个主要问题会是,数据库的写入压力,不过可以通过不断拆分数据库...
分类:
其他好文 时间:
2015-09-17 12:03:44
阅读次数:
205
上一篇Blog我提到过,每一个Channel都有一个自己的leveldb做缓存。同时,有位朋友建议我不要用缓存,经过思考后,我依然决定使用缓存。我为什么要这么做呢。 如上面图的场景,一个Sender,两个Reciver。其中一个R...
分类:
其他好文 时间:
2015-09-17 10:14:52
阅读次数:
405
上一节提到的MemTable是内存表,而当内存表增长到一定程度时(memtable.size> Options::write_buffer_size),会将当前的MemTable数据持久化(LevelDB中实际有两份MemTable,后面LevelDB数据库备忘时会讲)。持久化的文件(sst文件)称...
分类:
数据库 时间:
2015-09-16 19:54:36
阅读次数:
261
MemTable是内存表,在LevelDB中,内存表共两份,分别为: MemTable* mem_; MemTable* imm_; // Memtable being compacted按数据的新旧程度,顺序依次为mem_,imm_,level0,level1,.....
分类:
数据库 时间:
2015-09-13 18:38:02
阅读次数:
242
SkipList称之为跳表,可实现Log(n)级别的插入、删除。和Map、set等典型的数据结构相比,其问题在于性能与插入数据的随机性有关,这和Q-Sort于Merge-Srot类似。LevelDB做为单机数据库存储系统,正常操作下,整体(随机读写、顺序读写)性能上明显优于同类型的SQLite等数据...
分类:
数据库 时间:
2015-09-12 16:05:50
阅读次数:
277
leveldb自己实现了cache缓冲区替代算法,参见代码cache.h和cache.c文件。leveldb中table_cache等都是以class cache作为底层实现。
cache.h中,我们看到cache类是一个抽象类,声明了lookup;insert;release;value;erase等函数,同时声明了一个全局函数extern Cache* NewLRUCache(size_t c...
分类:
数据库 时间:
2015-08-29 18:52:12
阅读次数:
286
leveldb将数据库的有关操作都定义在了DB类,它负责整个系统功能组件的连接和调用,是整个系统的脊柱。level::DB是一个接口类,真正的实现在DBimpl类。
作者在文档impl.html中描述了leveldb的实现,其中包括文件组织、compaction和recovery等等。DBimpl的成员变量包括:字符比较器internal_comparator_、配置类options_、bool型...
分类:
数据库 时间:
2015-08-20 19:03:31
阅读次数:
203