Proposal: Improve TinySQL as a learning resource

TinySQL is a course designed to teach you how to implement a distributed relational database in Go.

However, it is too hard to a newcomer like me to understand its concrete goals as well as what is going to do right now.

These two question are similar, that how to implement a distributed relational database in Go is too wide and tell nothing about what to do. Also there are pending issues without response for over year, such as

I’d suggest we bash these issues as well as make it clear the road of TinySQL course. Besides, it would be better we serve a full English version course instead of all Chinese which limits our audience.

Any participant or owner of the course is welcome to share you experience.

I must say that TinySQL helps me a lot for understanding some part of tidb. But it’s not easy. The lab is easy, just fill some function and passing the simple unit test is ok. But we will suffer from:

  1. The git CI will remain “x” until you pass all the labs.
  2. The lab is easy, but tinysql might port from TiDB, understanding how your code works takes lot of time. And the lab will not help a lot. So I still need to struggle with TiDB’s code.

I am curious whether you create a pull request to TinySQL upstream repo or your own fork?

TinySQL intentionally left blank for labs and thus I think the natural way should be do everything on a fork. But the content doesn’t mention it or I miss it.

My own fork. But, in fact build and test will remain “x” until all test is passed, even in official repo: https://github.com/tidb-incubator/tinysql/commits/course

I generally agree with mwish. In my view, tinySQL isn’t tiny. In fact, it is tidb which removed some unnecessary feature like tracing or something else. That is to say, I prefer to learn tidb directly (and try to fix some issues) instead of learning tinySQL as they are actually the same.

In fact, I very much agree with Yisaer’s point of view, I think TinySQL is not a good learning database.
I want to redesign TinySQL. My current goal is to make it easy to learn, just like the MIT 6.828, 6.824 and 6.830 course labs.
In my opinion, it needs to meet at least the following features:

  1. The goal of TinySQL is to build a sufficiently small and simple distributed database (excluding the KV layer)
  2. There is a complete study guide
  3. There are necessary tests to verify the correctness of the implementation

My current idea is to conduct similar course labs on TinySQL, provide some framework codes and guidelines, so that students can implement a distributed database in stages, and verify it through some tests.
Welcome to discuss together.
I’ll write a detailed document to design TinySQL in a few days, then I will put it here.

1 Like

I created an issues/25321 to track this project

1 Like