Open YiqinXiong opened 3 years ago
This suggestion sounds like to introduce a project 0. Do you want to use this self-written kv engine in the following project?
If you simply want to build a storage engine, https://github.com/pingcap/talent-plan/blob/master/courses/rust/README.md is already offering such course. In Practical Networked Application course, you could build a Bitcask-like engine.
I just took a look at current tinykv codebase. The storage provider needs to support column family and (maybe atomic) write batch. A fully-functional LSM storage engine with such capability, from my perspective, might need 3000+ LoC or more, which might be too much for a introductory course.
At the same time, I believe single-node storage engine is mature enough that we do not need a separate course to introduce it to our students. There are already a lot of LSM-based storage engine projects for introductory purpose, which supports basic get, put and compaction. If you don’t like LSM-trees, you may also build a B-Tree based engine, which has already been covered in CMU database course.
Consider the volume of the course and the original intention of the TinyKV, we provide an out-of-the-box storage engine, so students can focus on learning the structure of TiKV. Though I'm willing to see there is a storage engine course enriching TinyKV in the future.
Hope to provide a beginner-friendly single-node version of the course for rookies.
Thank you!