最近缕了一下Rocksdb的Write和Flush逻辑,实现的非常细致,外加ColumnFamily,导致这块代码逻辑巨多,还好,这两天把这块的东西缕出来画了两幅图,方便以后可以快速回忆

图注释

1. 类图

这个不是标准的UML图,简单给自己看的

  • 细实心箭头实线代表类似包含的关系
  • 粗实心箭头实线代表包含多个
  • 细空心箭头实线代表继承
  • 细实心箭头虚线代表反向依赖

2. 流程图

  • 子节点是父节点函数的一部分
  • 菱形switch代表这里是多选一的情况
  • 平行四边形代表是switch的一种情况表述,后跟本情况下的操作
  • 红色实心箭头虚线代表指向具体实现
  • 橙色字体主要是标注mutex_的Lock和Unlock,方便辨识
  • 绿色字体主要是标注MaybeScheduleFlushOrCompaction,方便辨识

1. 类图

2. 流程图

总结

Write和Flush实现的非常细致,后续再缕一下Compact和Iterator