Rocksdb是一個(gè)kv引擎,由facebook團(tuán)隊(duì)基于levelDB改進(jìn)而來(lái),Rocksdb采用LSM-tree存儲(chǔ)數(shù)據(jù),良好的讀寫特性以及壓縮特性使得其非常受歡迎。此外,Rocksdb引擎作為插件已經(jīng)集成在facebook維護(hù)的MySQL分支,用戶可以通過(guò)SQL來(lái)訪問(wèn)rocksDB。本文主要通過(guò)分析Rocksdb引擎的記錄格式,并通過(guò)對(duì)比innodb,來(lái)讓大家了解Rocksdb。Rocksdb作為一個(gè)kv引擎,用戶通過(guò)put(key,value)來(lái)寫入key,或者通過(guò)get(key)接口來(lái)獲取value,對(duì)rocksdb本身而言,每條記錄都是一個(gè)key-value。當(dāng)Rocksdb作為一個(gè)存儲(chǔ)引擎接入到MySQL時(shí),key-value結(jié)構(gòu)如何存儲(chǔ)表中各個(gè)索引,以及如何記錄中各個(gè)列的信息是本文要具體討論的。rocksdb引擎與innodb引擎類似,也是采用索引組織表,無(wú)論是表(主鍵索引)還是二級(jí)索引都是以LSM tree方式組織,rocksdb記錄主要包括三部分,key,value和meta三部分內(nèi)容,具體見(jiàn)下表,然后我通過(guò)介紹一條具體記錄在rocksdb引擎中的存儲(chǔ)格式來(lái)說(shuō)明問(wèn)題。
rocksdb基本記錄存儲(chǔ)格式
key_size | key | value_size | value | |
PK/SecKey |
網(wǎng)友評(píng)論 |