hero
PingCAP Talent Plan 是 PingCAP 为 TiDB 开源社区小伙伴提供的进阶式学习计划,课程设置上分为两个方向,分别是面向 SQL 引擎的 TiDB 方向和面向大规模、一致性的分布式存储的 TiKV 方向。每个方向的课程都包含线上和线下两部分,从语言层面开始,到数据库、分布式系统基础知识,再到 TiDB/TiKV 架构原理和源码,层层递进,最后让小伙伴们在操作实战中加深理解,掌握实操技能。

通过学习 Talent Plan,我能获得什么?

  • 由浅入深地逐步了解分布式系统和数据库的基础知识
  • 深入了解 TiDB/TiKV 的内部设计原理和源码解析
  • 近距离体验和实践 PingCAP 内部的新人培养体系
  • 获得深入参与开发世界级开源项目 TiDB 的实践机会

课程路径:

roadmap
Part 1 Online Courses

线上课程为整个 Talent Plan 课程体系中的第一部分,主要目标是帮助大家了解编程语言、数据库及分布式系统的基础知识等基础理论知识,对社区所有小伙伴们开放,时间上比较灵活。

完成线上课程学习并通过线上考核的小伙伴可以获得线上课程结业证书,表现优秀的还将有机会拿到PingCAP 校招/实习免笔试绿色通道而且有机会参与半年内 PingCAP 组织的任意一期线下课程

经过 1 个季度的打磨,我们结合社区小伙伴们的综合反馈,对线上课程进行了如下优化:
  • Rust 核心作者 Brian Anderson 对 Rust 课程进行重新设计,推出 Practical Network Applications in Rust, 并向社区小伙伴全面开放
  • 线上作业改为分批次提交:线上作业提交通道(发送电子邮件到 ts-team@pingcap.com)每周六 0:00 开启,至周日 24:00 关闭,持续 48h 开放。
Section 1
Online CourseTiDBTiKV
课程目标熟悉 Go 语言基础知识熟悉 Rust 语言基础知识
学习资料
课程作业

用 Go 语言实现一个多路归并的 Merge Sort:内存中有一个无序的 int64 数组,数组中有 16M 个整数,要求使用多个 goroutine 对这个无序数组进行排序,使得有元素按照从小到大的顺序排列,并且排序的性能需要比单线程 Quick Sort 快。

根据框架完成程序,要求跑通测试程序,并使用 Go Profile 工具分析性能瓶颈。需要有文档、单元测试、性能瓶颈分析。

完成 Practical Networked Applications in Rust 中 Project 1、2(给该课程提出改进意见并帮助改进,根据意见及改进情况会有额外加分哦~)

Section 2
Online CourseTiDBTiKV
课程目标熟悉分布式计算基础知识熟悉 Rust 语言基础知识
学习资料
课程作业

使用 Go 语言,使用框架代码,用 MapReduce + Shuffle 的方式完成作业:从包含大量 URL 的数据文件中,求出现次数最多的前 10 个 URL 和他们的出现次数,尽量利用 CPU 多核特性和内存资源。

根据作业框架完成作业,详细的作业要求、框架的使用方法和评分规则请看框架的 README 文件

完成 Practical Networked Applications in Rust 中 Project 3、4(给该课程提出改进意见并帮助改进,根据意见及改进情况会有额外加分哦~)

Section 3
Online CourseTiDBTiKV
课程目标熟悉数据库基础知识分布式存储基础知识
学习资料
  • 《数据库系统概念》部分章节阅读和自学,或者 CMU 15-445 对应部分内容
  • 第 3 章: SQL
  • 第 11 章: 索引与散列
  • 第 12 章: 查询处理
  • 第 13 章: 查询优化
  • 第 14 章: 事务
  • 第 15 章: 并发控制
  • 第 18 章: 并行数据库
  • 第 19 章: 分布式数据库
课程作业

select t1.a, count(*), avg(t1.b) from t1 left outer join t2 on t1.a=t2.a group by t1.a,请给出所有可能的执行计划(画出 Plan 树),并分析 t1 的数据分布对各种执行计划执行性能的影响。画 Plan 树时可以利用 Graphviz 作图,例如对于 select * from t where a > 1, 一个可能的执行计划可以如下图所示:

homework

使用 Rust 语言完成 6.824 Lab 2 raft 作业

Section 4
Online CourseTiDBTiKV
课程目标熟悉数据库基础知识分布式存储基础知识
学习资料
  • CMU 15-721 数据库课程,自学 + 在线视频教学
  • Optimizer Implementation (Part I)
  • Optimizer Implementation (Part II)
  • Cost Models
  • Execution & Scheduling
  • Vectorized Execution (Part I)
  • Vectorized Execution (Part II)
  • Parallel Join Algorithms (Hashing)
  • Parallel Join Algorithms (Sorting)
课程作业

用 Go 语言, 实现一个 Join 算法, 从两个 CSV 文件中读取数据, 在一个或多个等值条件上进行链接,并对最终结果求和。请参考 README,使用提供的框架完成作业,并跑通测试程序。提交的作业要求代码整洁规范,附有文档,并提供对程序的性能瓶颈分析及优化思路。

使用 Rust 语言完成 6.824 Lab 3 kvraft 作业

Section 5
Online CourseTiDBTiKV
课程目标了解 TiDB 源码了解 TiKV 源码
学习资料
课程作业

给 TiDB Repo 提 PR, 例如修复 for new contributors issues

- 给 TiKV Repo 提 PR, 例如修复 for new contributors issues

- 给 PD Repo 提 PR, 例如修复 for new contributors issues

考核方式
考核科目TiDBTiKV
考核要求

完成各项作业, 代码通过邮件提交到 ts-team@pingcap.com, 要求使用 Golang 1.12, 需要有代码、测试、注释、文档。我们会根据一下规则进行评分,最终得到一个 0-100 分的分数。

  1. 代码可以跑过 PingCAP 提供的测试程序(一些题目有性能要求,希望在规定的时间内跑完)50%
  2. 单元测试覆盖率 30%
  3. 代码风格 10%
  4. 文档情况 10%

根据提交到程序是否能通过测试给出 Pass or Fail

  1. 代码可以跑过 PingCAP 提供的测试程序 50%
    • - make check
    • - make test
  2. 代码风格
  3. 文档情况 20%
Part 2 Offline Practice

线下实践在夯实基础知识的基础上,注重实操能力的培养。线上课程成绩优秀的小伙伴才能被邀请参与线下课程。完成线下课程的小伙伴可以获得专属 PingCAP Talent Plan 结业证书,表现优秀的还将有机会拿到 PingCAP 校招/实习免面试绿色通道/Special Offer、 PingCAP/TiDB 全球 Meetup 的邀请函等。线下课程详细信息将通过 PingCAP 官方微信公众号及知乎专栏(TiDB 的后花园)发布,敬请期待!

点击以下链接或扫描下方二维码欢迎报名加入 PingCAP Talent Plan 官方交流群,了解更多课程资讯

qrcode