最近在回顾架构设计过程中,发现了一些bug,该项目只能作为学习项目,还没有上线的能力。大家可以参考PebblesDB,它也能显著降低LevelDB写放大的问题
- 在垃圾回收器的设计上,现在是用db_->Get来判断vlog中某个kv对是否有效,但其实这个过程完全没有必要。只需要在合并过程中,记录需要删除的kv对信息,在垃圾回收过程中参照这些信息进行垃圾回后即可。现在的做法对IO影响应该会很大
- RealValue函数负责从vlog中读取实际的value,但是跟垃圾回收的过程有些冲突(vlog_manager)