摘要:作者申礫本文是招聘職位深度解讀系列的第一篇,我司申礫老師將為大家介紹團隊一群無法抑制內心技術騷動的人。在數據遷移的過程中,我們支持對數據的以及內容按照一定規則做轉換,實現分庫分表的合并等復雜的操作。
作者:申礫
本文是 PingCAP 招聘職位深度解讀系列的第一篇,我司 Engineering VP 申礫老師將為大家介紹 TiDB 團隊(一群無法抑制內心技術騷動的人!)。TiDB 團隊工作方向
簡單來說,TiDB 是一個分布式高可用且能夠水平擴展的關系型數據庫,這個數據庫的內核包含三個組件,其中的 SQL 層組件的名字也叫做 TiDB。這個組件負責所有和 SQL 計算相關的事情以及和客戶端(業務)之間的交互,這是一個承上啟下的核心模塊。除了負責 TiDB 組件之外, TiDB 團隊還負責開發與其他數據庫之間的數據遷移和同步組件,比如 TiDB 自身的 Binlog 模塊以及讀取 MySQL 之類數據源 Binlog 的組件。
來 TiDB 團隊你能做什么TiDB 研發工程師職位信息:
https://www.pingcap.com/recruit-cn/engineering/tidb-engineer/
招聘職位上的「崗位職責」簡單寫了下面三點:
負責分布式數據庫查詢優化器和執行引擎相關的設計,開發,文檔撰寫和新人指導;
負責分布式數據庫 SQL 層的設計,開發和性能優化;
參與分布式數據庫底層系統存儲系統的設計。
這里可以做的事情非常多,下面我會詳細地介紹。
正確性數據庫最難的部分在于如何保證正確性,這個是需要具備嚴謹思維+想象力的工程問題,也是我們每一個工程師日常必須考慮的問題。
我們需要以負責且懷疑一切的態度去審視每一行代碼;需要以嚴謹且狡詐的方式想出各種套路方法(“陰謀陽謀/奇技淫巧”)去吊打自己的產品;需要嚴肅且堅決地拒絕任何可能帶來不確定性的變更;需要在每次遇到問題的時候都反思今后如何避免出現類似的問題。
這是一個極端重要且有技術難度的事項,所以我把它放在第一點來介紹。
架構一個好的架構決定了產品的好壞。SQL 引擎是一個非常復雜的東西,涉及到大量的模塊,如何安排這些模塊,并解決這些模塊之間復雜的交互是非常重要的事情。
DDLDDL 是 SQL 引擎最基本的功能之一,有人覺得不就是建個表、刪個表嗎?其實不是,難點在于如何在分布式數據庫上支持不阻塞業務的 DDL 變更,特別是在海量數據上做 DDL,如何既快又好。例如如何在線修改一個十億級別 Table 的某一列的類型?當然這一切的前提都是保證 DDL 操作的正確性,這點在分布式數據庫中有很多點需要考慮,不信的話可以來一起踩坑。
優化器一條 Query 的查詢計劃好壞可能會導致執行時間的巨大差別,優化器就是 SQL 引擎的軍師。我們需要考慮各種數據分布、各種優化手段、各種等價變化,在合理的時間內選出一條不那么差的查詢計劃。這里說“不那么差”聽起來不那么靠譜,但是在 Query 比較復雜的情況下,潛在的查詢計劃搜索空間非常龐大,既要找到好的查詢計劃,又希望縮短搜索時間,這是一個非常有挑戰的事情。希望你能來和我們一起做一個“總能選出最好的查詢計劃”的優化器。
統計信息收集與更新在優化器搜索并評估所有候選查詢計劃的過程中,統計信息的準確與否非常重要,它是 SQL 引擎的情報官,優化器擁有準確的統計信息才能做出正確的決策,就像軍師有精確且及時的情報才能給出正確的行動方案。在海量的數據中(百億級別)如何快速計算統計信息,反應數據真實分布;在繁忙的生產系統中,如何讓統計信息跟上數據的變動,提供更及時的信息,這些都是有挑戰的事情。
執行引擎軍師根據正確的情報制定了好的作戰計劃之后,還需要驍勇的將軍去執行,在這里就是執行引擎。我們在 2.0 和 2.1 兩個版本中,都對執行引擎做了大量改進,一些語句的運行時間有了幾倍甚至數量級的提升。我們會考慮到如何提升 CPU 使用率、減少 Cache miss、減少 TLB miss,通過 Pipeline、并行等模式提升執行速度。
數據遷移/同步組件作為一個新興的數據庫,我們需要考慮幫助用戶平滑的遷移(全量+增量)已有數據庫(主要面對 MySQL)到 TiDB 中來,當然我們也提供一套組件來實時同步數據變動到數據庫外面。主要包括下面三個組件:
TiDB Data Migration?(簡稱 DM)
TiDB Binlog
TiDB Lightning
DM 是一個數據遷移平臺,同時支持全量遷移(MyDumper+Loader)以及增量遷移(讀取 MySQL Binlog),我們需要把這個工具做的穩定、高效、易于使用。在數據遷移的過程中,我們支持對數據的 Schema 以及內容按照一定規則做轉換,實現分庫分表的合并等復雜的操作。除了實現這些功能之外,還會致力于讓各種操作盡量簡單方便,可視化同步狀態。
Binlog 是 TiDB 自身的 binlog 模塊,能夠把 TiDB 集群的實時變動發送出去,通過 binlog 可以給 TiDB 增加一個從集群,這個從集群可以是另一個 TiDB 集群,也可以是一個 MySQL 實例。另外也可以將 binlog 寫入消息隊列中被其他系統消費,用于其他用途,只要知道 binlog 數據的 protobuf 定義即可。這里的難點在于如何保證正確性、性能、穩定性,特別是如何保證多個節點的 binlog 數據按照事務保證輸出順序,數據不重不丟不亂且延遲低。
Lightning 是一個專門為 TiDB 開發的數據批量導入工具,可以讀取 MyDumper 的輸出格式或者是 CSV 格式的文件,將數據導入 TiDB 集群。相比通過 SQL 接口導入數據,Lightning 可以跳過分布式事務、數據唯一性約束檢查、Raft 協議,將 SQL 文本直接轉換為 TiKV 底層的 RocksDB SST file,再將 SST file 注入到 TiKV 集群中。極大地縮短了導數據時間,目前內部的一個測試場景中,導入單表 1TB 的 SQL 文本耗時 2 小時,我們還在持續優化這個工具,盡可能縮短這個時間。
性能這里把性能放在了最后,并不是說它是不重要的部分,相反它是最重要的部分之一。大家可以看我們的文檔,每次發布新版本都會給出性能改進的對比結果,大多數用戶在接觸 TiDB 之后也會關心性能指標。
我們現在主要通過 OLTP(比如 Sysbench, TPC-C)以及 OLAP (TPC-H)兩套測試體系來評估 TiDB 的性能,并且在同時針對這兩類場景做性能優化。這里有非常多的事情可以做。我們希望能把性能提升到極致。
除了寫代碼,你能做的還有這些……作為一個硬核的代碼「團伙」,僅僅「舉頭望明月,低頭寫代碼」是無法滿足我們內心的技術騷動的,我們希望把 TiDB 這個項目和整個開源世界連接起來,所以希望你能和我們一起一些事情讓更多的人了解 TiDB:
《TiDB 源碼閱讀》是面向開發者的系列文章,幫助 Contributors 了解 TiDB 的實現細節,讓數據庫內核這個東西在大家眼中不再神秘,希望越來越多的人能參與到 TiDB 這個項目中來,做一個世界頂級的開源數據庫項目。
Talent Plan?是面向在校學生準備的數據庫開發課程,希望通過 3~4 周的導師帶學,讓同學們能夠了解如何做一個分布式數據庫,能夠基于 TiDB 開發新的功能,做一些和數據庫研究相關的實驗項目。目前已經有多名同學將自己的畢業設計題目選為 TiDB 相關的事情。
除了「寫文章,做導師」,我們也非常鼓勵大家走出公司做分享,各位可能已經在國內各大技術會議上看到了 PingCAPer 的身影,其實這只是冰山一角。我們在各地都有定期舉辦的 Infra Meetup,有對外公開的技術方案評審和 Paper Reading,有高校實驗室交流,有海外會議布道。在過去的一年中,我們舉辦或參加了八十多場技術/學術交流活動,把 TiDB 的旗幟插到了世界各地。
我們希望大家能全面發展,這些活動的存在也是想給大家足夠的舞臺來施展才華,作為拜仁球迷,我想說:“在 PingCAP 你甚至可以寫代碼。”
Team 成員有話說“這里有足夠多的技術挑戰讓你學習成長,自由的環境讓你可以做你喜歡的工作內容,只要有能力,隨時可以給任一項目提 PR 或 Review 代碼, CEO 也可能隨時 Review 你代碼?!?/p>
-- From July2993
“在 TiDB 團隊有很多聰明且踏實的同事,讓我有一種回到學校大家一起努力成長的感覺;工作內容很豐富,既有富有挑戰的復雜邏輯,也有具體到底層的工程細節,還有需要時刻關注的學術界最新研究成果,有時還需要承擔不同的角色,比如作為一個好的演講人將一場報告有條理地呈現出去,或者快速地幫助客戶解決線上遇到的問題,總的來說,對我而言,這是一份充滿可能性的工作。”
-- From Eurekaka
“在這里可以參與到一個完整的開源項目。寫代碼時必須特別小心,任何失誤都可能造成重大的影響,一個細微的行為變化都可能對現有的用戶造成困擾。
除了寫代碼之外,在這里也學會了如何推進一項工作,會涉及到討論,測試,review,文檔等方方面面。也會因為這樣的環境,使人整體得到很大的提升。尤其是做事情的方式,思考問題的角度?!?/p>
-- From Tiancaiamao
“在這里我感受最深刻的是:無論與誰有意見分歧,大家都單純地以將事情做得更優為出發點,發表各自觀點,會有用代碼論證的,也會有拿測試數據佐證的。大家在未定方案前‘針鋒相對’,定方案后則又樂呵地討論去哪吃飯。我非常幸運能和一群志同道合的小伙伴在貴司做著自己喜歡的事?!?/p>
-- From Zimulala
我們的期望 興趣+野心希望你熱愛技術,對開源、基礎架構有興趣,看到這里面的巨大技術挑戰以及廣闊前景,希望能為業界帶來激動人心的解決方案。同時希望你是一個能自我驅動的人,且能帶動周邊的人一起來推進,這一點很重要。
技術如果你技術精湛,有數據庫/分布式系統/服務器端開發的經驗,對代碼質量有追求,那就來一起展示技術給大家看。
溝通順暢 && 思維敏捷 && 條理清晰目前我們已經有一百多名同事,分散在全球 6 個 Office 或者是遠程辦公。所以如何高效的溝通,如何能跟上其他同事的思維節奏非常重要。
我們可以提供什么我經??吹揭恍┱衅纲N中寫到彈性工作制、不打卡、水果零食健身這種,這些我司都有,不過我認為都不值一提,我想這些并不是優秀的你所追求的。我們能為你提供下面這些東西:
一群聰明優秀的同事聰明人總是想和聰明人一起工作。相比大廠,我們一直追求小而精的團隊,人員的平均水平會更高,我們招聘的時候非常謹慎,保障團隊整體水平不斷提高。
一個難且有趣的目標很多程序員對技術有一定的追求,希望能在技術上有一定的成就,剛好我們這個事情是非常難且非常有趣,足夠你來施展,一定有你抓破腦袋也解決不了的問題。
一個快速成長的環境我們希望每個人都能獨當一面,即使是校招進來的新同學,我們也期望你能在一年的時間內飛速成長。我們會有老鳥手把手幫你 Review 代碼,有各種技術文檔、Talk、Meetup 幫助你獲取新知識以及建立自己在技術圈的影響力。
一個站著掙錢的機會作為一篇招聘貼,不提錢會傷感情。我們的薪酬還是很有競爭力的,具體的可以和我司崔老板談,他那里彈藥充足。不過我覺得最值錢的還是現在的期權,已經有不少朋友問過我能不能私下買一些。只要我們能一起把這個技術產品做好,掙到錢是自然而然的事情。
加入我們吧!我們認為優秀的工程師或多或少有以下共同特質:
A Quick Learner
An Earnest Curiosity
Faith in Open Source
Self-driven? ??
Get Things Done
如果你符合以上特質,歡迎進入招聘頁面查看目前開放的工作機會:
https://www.pingcap.com/recruit-cn/join/#positions
簡歷投遞通道:hire@pingcap.com
實習生:公司的各項福利和學習資源對實習生全面開放,更重要的是實習生還未畢業就有機會接觸工業級項目,而且實習期間表現優異者將有機會獲得校招綠色通道特權。如果小伙伴們時間不夠充裕,也可以先從社區 Contributor 做起,或許下一期?Talent Plan?的主角就是你!
伯樂推薦:如果你身邊有符合以上要求的小伙伴,也可以找我們聊一聊,推薦成功就有機會獲得伯樂推薦獎勵(iPad、iPhone、MacBook Pro 等等)。伯樂推薦郵件格式:[伯樂推薦] 候選人姓名-職位名稱-推薦人姓名-推薦人手機號。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/17928.html
摘要:所以很多對不太了解的小伙伴看完我們的招聘頁面,可能會覺得那些五沒花聽八說門過的研發類職位是特別神秘的存在吧招聘頁面上一小部分神秘部隊那么這些神秘團隊到底是做什么的下面就簡單的介紹一下這些研發團隊是做什么的吧。 過去一年在 PingCAP 全力奔跑的同時,越來越多的小伙伴開始關注我們、了解我們,我們的團隊也愈加龐大,我們也期待更多對我們感興趣的小伙伴加入我們,跟我們一起做點有意義的事情。...
摘要:不過這并不是團隊工作的全部。另外,系統面臨的另一個挑戰是資源隔離。最上層仍然是的計算層,而下層則是類似的存儲協處理器的架構。另一個計劃中但是仍然沒有開工的事情是,我們希望在協處理器層加入功能,讓數據可以通過網絡進行模型的重分布操作。 前面兩期我們介紹了?TiDB 團隊和?TiKV 團隊,頗受好評,今天我司數據庫專家馬曉宇老師將為大家介紹 PingCAP 最具活力的團隊——?AP(Ana...
閱讀 774·2023-04-25 16:55
閱讀 2803·2021-10-11 10:59
閱讀 2070·2021-09-09 11:38
閱讀 1782·2021-09-03 10:40
閱讀 1485·2019-08-30 15:52
閱讀 1125·2019-08-30 15:52
閱讀 953·2019-08-29 15:33
閱讀 3493·2019-08-29 11:26