leveldb

我要報(bào)錯(cuò)
  • LevelDB源碼分析之四:AtomicPointer

    AtomicPointer 是 leveldb 提供的一個(gè)原子指針操作類,使用了基于原子操作(atomic operation)或者內(nèi)存屏障(memory barrier)的同步訪問(wèn)機(jī)制,這比用鎖和信

  • LevelDB源碼分析之十二:block

    一.Block的存儲(chǔ)格式Block的種類很多,包括Data Block、Meta Block等,每個(gè)Block由三部分組成,如下圖所示: 1.block data block data是具體的KV對(duì)

    充電吧
    2019-09-03
    block leveldb
  • LevelDB源碼分析之十三:table

    一.Table的邏輯結(jié)構(gòu) Table也叫SSTable(Sorted String Table),是數(shù)據(jù)在.sst文件中的存儲(chǔ)形式。Table的邏輯結(jié)構(gòu)如下所示,包括存儲(chǔ)數(shù)據(jù)的Block,存儲(chǔ)索引信息

    充電吧
    2019-09-03
    table leveldb
  • LevelDB源碼分析之十六:.log文件

    LevelDB中l(wèi)og文件在LevelDB中的主要作用是系統(tǒng)故障恢復(fù)時(shí),能夠保證不會(huì)丟失數(shù)據(jù)。因?yàn)樵趯⒂涗泴懭雰?nèi)存的Memtable之前,會(huì)先寫入Log文件,這樣即使系統(tǒng)發(fā)生故障,Memtable中的

    充電吧
    2019-08-26
    log leveldb
  • LevelDB源碼分析之六:skiplist(2)

    閱讀本文可參考: LevelDB源碼分析之一:coding LevelDB源碼分析之二:comparator LevelDB源碼分析之三:arena LevelDB源碼分析之四:AtomicPoint

  • LevelDB源碼分析之八:memtable

    閱讀本文可參考:LevelDB源碼分析之一:codingLevelDB源碼分析之二:comparatorLevelDB源碼分析之三:arenaLevelDB源碼分析之四:AtomicPointerLe

  • LevelDB源碼分析之十:LOG文件

    首先要區(qū)分LOG文件和.log文件。LOG文件:用來(lái)記錄數(shù)據(jù)庫(kù)打印的運(yùn)行日志信息,方便bug的查找。.log文件:在LevelDB中的主要作用是系統(tǒng)故障恢復(fù)時(shí),能夠保證不會(huì)丟失數(shù)據(jù)。因?yàn)樵趯⒂涗泴懭雰?nèi)

  • LevelDB源碼分析之三:arena

    一.原理? ? ? ? arena是LevelDB內(nèi)部實(shí)現(xiàn)的內(nèi)存池。? ? ? ? 我們知道,對(duì)于一個(gè)高性能的服務(wù)器端程序來(lái)說(shuō),內(nèi)存的使用非常重要。C++提供了new/delete來(lái)管理內(nèi)存的申請(qǐng)和釋

    充電吧
    2019-07-08
    arena leveldb
  • LevelDB源碼分析之十四:TwoLevelIterator

    一.原理先看一個(gè)例子,我們?yōu)闀陮懸粋€(gè)管理圖書的程序,書店里有許多書Book,每個(gè)書架(BookShelf)上有多本書。類結(jié)構(gòu)如下所示:class?Book?{ private: ?string?bo

  • LevelDB源碼分析之一:coding

    LevelDB默認(rèn)使用的是小端字節(jié)序存儲(chǔ),低位字節(jié)排放在內(nèi)存的低地址端,高位字節(jié)排放在內(nèi)存的高地址端。?編碼分為變長(zhǎng)的EncodeVarint和固定大小的EncodeFixed兩種,每種又分32位和6

  • LevelDB源碼分析之九:env

    考慮到移植以及靈活性,LevelDB將系統(tǒng)相關(guān)的處理(文件/進(jìn)程/時(shí)間)抽象成Evn,用戶可以自己實(shí)現(xiàn)相應(yīng)的接口,作為option的一部分傳入,默認(rèn)使用自帶的實(shí)現(xiàn)。?env.h中聲明了:虛基類env,

    充電吧
    2019-07-08
    env leveldb
  • LevelDB源碼分析之二:comparator

    這里的comparator包括抽象類Comparator及其兩個(gè)實(shí)現(xiàn)類:一個(gè)是內(nèi)置的BytewiseComparatorImpl,另一個(gè)是InternalKeyComparator。一.Compara

  • 何為skiplist

    一.skiplist簡(jiǎn)介跳表是由William Pugh發(fā)明。他在 Communications of the ACM June 1990, 33(6) 668-676 發(fā)表了Skip lists:

  • LevelDB源碼分析:TwoLevelIterator

    一.原理先看一個(gè)例子,我們?yōu)闀陮懸粋€(gè)管理圖書的程序,書店里有許多書Book,每個(gè)書架(BookShelf)上有多本書。類結(jié)構(gòu)如下所示:class?Book?{ private: ?string?bo

  • LevelDB源碼分析:env

    考慮到移植以及靈活性,LevelDB將系統(tǒng)相關(guān)的處理(文件/進(jìn)程/時(shí)間)抽象成Evn,用戶可以自己實(shí)現(xiàn)相應(yīng)的接口,作為option的一部分傳入,默認(rèn)使用自帶的實(shí)現(xiàn)。?env.h中聲明了:虛基類env,

  • LevelDB源碼分析:skiplist

    LevelDB中的skiplist實(shí)現(xiàn)方式基本上和中的實(shí)現(xiàn)方式類似。它向外暴露接口非常簡(jiǎn)單,如下:public: ??//?Create?a?new?SkipList?object?that?will

  • LevelDB源碼分析之七:Random

    一.原理:C語(yǔ)言中偽隨機(jī)數(shù)生成算法實(shí)際上是采用了"線性同余法"。具體的計(jì)算如下:?seed = (seed * A + C ) % M其中A,C,M都是常數(shù)(一般會(huì)取質(zhì)數(shù))。當(dāng)C=0時(shí),叫做乘同余法。

  • LevelDB源碼分析之五:skiplist

    一.skiplist簡(jiǎn)介跳表是由William Pugh發(fā)明。他在 Communications of the ACM June 1990, 33(6) 668-676 發(fā)表了Skip lists:

  • LevelDB源碼分析之:arena原理、頭文件、源文件講解

    一.原理? ? ? ? arena是LevelDB內(nèi)部實(shí)現(xiàn)的內(nèi)存池。? ? ? ? 我們知道,對(duì)于一個(gè)高性能的服務(wù)器端程序來(lái)說(shuō),內(nèi)存的使用非常重要。C++提供了new/delete來(lái)管理內(nèi)存的申請(qǐng)和釋