Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Introduce a course of single-node kv storage engine #273

Open
Tracked by #275
YiqinXiong opened this issue Aug 3, 2021 · 3 comments
Open
Tracked by #275

Introduce a course of single-node kv storage engine #273

YiqinXiong opened this issue Aug 3, 2021 · 3 comments

Comments

@YiqinXiong
Copy link

Hope to provide a beginner-friendly single-node version of the course for rookies.

  • Instead of using badger, let students write a kv storage engine by themselves to replace badger.
  • This new course does not involve the content of distributed system.
  • Treat tiny-kv as a higher-level course.

Thank you!

@tisonkun
Copy link
Contributor

tisonkun commented Aug 8, 2021

This suggestion sounds like to introduce a project 0. Do you want to use this self-written kv engine in the following project?

@tisonkun tisonkun changed the title Suggestion: Hope to provide a single-node version of the course Introduce a course of single-node kv storage engine Aug 8, 2021
@skyzh
Copy link

skyzh commented Aug 8, 2021

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.

@Connor1996
Copy link
Collaborator

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants