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