2018年7月2日 星期一

Google LevelDB 原始碼解說(五) Snapshot

Snapshot(快照)主要的目的是複製數據,複製相應數據的某個時間點的存檔,主要功能就是進行數據的備份跟回復,不知道讀者有沒有玩過RPG遊戲,會存多個時間的存檔,要是現行進行的遊戲出了問題,或是玩家想回到某個時間點,就可以讀取存檔,Snapshot有點類似這種概念。

Leveldb也有提供快照,提供一致性且唯讀。


2018年6月13日 星期三

Google LevelDB 原始碼解說 (四) Memtable Add&Get

Memtable有屬於自己的add和get,Immutable Memtable也大同小異,這邊對Memtable add&get的實作做說明,實作內容在 Memtable.cc




Add

這裡的內部格式為
| internal_key size | key_data | squence+type | value_size | value_data |
                                       (Internal key)         

2018年5月23日 星期三

Google LevelDB 原始碼解說 (三) LevelDB中不同Key的種類

在瀏覽LevelDB的資料時,會看到許多對key結構上的描述,應該有許多人會像我剛開始看時一樣,覺得LevelDB有那麼多種Key?其實這都是層層相關的,從下圖便可以看出其中結構。



2018年5月22日 星期二

2018年4月27日 星期五

Google LevelDB 原始碼解說 (一) 基本介紹

LevelDB介紹


*若圖片不清楚請左鍵點開放大高清


  LevelDB是由Google開發的key-value NoSQL 資料庫,是基於LSM(Log-Structured-Merge-Tree)的實現,他會順序地記錄各種寫入操作。LevelDB存儲分為兩個部分,一部分存在記憶體(Memtable),一部分存在硬碟當中(SStable)。在記憶體中方便進行快速查找,若查找失敗,才去硬碟查找。當一段時間或是記憶體達到一定大小,記憶體會進行compact成sst文件再硬碟。

2018年4月25日 星期三

Google LevelDB原始碼解說 (零) 安裝LevelDB

LevelDB的安裝在許多部落格都有解說了,但因為最近才支援cmake的緣故,資料比較少,所以在這裡進行解說。

在這裡使用centos 6

若尚未安裝cmake套件,請參考以下方法

# wget https://cmake.org/files/v3.11/cmake-3.11.1.tar.gz
# tar xvf cmake-3.11.1.tar.gz
# cd cmake-3.11.1
# ./bootstrap

熱門文章