leveldb概括


一、概括

基本组件:接口方法、参数、数据存储、迭代器(遍历表)、string(自定义的,因为c++自带的拷贝花销大)、锁、状态信息(返回值)

leveldb使用的是小端模式

功能:对外提供四个接口:put\delete\write\get

解决了什么问题:内容持久化、顺序读写

leveldb写流程:

  先写log文件---->再把数据更新到内存Memtable中---->当Memtable超过一定大小时变成Imutable---->存放到磁盘中sstable

leveldb读流程:

  先去Memtable中查找键值---->(没找到)去imutable中找---->去磁盘中找(leve0/leve1.......)

Manifest:所有涉及sstable的文件的操作都会在这里做相应的记录

Current:记载当前manifest的文件名

log文件:

  普通的log文件

  WAL log:用来支持事务的完整性

版本概念:

  1. 旧的文件有一个version1
  2. 合并完新的版本为version2
  3. 当v1---->v2的时候,如果有很多请求,v1来服务,当v2生成时会把v1删除,v2来服务

version的数据结构:

  • version:常量类型,一个版本中包含有多少文件
  • versionEdit:delta类型
  • +由versionSet::Builder表示
  • =由versionSet::Builder::SaveTo表示
  • versionSet:同时保留{A---->B}两个版本