TiDB SQL Infra Team:一起打造從計算層到存儲層的完美橋樑 | PingCAP 招聘季

看到題目,你可能會比較懵:TiDB SQL Infra 是什麼?TiDB 不就是一個 Infrastructure Project 麼?簡單說來,TiDB SQL Infra Team 就是 TiDB 研發團隊的一支,下面我們來詳細聊聊我們正在做以及將來想做的事。

TiDB 作爲計算存儲分離的數據庫,在 SQL Layer 層上要做的東西有很多,比如對上層查詢的模式控制,對下層 KV 數據的映射構建。TiDB SQL Infra Team 所做的工作正是成爲連接 KV Store 和 SQL Layer 的橋樑。這也是其 SQL Infra 名字的由來:Infra 意爲基礎架構,得益於在線一致性模式變更的存在,使得在各個 TiDB Server 上都可以自下而上地在 Raw KV 上構建起一套成熟的結構化查詢體系。

隨着 TiDB 研發團體逐漸壯大,TiDB SQL Infra Team 也逐漸從原來數人研發團隊中劃分出來,工作內容更加形象化,具體化,模塊化。TiDB SQL Infra Team 目前更加聚焦於 TiDB 的模式信息處理和維護,DDL 語法控制流程,SQL 診斷數據集成,以及和 Placement Driver(PD)、KV Storage 的數據交互。隨着 TiDB 更加註重計算和數據源親和性,由算子下推衍生的 Coprocessor 協處理邏輯也劃分在 TiDB SQL Infra Team 的工作範疇之內。

我們在做什麼

TiDB 元信息管理

元信息的管理對於一個數據庫的重要性不言而喻。因此,SQL Infra 組內的工作大頭就是 TiDB DDL。大家可能知道,作爲一個分佈式數據庫,TiDB 同時基於 Google F1 Online Schema Change 支持在線 DDL 變更,這個理論本身比較簡單,但實際進行工程應用的時候,有許多的事情需要考慮:

  • DDL 在線變更怎麼和分佈式系統的 Failover 結合在一起?哪些狀態需要持久化,哪些不需要?

  • DDL 哪些階段是可以優化(跳過)的?哪些 DDL 是可以並行支持的,又怎麼支持?

  • 哪些 DDL 是需要修改用戶數據的,哪些其實不需要,在修改數據的時候,怎麼避免與用戶事務大規模衝突,怎麼調整與用戶事務對集羣資源的爭奪?

在這些情況的考慮下,我們對持續對 TiDB 的 DDL 進行了改進:提供在關鍵時刻可以救命的 FLASHBACK 表級閃回功能,避免“操作不規範,親人兩行淚”。表級鎖可以更好地讓 TiDB 支持數據的批量導入/備份/恢復。在極端情況下,TiDB 元數據壞了/丟了,ADMIN REPAIR 也可以對元數據進行修復以避免整個集羣不可用。正在開發的 SEQUENCE,則爲業務提供了更加靈活的持久化自增值數方案。除此之外,我們還在做進一步優化和探索工作。

TiDB 集羣數據收集和診斷

TiDB 是一個存儲計算分離,包含多組件的分佈式系統,大家可以想象一下,運維起來其實要考慮很多問題:

  • 怎麼判斷數據庫集羣狀態是否健康?

  • 集羣如果有問題/故障,怎麼解決?

  • 怎麼快速集羣當前瓶頸在哪,這些瓶頸怎麼處理?

  • 哪一類 SQL 執行的慢?爲什麼慢,或者什麼時候變慢的?

針對上面的問題,我們參考 MySQL/Oracle/DB2 等已有系統的 SQL 審計功能,開發了 TiDB STATEMENT SUMMARY,對 TiDB SQL 執行過程進行基於語句和執行計劃指紋的統計,並滾動更新和歸檔,方便用戶/ DBA 對不符合預期的性能問題做排查。而開發中的 TiDB 性能診斷框架,則以內置的方式直接提供對 TiDB 全集羣、全模塊、全鏈路的指標狀態進行收集和展示,可以說你能想到和想不到的指標,都可以通過這個框架獲取到。舉個例子,你可以使用一條 SQL 獲取 TiDB/TiKV 運行時的 CPU 和內存火焰圖。

