RA Team:讓 TiDB 插上“實時分析”的翅膀| PingCAP 招聘季

這是一個 RA 組招聘文章,但是這裏所說的都將是非常坦誠的。RA 是 Real-time Analytics 的縮寫。是的,我們負責 TiDB 的實時分析場景,與傳統的數倉方案不同,TiDB 的分析能力更偏向於實時場景。

**TiDB 一直的定位是 HTAP ,即擁有 Hydrid Transactional / Analytical Processing 能力的數據庫。**不過,不管怎麼說,它都是一個源於 TP 場景的產品,而 AP 部分則是處在不斷探索和完善的過程中。從最初沒有獨立的項目,到藉助明星項目人氣的 TiSpark,到現在整體分析場景架構初步成型。隨着公司的不斷壯大,我們逐步理清了實時分析方面的產品方向。之前在 DTCC 2019 的講稿 《TiDB 的 HTAP 之路》算是原原本本說了這一路我們的困擾和努力,有興趣瞭解 TiDB 分析場景的同學可以看看。隨着 TiDB 4.0 列存引擎 TiFlash 發佈,我們從來沒有如此確信,這條路雖然還很漫長,但卻是正確的。

TiFlash 和 TiSpark

TiSpark 是我們很早就推出的 Spark 連接器,通過深度對接 Spark Extension,我們能從 Spark 的 Parsing,Meta Resolution 一直到 Plan 插入算子,全程修改 Spark 的行爲邏輯。它不但是 TiDB 體系下 ETL 以及大數據生態銜接的良好補充,也是在 TiDB 沒有獨立的分佈式計算引擎之前處理大規模計算的最佳選擇。

而剛提到的 TiFlash 則是我們這一年投入最多精力的產品。這是一款列存引擎,架構上可以簡單認爲是一個 TiKV 的補充和延伸,使用 Raft Learner 協議異步抄寫數據,但是通過 Learner Read 協議加上同樣的 MVCC 事務模型提供一樣的一致性保證。通過這樣的架構,我們同時做到了:

  1. 資源隔離:我們可以使用兩組不同的機器分別處理 TP 和 AP 業務,而且不互相影響;

  2. 新鮮度:AP 側可以保證讀取到最新的數據,哪怕是一瞬之前你剛寫入的;

  3. 一致性:提供了和實際寫入點 TiKV 一樣的一致性保證,事務不會因爲數據同步而被拆分或者亂序;

  4. 性能:在上述各種限制下,仍然可以擁有和獨立 AP 解決方案一樣良好的查詢速度。

TiFlash 在兩個主要場景下有很好的“療效”:

  • 一個是純粹的 HTAP 場景:你可以以極高的一致性要求查詢在線庫最新發生的交易,比如實時查看交易報表。而這一切都無需你搭建複雜的數據抽取和同步管道,或者小心地維護數據的一致性。

  • 另一個場景是作爲 TiDB 的特殊列存索引引擎:你可以爲一張表創建列存索引,而 TiDB 會按照實際場景選擇在行存點查或者列存上進行高速的批處理,甚至在同一個查詢結合兩者。這使得你在同一個數據庫上可以完成截然不同的兩種作業負載,而且無需操心細節。

今年,以 TiFlash 爲依託,我們將向更高更遠的目標挑戰:補完一個 HTAP 數據庫從 TP 數據進入、到數倉、乃至末端數據服務層的所有鏈路,讓各種複雜的架構簡化到同一個平臺上。要做到這點,我們有以下計劃:

搭建原生的 MPP 引擎

我們希望 TiDB 產品體系能擁有原生的 MPP 計算框架。大家都知道,TiDB Server (TiDB 的計算節點)本身仍然是單機的,這並不是我們設計的選擇,而只是當前暫時的狀態。2020 年,我們將會把它變成一個具有 MPP 引擎的數據庫。至此,TiDB 的存儲和計算力纔算真正匹配。這將是一個特別的跨組合作項目,因爲這裏牽涉的任務非常複雜,包含了執行器,優化器和協處理器等等不同的模塊,如果你:

  • 熟悉 MPP 框架,不論是大數據生態的 Impala,Presto 還是傳統的 MPP 數據庫例如 Greenplum,Vertica;

  • 熟悉數據庫執行器構建,例如向量化和 SIMD,內存管理,Cache Locality 優化等;

  • 熟練掌握 C++(加分項)。

那麼我們期待和你共事!

構建支持不同業務形態的存儲層

從去年開始,我們實驗性地在 TiFlash 中開始了一個新的存儲引擎項目,目標是構建一個能適應 TP 類高速更新且提供優異批量讀取的列存引擎。從原理上來說,同時支持高頻更新和高效批量讀取是一件非常困難的事情。是的,這是一個很有挑戰的任務。就現在而言,這個項目僅僅是完成了最初的設計目標,而在新的一年,爲了補完產品形態,它需要在單機存儲層進一步支持數倉類的大批量寫入,以及在分佈式層支持脫離 TiKV 體系的獨立擴容和容錯機制,甚至爲今後整體上雲打下基礎。等到這些完成了,配合 MPP 和 TiSpark,TiDB 將擁有處理數倉業務的能力,更進一步將複雜的數據平臺簡化。如果你:

  • 熟悉存儲系統的開發和設計,無論是分佈式文件系統,NoSQL,或者各類數據庫存儲引擎;

  • 熟練掌握 C++(加分項);

  • 對存儲硬件有良好的理解,熟悉 Linux IO(加分項)。

那我們期待你的加盟!

不斷快速迭代和打磨產品

隨着更多的用戶使用 TiDB 構建自己的數據分析平臺,我們將會以很快的速度迭代打磨產品。從既有舒適區的場景,到新形態下之前從未接觸的用例,產品必然需要各個維度的打磨。例如適合數倉的事務模型,推進雲化形態接入 K8s 和雲存,更深入的 Spark 體系整合,統一的權限體系等等,這些工作充滿挑戰。如果你

  • 熟悉分佈式系統或者數據庫開發;

  • 擁有良好的編程技巧和解決問題的能力。

那麼我們歡迎你加入!

產品以外的閒話

關於公司的氛圍什麼的,就不在這裏贅述了,但有一點:RA 組應該算是整個公司氣氛「最逗比狂野又和諧」的存在,相信一起共事的同事都有一樣的看法,也相信即將加入的你一樣會得到快樂 😃

加入我們吧!

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

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

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

簡歷投遞通道:[email protected]

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

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

延展閱讀

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

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

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

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

寫給 TiDB 原廠 DBA 的一封信:連接技術和價值的“最後一米”

TiDB SQL Engine Team:純手工打磨前沿的優化器和執行引擎

E.T. 團隊:TiDB 開源生態宇宙構造者

我眼中的 PingCAP 工程師文化

程序媛眼中的 PingCAP:無法抗拒的五大吸引力

Cloud Team:上能修 DB,下能改容器的雲原生信仰者

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