随笔分类 -  leveldb

leveldb version机制
摘要:该文章主要回答三个问题: leveldb 怎么管理因compact带来的文件变化? 当db关闭后重新打开时,如何恢复状态? 如何解决版本销毁文件变化和已经获取过的迭代器的冲突? 每次leveldb后台进行compact时, 会造成sst文件的变化。levedb利用version来管理了这... 阅读全文

posted @ 2014-05-11 18:29 ewouldblock7 阅读(738) 评论(0) 推荐(0)

leveldb 合并写详解
摘要:leveldb的write代码初看瞎搞一堆,细看则实为短小精悍。 1 Status DBImpl::Write(const WriteOptions& options, WriteBatch* my_batch) { 2 // -----A begin------- 3 Writer w(&mutex_); 4 w.batch = my_batch; 5 w.sync = options.sync; 6 w.done = false; 7 // -----A end -------- 8 9 10 // -----B begin------- ... 阅读全文

posted @ 2014-04-09 21:13 ewouldblock7 阅读(1585) 评论(0) 推荐(0)

leveldb snapshot详解
摘要:了解leveldb 的snapshot首先得了解SequenceNumber。当插入数据时,SequenceNumber会依次增长,例如插入key1, key2, key3, key4等数据时,依次对应的SequenceNumber为1, 2, 3, 4。当然,并不是每次都会如此简单,当存在合并写时,例如key1, key2, key3, key4,key5. key1对应的SequenceNumber为1,key2, key3, key4对应的SequenceNumber为2,key5对应的SequenceNumber为5. 一条kv键对会安如下格式插入到memtable里去: in... 阅读全文

posted @ 2014-04-04 00:02 ewouldblock7 阅读(3576) 评论(0) 推荐(0)

导航