This is an unofficial translation for https://university.pingcap.com/talent-plan/
The course has both online and offline parts, however since you are reading the english version, you are likely not going to attend the one month offline part (in China).
There is a form that requires Wechat ID, I am not sure if they will reach out to you if you register using email. You don't need to sign up to do all the labs, all the code and test cases are already online.
Send email to [email protected] during weekends. You need to zip the files. It's painful and they are working on improving it in the new version. You can submit section by section or bundle all the sections.
The Go part.
- Goal: Learn basic of go
- Resource:
- Assignment: Implement mergesort that is faster than standard library.
- Goal: Learn basic of distributed system
- Resource:
- Assignment: An updated version of mapreduce that requires you to make use of multi processors on a single node.
- Goal: Learn basic of database
- Resource:
- CMU 15-445
- Database System Concepts
- NOTE: the chapter number does not match the latest edition
- chap3 SQL
- chap11 Index and Hash
- chap12 Query Processing
- chap13 Query Optimization
- chap14 Transactions
- chap15 Concurrency Control
- chap18 Parallel Database
- chap10 Distributed Database
- Assignment: draw query execution plan for the following query
SELECT t1.a, count(*), avg(t1.b) from t1 left outer join t2 on t1.a=t2.a group by t1.a
You can use Graphviz. e.g. forSELECT * FROM t where a > 1
- Goal: Learn more about database
- Resource:
- CMU 15-721
- Optimizer implementation
- Cost Models
- Executions & Scheduling
- Vectorized Execution
- Parallel Join
- CMU 15-721
- Assignment: Implement join on two csv files in go
- Goal: Learn TiDB source code
- Resource:
- Assignment: new contributor issues
- 50% unit test
- 30% test coverage
- 10% coding style
- 10% doc
The Rust part. It has two parts Practical Networked Application in Rust (PNA) and MIT 6.824 Raft lab in Rust (6.824-rs)
- Goal: Learn Rust
- Resources:
- Assignment: project 1 and project 2 in PNA. A single thread kv storage engine with append only log and very simple compaction.
- Goal: Learn more Rust
- Resources: (same)
- Assignment: project 3 and project 4. Add a multi threaded TCP server and client for the previous kv storage engine.
- Goal: Learn basic of distributed system
- Resources:
- Raft paper
- MIT 6.824 Lab2 (in Go)
- Assignment: Implement the raft part in 6.824-rs
- Goal: Learn more about distributed system
- Resources:
- Assignment: Implement the kv service on top of raft in 6.824-rs
- Goal: Learn TiKV source code
- Resources:
- Assignment: TiKV issues or PD issues
- 50% test
- 30% coding style
- 20% doc