Talent Plan 是 PingCAP 聯合華東師範大學、華中科技大學、中國科學技術大學、武漢大學和神州數碼面向高校和工程師的未來資料庫核心人才培養計劃。通過結業考核的學員將獲得官方認證的證書,並具備進入 TiDB 生態企業交流、實習和工作的機會。
為了讓更多學員不會對體系龐大、內容艱深的 Talent Plan 課程望而卻步,或是半途而廢,Talent Plan 學習社群推出了 Talent Plan 學習營活動。學習營以線上自學為主,參加學習分享講座為輔,邀請往屆畢業的學員做導師,將自己學習過程中遇到的坑和必要的知識點分享給其他學員,幫助學員們將時間用在真正關鍵的學習上。
Talent Plan KV 2021 學習營學員來自福州大學、華東師範、清華大學、武漢大學、卡內基梅隆大學 、早稻田大學、紐約大學等高校,參與人數達到 400 人,可見大家對資料庫知識學習的渴望。Talent Plan 課程有如下 5 個學習路徑:Rust 編譯原理和實現、實現一個 mini 版本分散式關係型資料庫、實現一個 mini 版本分散式KV資料庫、參與工業級開源分散式資料庫 TiDB 開發、參與工業級開源分散式 KV 資料庫 TiKV 開發。
從課程內容上講,有如下3個系列:
系列 1: 開源協作
- TP101: 開源軟體簡介
- TP102: 如何使用 Git 和 Github
- TP103: 建立一個社群
系列 2: Rust程式設計
- TP201: Rust 網路程式設計
- TP202: Rust 分散式系統
系列 3: 分散式資料庫
- TP301: 用 Go 語言實現 TinySQL 分散式資料庫
- TP302: 用 Go 語言實現 TinyKV 分散式 KV 資料庫
學習內容涵蓋了SQL 語句基礎知識、編譯原理前端、DDL 非同步變更演算法、SQL 優化原理與優化器實現、統計資訊與代價估算、Join reorder、執行引擎、物理運算元的實現、KV 單機儲存引擎(LSM-Tree)、Raft 一致性協議、Percolator 分散式事務模型、 Go語言、 Rust 語言及開源協同工具等方面。
來自福州大學的「奧特曼都是假的」戰隊以優異的成績獲得了一等獎,我們在學習營結業後對「奧特曼都是假的」戰隊的黃章衡同學進行了專訪,請他分享在學習營中的收穫以及獲獎經驗。
“我之前也參加過一些軟體設計類的競賽,比如中國大學生服務外包創新創業大賽等。但這些比賽可能更關注專案的包裝,在 Talent Plan 學習營中,更關注的是學生的動手能力,以及是否堅持到底將專案完成。”
<div align = right>——黃章衡</div>
開源為學習資料庫開啟一扇新大門
黃章衡來自福州大學 2019 級計算機系,平常在校的生活中,經常會和實驗室的小夥伴參與一些軟體設計類的競賽,拿過不少獎項。從大二下學期開始,逐漸開始接觸分散式系統和資料庫相關領域,並參與到一些開源專案中,之後就一發不可收拾,開始不斷地學習分散式資料庫相關知識。
之所以能夠在本次學習營中取得一等獎的好成績,黃章衡坦言這段時間的學習起到了非常關鍵的作用:“我的基礎比較紮實,在參加學習營之前,我有學習到很多分散式資料庫相關的理論知識。還有就是要不懈堅持,在做專案的過程中會遇到很多 bug ,只有不斷地堅持,修改那些 bug ,慢慢就會成功了。”
與開源的接觸也為章衡學習分散式資料庫開啟一扇新的大門。他介紹,首次接觸開源是一個叫 sofajraft 的開源專案。參與開源帶給他最大的改變,是從前學習一些軟體專案,原始碼基本都看不懂。但是當領取一些開源專案的新手計劃或者一些高難度的專案後,在做的過程中慢慢就發現之前一些看不懂的程式碼突然可以看懂了。然後,通過慢慢地消化這些程式碼,繼而學習整個系統架構,就可以把所學的知識與實踐相結合,這對於個人發展是非常有幫助的。
遇到困難多交流
在學習營之前,黃章衡其實已經對 TiKV 的整體架構有了一定了解,但他自我調侃瞭解程度還只是浮於表面,並且由於之前沒有系統學習過 Rust 語言,並沒有深入研究它的程式碼。後來,章衡在一些前輩的朋友圈裡看到了 Talent Plan 學習營的通知,就報名參加了。
在本次 Talent Plan 學習營中,主要學習的課程是 TinyKV 專案。該課程中包含了四個 Project :
- Project1 是構建一個單機 kv server;
- Project2 是基於 raft 演算法實現分散式鍵值資料庫服務端;
- Project3 是在 project2 的基礎上支援多個 raft 叢集;
- Project4 是在 project3 的基礎上支援分散式事務。
其中 Project 3 是眾多學員公認難度最大的一個。黃章衡也表示 Project 3 裡的每一個測試都會讓人懷疑人生。事實上,每一個戰隊都會在 Project 3 卡很久。Project 3 中有一些 bug 不太好找,很多人可能在除錯的過程中,除錯了好幾天都沒有什麼結果,就放棄了。
章衡認為這時候有一個比較好的解決方案:去找一些別的戰隊或者導師交流經驗,看看他們是否有發生過類似的問題,並且他們是如何解決的。因為很多 bug 大家都會遇到,可能有些人會有思路,去請教他們的思路,就可以解決自己的 bug。學習營中的導師通常都會非常熱心地幫助學員解決問題。
在交流的過程中,由於章衡的隊名「奧特曼都是假的」比較奇特,很多小夥伴都會直接叫他“奧特曼”,這也給短短兩個月的學習過程中留下了有趣的回憶。章衡就靠著這個方法不斷地改進著自己的專案,並最終獲得成功。
學習建議
作為過來人,章衡也為其他想學習 Talent Plan 學習營的小夥伴,分享了一些自己的學習經驗:第一點,要把專案文件閱讀好。實際上文件裡已經把要做的事情都已經說清楚了。第二點,要堅持不懈,不要輕言放棄。在做專案的過程中你可能會遇到各種各樣奇怪的 bug ,多去和別人交流,多去看一些前輩的經驗,瞭解他們是如何解決遇到的 bug ,不要遇到 bug 就隨便放棄了,這其實對個人發展也不好。
個人收穫
在採訪中,章衡透露自己也報名了下一屆學習營的導師,希望將自己的學習經驗分享給更多參與學習營的小夥伴們。不出意外的話,你就會在下一屆學習營導師名單中看到“黃章衡”。
目前,章衡已經在 PingCAP 實習中,個人對未來發展的方向也希望偏向基礎架構、分散式資料庫等方向。“我會繼續往資料庫這一領域去發展,在學習資料庫的過程中,包括底層的儲存和上層的計算,個人都是非常感興趣的。從事分散式資料庫相關的研發是我最感興趣的事情。未來,我想我也會找這一塊相關的工作。”
最近,Talent Plan 新活動——Talent Plan 2022 分散式事務短訓營開營!專為 VLDB Summer School 2021 開發的課程——《分散式事務實現》經過後期升級上線,在本次學習營中正式亮相。本次學習營是 Talent Plan 學習社群針對有一定資料庫基礎的學員開展的線上學習活動,意在幫助大家利用兩週的時間快速、透徹地學習分散式事務程式設計基礎,在 TinyKV 中實現 Percolator、實現隔離與併發控制以及實現分散式時鐘等實用主題。感興趣的小夥伴可以點選閱讀原文瞭解學習。