我們的團隊

關於地點

TiDB SQL Infra Team 的組員均勻分佈在各個 Office(北京、杭州、成都、廣州),因爲 TiDB 是一個誕生於開源、依託開源社區發展成長的項目,這使得我們認爲遠程的交流和辦公是一個常態。所以 PingCAP 並不按照工作地點來劃分工作模塊,只要你有興趣加入 TiDB 研發團隊,你可以自由地選擇工作地點。

關於工作內容

其實,TiDB 是一個非常開放的項目,我們的工作內容是不受限的:無論是提升 TiDB 性能、改善易用性、甚至只是讓某個功能更加酷炫,只要你能想到有任何的事情能夠讓 TiDB 變得更好,並且有興趣挖坑,都可以申請去做。在 TiDB SQL Infra Team,我們不希望大家只是按照既定的 TODO List 去做事,我們希望每個成員都能打開思路,在不斷的思考中工作。

關於成長

底層系統軟件開發是一個極具挑戰性的任務,早期數據庫系統是在八九十年代用 c 代碼壘起來的,龐大體系難以現代化理解和調試。現代數據庫本身就是非常有挑戰和有意思的一個項目,如何將傳統的 AST 解析,計劃優化,物理存儲用現代語言實現出來,並賦之以 Raft 高可用實際,這對我們來說也是一個巨大的挑戰。對於 TiDB 這種以 HTAP Workload 爲目標、希望部署在各種用戶場景下的數據庫來說,挑戰尤甚。

坦率的講,這對工程師的要求是非常高的,而我們也非常重視大家在工作中的個人成長。公司定期舉辦 Infra Meetup、Paper Reading 以及各種內外部技術交流分享,我們 Team 內部有學習小組,你可以把自己感興趣的方向放到學習小組的主題池中,每週我們都有專門的時間供大家學習,並相互交流分享。我們相信這些機制可以讓你打開思路,多瞭解業界的動態,多思考。

閒話二三

TiDB 是一個從零寫起來的數據庫,與基於某一個成熟的數據庫做改進、開發中間件相比,這種從頭寫代碼的做法自然要做很多的工作。但好處在於,你可以自由地按照自己的想法做設計、做實現,甚至爲理想中的功能添加新的語法,並思考在各種場景下,數據庫的用戶在使用這些語法時的場景是什麼,希望解決什麼問題,後續的如何維護?這些事情,都可以在 TiDB 團隊實現,去推送給廣大的 TiDB 用戶使用。

如果你喜歡研究極致的性能,樂於思考數據庫的設計,喜歡對數據庫刨根問底,歡迎加入我們!

加入我們吧!

我們認爲優秀的工程師或多或少有以下共同特質:

· A Quick Learner
· A- n Earnest Curiosity
· Faith in Open Source
· Self-driven
· Get Things Done

如果你符合以上特質,歡迎進入招聘頁面查看目前開放的工作機會:

https://www.pingcap.com/recruit-cn/join/#positions

簡歷投遞通道:[email protected]

實習生:公司的各項福利和學習資源對實習生全面開放,更重要的是實習生還未畢業就有機會接觸工業級項目,而且實習期間表現優異者將有機會獲得校招綠色通道特權。針對實習時間並不充裕的小夥伴,你可以先通過 Talent Plan 豐富基礎知識(https://university.pingcap.com/talent-plan/),也可以通過參與 TiDB 開源社區獲得更多實踐機會!

伯樂推薦:如果你身邊有符合以上要求的小夥伴,也可以找我們聊一聊,推薦成功就有機會獲得伯樂推薦獎勵。伯樂推薦郵件格式:[伯樂推薦] 候選人姓名-職位名稱-推薦人姓名-推薦人手機號。

延展閱讀

是的,我們在招人!PingCAP 2020 招聘季正式開啓

TiDB Architecture Team:挑戰數據庫的本質難題

揭祕 PingCAP 年輕前沿的團隊:用戶生態

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章