您的位置:首页 > 博客中心 > 数据库 >

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

热门排行

今日推荐

热门手游