我們為什麼採用TiDB代替MySQL

2021-10-21 10:14:37 字數 1994 閱讀 4984

我們的系統最初採用mysql作為後台資料庫,隨著資料量的增加,採用業界主流的分庫分表方案。但是,隨之而來的問題是,增加了應用的複雜度,不利於多維度的資料查詢,效能將來也面臨挑戰。

所以,我們考慮採用tidb,因為tidb是分布式資料庫,支援二級索引,能夠解決多維度查詢問題,並且效能很強。

本文,我會介紹我們為什麼選擇tidb和我們的業務場景,以及tidb如何解決我們的 問題。

最初,我們採用mysql作為後端資料庫,隨著資料量劇增,我們採用分庫分表的方案,但是分庫分表的方案有以下劣勢:

基於上面的背景,我們尋找新的資料庫方案。

tidb是乙個開源的分布式資料庫,支援mysql協議,支援水平擴充套件,強一致性和高可用,對於olap和oltp提供了一站式解決方案,架構圖如下:

tidb吸引我們的優點有以下幾點:

所以我們採用了tidb作為資料庫方案。

tidb在以下場景解決了我們很多問題,乙個乙個分析。

比如我們的課堂trouble shooting 系統,主要負責解決上課系統可能出現的問題,包括切換線路、提高畫面質量等各種情況。

該系統需要從家長端和教師端實時收集資訊,比如進入、離開課堂,課程開始、開啟麥克風等操作,資料量非常大,實時性要求高。系統技術點如下:

系統當前峰值的tps為10000

每天增加1800w行記錄,

儲存最近兩個月的記錄

當前乙個表儲存12億資料,如果用mysql,顯然扛不住

遷移到tidb的過程中,我們進行了兩個改動:

最初使用mysql的時候,我們採用shard方案,一般在shard的時候,只能採用乙個列進行sharding,作為sharding key。

當時,比如乙個定時任務,涉及教師、學生、課堂、課程等多個維度,而且其他應用也會訪問資料。

比如當老師訪問資料的時候,資料是依據老師的角度組織的,如果按照學生的角度組織,老師的請求就無法處理了。

因此,我們把所有的shard資料遷移到tidb,整合成乙個全域性表。tidb有工具可以整合,如下:

如果利用mysql,資料的後期管理成本很大。利用tidb,我們把資料進行分級,包括冷資料、熱資料等。

如果後期資料遷移,增加修改列,tidb的效能遠遠 高於mysql,tidb增加或者減少乙個列在秒內就可以完成。

此場景主要是bi團隊使用,我們使用 tidb data migration (dm) 工具拷貝所有的資料到tidb,利用tidb的水平擴充套件和計算能力,進行實時資料分析。

tidb4.0帶了了新的儲存引起,tiflash,tiflash是乙個新的擴充套件儲存引擎,支援htap分析。

隨著網際網路的發展,企業的業務資料量不斷增多,單機資料庫的容量限制制約了其在海量資料場景下的使用。因此在實際應用中,為了面對各種需求,oltp、olap 在技術上分道揚鑣,在很多企業架構中,這兩類任務處理由不同團隊完成。當物聯網大資料應用不斷深入,具有海量的感測器資料要求實時更新和查詢,對資料庫的效能要求也越來越高,此時,新的問題隨之出現:

olap 和 oltp 系統間通常會有幾分鐘甚至幾小時的時延,olap 資料庫和 oltp 資料庫之間的一致性無法保證,難以滿足對分析的實時性要求很高的業務場景。企業需要維護不同的資料庫以便支援兩類不同的任務,管理和維護成本高。

pingcap 高階技術總監、cmc 成員、華南區總經理姚維表示:「我們經過兩年多的內部開發,終於將 olap 和 oltp 真正放在同一套 tidb 集群上,讓 tidb 可以同時支援聯機交易和海量的資料分析。並且這兩種計算在內部轉換的過程對使用者是透明的。」通過底層資料同步及行列透明轉換的技術,tidb 將 tikv 面向聯機交易的行存式引擎與 tiflash 面向實時分析場景的列存引擎,轉為真正的行列混合資料架構。同時,該版本在 tidb 分布式計算層實現了透明的可根據請求自動選擇行列儲存引擎的能力,使高併發、低延遲的聯機交易與海量資料實時分析查詢計算,在 tidb 新一代架構上完美地融合在一起。

為什麼採用啟用函式

為什麼要使用sigmoid,tanh,relu等非線性函式?這個原因大家都知道,為了增加非線性唄!深度學習的目的是用一堆神經元堆出乙個函式大致的樣子,然後通過大量的資料去反向擬合出這個函式的各個引數,最終勾勒出函式的完整形狀。那如果啟用函式只是線性函式,那一層層的線性函式堆起來還是線性的,這年頭線性...

我們為什麼加班

4 在方法上,持續學習。方法總比問題多,我們只有不斷學習,不斷提高自己的知識和能力,才能不斷使用更好的方法來完成任務,好的方法的標準就是更好的生產力。5 在執行上,提高軟體質量。這個涉及知識 技術 方法學等各個方面,也涉及到軟體開發的各個過程,不僅包括設計 的質量,同樣包括文件的質量。軟體質量提高了...

為什麼我們道歉

2017年就在拐角處,當我說這是乙個新的開始的時候,我想我為大家說話 有一些令人興奮的關於重置按鈕,從頭開始,這就是這篇文章。你看,有不可避免地伴隨著愛的東西 痛苦。當我4個月前結婚的時候,最後一件事就是傷害了我的妻子。但無論我嘗試多麼努力,無論我付出多少努力,無論我投入多少技能,我都不可避免地說 ...