Skip to content
Kould edited this page Apr 9, 2023 · 5 revisions

KipDB是作为NewSQL的存储引擎为目的而开发的,推崇Kiss原则作为开发守则。主要参考LevelDB作为实现

架构设计

KipDB的架构图(v0.1.0) iNAl6Q.png (架构图中的红色深度为调用频次)

KipDB主要组件:

  • LogLoader(lsm/log): 日志加载以及Write Ahead Log,当SSTable加载出现异常时会尝试通过LogLoader进行恢复
  • MemTable\Imuutable Memtable(lsm/mem_table): 用于在内存中缓存写入的键值数据,使用Crossbeam的无锁SkipMap作为基础实现,将多次随机写入转换为单次顺序写入(Minor Compaction)
  • Compactor(lsm/compactor): 异步Minor/Major Compaction执行器,并生成对应Version记录每次Compaction后各个版本记录
  • SSTable(lsm/ss_table): 有序排列的数据持久化集合,使用Lz4、Var32、前缀压缩等手段最大化减少其空间占且优化读取效率
  • VersionStatus(lsm/version): 当前版本状态,用于持有当前版本进行事务的复制且对版本记录持久化避免停机后丢失
  • SSTableLoader(lsm/mod): SSTable的加载器,读取时缓存默认1000个被读取的SSTable
  • DiskIterator(lsm/iterator): 比标准迭代器功能更全的迭代器,支持seek、prev、next操作
Clone this wiki locally