【W(wǎng)OT2018】PingCAP CTO黃東旭:TiDB數(shù)據(jù)庫的四大應(yīng)用場景分析
原創(chuàng)【51CTO.com原創(chuàng)稿件】2018年5月18-19日,由51CTO主辦的全球軟件與運(yùn)維技術(shù)峰會(huì)在北京召開。此次峰會(huì)圍繞人工智能、大數(shù)據(jù)、物聯(lián)網(wǎng)、區(qū)塊鏈等12大核心熱點(diǎn),匯聚海內(nèi)外60位一線專家,是一場高端的技術(shù)盛宴,也是***IT技術(shù)人才學(xué)習(xí)和人脈拓展不容錯(cuò)過的平臺。
在“大數(shù)據(jù)處理技術(shù)”分會(huì)場,PingCAP CTO黃東旭以《How can HTAP help you:A TiDB Story》為主題展開精彩分享。TiDB是一套開源分布式HTAP(Hybrid Transactional/Analytical Processing)數(shù)據(jù)庫,同時(shí)提供MySQL與Spark SQL接口。黃東旭在演講中介紹,TiDB作為一款HTAP數(shù)據(jù)庫,在高性能的實(shí)現(xiàn) OLTP 特性基礎(chǔ)之上,也同時(shí)提供基于實(shí)時(shí)交易數(shù)據(jù)的實(shí)時(shí)業(yè)務(wù)分析需求,他分享了TiDB的設(shè)計(jì)思路、現(xiàn)實(shí)應(yīng)用場景,以及TiDB集群在部署和運(yùn)營方面的***實(shí)踐。
PingCAP CTO黃東旭
如今硬件的性價(jià)比越來越高,網(wǎng)絡(luò)傳輸速度越來越快,數(shù)據(jù)庫分層的趨勢逐漸顯現(xiàn),人們已經(jīng)不再強(qiáng)求用一個(gè)解決方案來解決所有的存儲(chǔ)問題,而是通過分層,讓緩存與數(shù)據(jù)庫負(fù)責(zé)各自擅長的業(yè)務(wù)場景。
黃東旭提到,當(dāng)前數(shù)據(jù)庫領(lǐng)域面臨各種問題,如在縮放、一致性、大數(shù)據(jù)分析、與云基礎(chǔ)架構(gòu)集成等方面均存在諸多問題,現(xiàn)有的數(shù)據(jù)庫解決方案和大數(shù)據(jù)分析引擎解決方案基本處于割裂的狀態(tài),由于Oracle、MySQL數(shù)據(jù)庫并不是面向分布式環(huán)境而設(shè)計(jì),因此即使勉強(qiáng)通過分庫、分表或中間件的方式,在數(shù)據(jù)庫層面做了分片,從本質(zhì)上看也只是復(fù)制了相同的堆棧,而非針對分布式系統(tǒng)進(jìn)行存儲(chǔ)和計(jì)算優(yōu)化,這正是進(jìn)行跨業(yè)務(wù)查詢或跨物理機(jī)查詢和寫入十分繁瑣的本質(zhì)原因。NoSQL雖然解決了數(shù)據(jù)庫彈性擴(kuò)展的難題,但是卻放棄了數(shù)據(jù)的強(qiáng)一致性以及對ACID事務(wù)的支持,帶來了新的問題。
為了解決這一問題,TiDB在架構(gòu)上將計(jì)算和存儲(chǔ)層進(jìn)行高度的抽象和分離,對混合負(fù)載的場景通過IO優(yōu)先級隊(duì)列,智能副本調(diào)度,行列混合存儲(chǔ)等技術(shù)使其變?yōu)榭赡?。TiDB 作為開源的分布式關(guān)系數(shù)據(jù)庫,其特點(diǎn)是幾乎可以100% 兼容MySQL接口,也兼容 MySQL 的語法和協(xié)議,在保證不喪失 ACID 事務(wù)的前提下,能夠彈性伸縮,高可用,可以同時(shí)處理OLTP和OLAP工作負(fù)載,不再需要ETL。
TiDB整體架構(gòu)圖
TiDB產(chǎn)品的整體架構(gòu)是高度分層的,由分布式SQL層(TiDB)、分布式KV存儲(chǔ)引擎(TiKV)以及管理整個(gè)集群的PD模塊組成。***水平擴(kuò)展是TiDB的一大特點(diǎn),這里所說的水平擴(kuò)展包括兩方面:計(jì)算能力和存儲(chǔ)能力。
HTAP給開發(fā)者提供了一個(gè)實(shí)時(shí)數(shù)據(jù)分析方面的新思路,不需要再去維護(hù)另一個(gè)離線的數(shù)據(jù)倉庫,既減輕了ETL的工作,又能節(jié)省很大一部分建立數(shù)據(jù)倉庫所用到的存儲(chǔ)和計(jì)算成本,HTAP將是未來的重要趨勢。黃東旭介紹了TiDB的四個(gè)主要應(yīng)用場景,一是MySQL分片與合并;二是直接替換MySQL;三是用做數(shù)據(jù)倉庫;四是作為其他系統(tǒng)的一個(gè)模塊。
用例1:MySQL分片與合并
Syncer
TiDB應(yīng)用的***類場景是MySQL的分片與合并。對于已經(jīng)在用MySQL的業(yè)務(wù),分庫、分表、分片、中間件是常用手段,隨著分片的增多,跨分片查詢是一大難題。TiDB在業(yè)務(wù)層兼容MySQL的訪問協(xié)議,PingCAP做了一個(gè)數(shù)據(jù)同步的工具——Syncer,它可以把TiDB作為一個(gè)MySQL Slave,將TiDB作為現(xiàn)有數(shù)據(jù)庫的從庫接在主MySQL庫的后方,在這一層將數(shù)據(jù)打通,可以直接進(jìn)行復(fù)雜的跨庫、跨表、跨業(yè)務(wù)的實(shí)時(shí)SQL查詢。黃東旭提到,“過去的數(shù)據(jù)庫都是一主多從,有了TiDB以后,可以反過來做到多主一從。”
用例2:直接替換MySQL
第二類場景是用TiDB直接去替換MySQL。如果你的IT架構(gòu)在搭建之初并未考慮分庫分表的問題,全部用了MySQL,隨著業(yè)務(wù)的快速增長,海量高并發(fā)的OLTP場景越來越多,如何解決架構(gòu)上的弊端呢?
在一個(gè)TiDB的數(shù)據(jù)庫上,所有業(yè)務(wù)場景不需要做分庫分表,所有的分布式工作都由數(shù)據(jù)庫層完成。TiDB兼容MySQL協(xié)議,所以可以直接替換MySQL,而且基本做到了開箱即用,完全不用擔(dān)心傳統(tǒng)分庫分表方案帶來繁重的工作負(fù)擔(dān)和復(fù)雜的維護(hù)成本,友好的用戶界面讓常規(guī)的技術(shù)人員可以高效地進(jìn)行維護(hù)和管理。另外,TiDB具有NoSQL類似的擴(kuò)容能力,在數(shù)據(jù)量和訪問流量持續(xù)增長的情況下能夠通過水平擴(kuò)容提高系統(tǒng)的業(yè)務(wù)支撐能力,并且響應(yīng)延遲穩(wěn)定。
黃東旭在演講中提到了摩拜單車的案例,摩拜早期的數(shù)據(jù)庫全部用MySQL,隨著業(yè)務(wù)的快速增長,MySQL的弊端逐漸顯現(xiàn),摩拜單車于2017年初開始使用TiDB替換MySQL。如今,摩拜的IT系統(tǒng)中已部署了數(shù)套TiDB集群,近百個(gè)節(jié)點(diǎn),承載著數(shù)十TB 的各類數(shù)據(jù)。
用例3:數(shù)據(jù)倉庫
TiDB本身是一個(gè)分布式系統(tǒng),第三種使用場景是將TiDB當(dāng)作數(shù)據(jù)倉庫使用。TPC-H是數(shù)據(jù)分析領(lǐng)域的一個(gè)測試集,TiDB 2.0在OLAP場景下的性能有了大幅提升,原來只能在數(shù)據(jù)倉庫里面跑的一些復(fù)雜的Query,在TiDB 2.0里面跑,時(shí)間基本都能控制在10秒以內(nèi)。當(dāng)然,因?yàn)镺LAP的范疇非常大,TiDB的SQL也有搞不定的情況,為此PingCAP 開源了 TiSpark,TiSpark是一個(gè)Spark插件,用戶可以直接用Spark SQL實(shí)時(shí)地在TiKV上做大數(shù)據(jù)分析。
用例4:作為其他系統(tǒng)的模塊
TiDB是一個(gè)傳統(tǒng)的存儲(chǔ)跟計(jì)算分離的項(xiàng)目,其底層的Key-Value層,可以單獨(dú)作為一個(gè)HBase的Replacement來用,它同時(shí)支持跨行事務(wù)。TiDB對外提供兩個(gè)API接口,一個(gè)是ACID Transaction的API,用于支持跨行事務(wù);另一個(gè)是Raw API,它可以做單行的事務(wù),換來的是整個(gè)性能的提升,但不提供跨行事務(wù)的ACID支持。用戶可以根據(jù)自身的需求在兩個(gè)API之間自行選擇。例如有一些用戶直接在 TiKV 之上實(shí)現(xiàn)了 Redis 協(xié)議,將 TiKV 替換一些大容量,對延遲要求不高的 Redis 場景。
尚待解決的問題
***,黃東旭提到了數(shù)據(jù)庫領(lǐng)域尚待解決的三大問題:
1、 多租戶:例如,整個(gè)集群云化之后,IO隔離還存在很大的問題,數(shù)據(jù)層如何做到更有效的資源隔離和復(fù)用是一個(gè)問題。
2、真正的自治:數(shù)據(jù)庫能否擁有真正的智能,如能夠自我維護(hù),自我修復(fù)以及自我性能調(diào)優(yōu)等。
3、如何利用新的硬件:如何利用Nvme SSD、Persistent Memory、GPU、FPGA等,軟硬結(jié)合的利用新時(shí)代的硬件提升數(shù)據(jù)庫的穩(wěn)定性。
以上內(nèi)容是51CTO記者根據(jù)PingCAP CTO黃東旭在WOT2018全球軟件與運(yùn)維技術(shù)峰會(huì)的演講內(nèi)容整理,更多關(guān)于WOT的內(nèi)容請關(guān)注51cto.com。
【51CTO原創(chuàng)稿件,合作站點(diǎn)轉(zhuǎn)載請注明原文作者和出處為51CTO.com】