Skip to content
This repository has been archived by the owner on Aug 4, 2024. It is now read-only.

Version

Kould edited this page May 20, 2023 · 3 revisions

Version是SSTable之间实现MVCC的重要组件,如名字一般:SSTables的可读版本

主要相关组件

  • Version: SSTables可读版本
  • VersionStatus: Version管理控制器,主要用于通过获取当前最新版本
  • Cleaner: SSTable清理器,监听Version之间析构关系以删除已过期的SSTable

Version

以结构化索引的形式记录此版本中的SSTable Gen实现版本快照

通过Key查询对应SSTable时

  1. 由VersionStatus获取最新Version
  2. 通过Version中的范围索引(LevelSlice)查询到对应的SSTable Gen
  3. 以SSTableLoader获取对应的SSTable进行数据查询

VersionStatus

用于加载硬盘中的VersionEdit以恢复最新的Version状态,并由Compactor协作生成不同时段的Version 参考LevelDB的VersionSet设计,但在其基础上进行简化,仅持有当前的Version。 旧Version通过Arc指针控制析构

  • load_with_path: 通过传入的地址顺序加载VersionEdit进行状态重载 FIXME: 对VersionEdit进行快照以缩减文件大小
  • current: 获取当前最新的Version
  • inser_vec_ss_table: 提前注册这些SSTable至SSTableLoader之中以便Version通过Gen获取对应的SSTable
  • log_and_apply: 由Compactor进行控制,将此次完整的Compaction的SSTable变动记为VersionEdit记录于日志中并应用于新的Version

Cleaner

持续监听Version之间的析构顺序对过期的SSTable进行清理

Clone this wiki locally