Skip to content

Instantly share code, notes, and snippets.

@at15
Last active December 30, 2019 05:17
Show Gist options
  • Save at15/2aceb37b7c8fd380e750e33dce846fbc to your computer and use it in GitHub Desktop.
Save at15/2aceb37b7c8fd380e750e33dce846fbc to your computer and use it in GitHub Desktop.
TiDB talent plan (Unofficial English version)

TiDB talent plan

This is an unofficial translation for https://university.pingcap.com/talent-plan/

TL;DR Rust Go

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).

Sign up

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.

Submission

Send email to ts-team@pingcap.com 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.

TiDB

The Go part.

TiDB Section 1

TiDB Section 2

  • 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.

TiDB Section 3

  • 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. for SELECT * FROM t where a > 1

TiDB Section 4

  • Goal: Learn more about database
  • Resource:
    • CMU 15-721
      • Optimizer implementation
      • Cost Models
      • Executions & Scheduling
      • Vectorized Execution
      • Parallel Join
  • Assignment: Implement join on two csv files in go

TiDB Section 5

TiDB Evaluation

  • 50% unit test
  • 30% test coverage
  • 10% coding style
  • 10% doc

TiKV

The Rust part. It has two parts Practical Networked Application in Rust (PNA) and MIT 6.824 Raft lab in Rust (6.824-rs)

TiKV Section 1

  • 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.

TiKV Section 2

  • 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.

TiKV Section 3

TiKV Section 4

TiKV Section 5

TiKV Evaluation

  • 50% test
  • 30% coding style
  • 20% doc
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment