Tair存储引擎之一Leveldb中数据的存储思想
时间:2022-03-10 18:01
1. Tair ldb简单介绍
1.1 tair非持久化/持久化存储引擎
tair 是淘宝自己开发的一个分布式 key/value 存储引擎. tair 分为持久化和非持久化两种使用方式. 非持久化的 tair 可以看成是一个分布式缓存. 持久化的 tair 将数据存放于磁盘中. 在最新版本的tair trunk中目前实现了以下4种存储引擎。
enum ValueType { kTypeDeletion = 0x0, kTypeValue = 0x1 };
除此之外,leveldb每次更新(Put/Delete)操作都拥有一个版本,由SequnceNumber来标识,整个db有一个全局值保存着当前使用到的SequnceNumber。SequnceNumber在leveldb有重要的地位,key的排序,compact以及snapshot都依赖于它。leveldb内部按照key非递减,SequnceNumber非递增,ValueType非递增排序,这样查询时便可以找到key对应的最新值,如果type位kTypeDeletion则不存在。
(3)考虑节约空间,leveldb对key的存储进行前缀压缩后再写入sstable,每个entry中会记录key与前一个key前缀相同的字节(shared_bytes)以及自己独有的字节(unshared_bytes)。读取时,对block进行遍历,每个key根据前一个key以及shared_bytes/unshared_bytes可以构造出来。
4. 简单总结
首先讲述了leveldb的基本特性,然后简单讲解了leveldb存储结构的来源LSM的基本思想和适用场景,最后总结了几点leveldb中存储数据的特点,实际的存储结构较复杂,有内存存储结构和持久化存储结构。下一步继续探索LevelDB的存储过程。
5. 参考资料
(1)
(2)
(3)
(4)
(5)
Tair存储引擎之一Leveldb中数据的存储思想,布布扣,bubuko.com