從TDSQL,看分布式數(shù)據(jù)庫的技術(shù)之美

點(diǎn)擊可觀看精彩演講視頻
一、分布式數(shù)據(jù)庫架構(gòu)
我今天所分享的內(nèi)容主要集中在數(shù)據(jù)庫技術(shù)層面,和騰訊近十年的分布式數(shù)據(jù)庫技術(shù)發(fā)展息息相關(guān),主要有三方面:第一是分布式數(shù)據(jù)庫的歷史發(fā)展和演進(jìn);第二是分布式數(shù)據(jù)庫里較核心的技術(shù)內(nèi)容,包括相關(guān)的內(nèi)容知識點(diǎn);第三是騰訊TDSQL在前沿方面所做的工作。TDSQL是一個(gè)基于HTAP的分布式數(shù)據(jù)庫系統(tǒng),尤其強(qiáng)調(diào)強(qiáng)一致。2017-2018年我們提出過“全時(shí)態(tài)數(shù)據(jù)庫”的概念,當(dāng)時(shí)提出實(shí)現(xiàn)了一個(gè)叫做HTAC的混合事務(wù)分析處集群架構(gòu),HTAC和HTAP非常接近,在工程方面我們稱為HTAC,用一個(gè)理論的名詞來概括就是HTAP(混合事務(wù)分析處理系統(tǒng)),所以在那時(shí)我們就已經(jīng)推出自己的原創(chuàng)性產(chǎn)品,而這個(gè)產(chǎn)品這兩年的演化一直專注于強(qiáng)一致性,在去年我們推出了兼具理論與實(shí)踐的產(chǎn)品,清楚解釋了“強(qiáng)一致”這個(gè)概念。該技術(shù)對應(yīng)的產(chǎn)品,內(nèi)部經(jīng)過一段時(shí)間打磨后,載有該項(xiàng)技術(shù)的TDSQL將在TDSQL公有云等產(chǎn)品中很快推出。
1. 分布式系統(tǒng)經(jīng)典架構(gòu)概述
先來看第一部分,分布式數(shù)據(jù)庫的發(fā)展演進(jìn)。這幅圖在說明什么?里面在談一些基礎(chǔ)架構(gòu):Shared Nothing、Shared Memory、Shared Disk、Shared Everything。這些是什么?最早從哪里來?硬件層面是做軟件的基礎(chǔ),硬件層面的發(fā)展決定著軟件技術(shù)的發(fā)展,硬件層面把一些基本的框架搭好后,數(shù)據(jù)庫的軟件或者說應(yīng)用層、系統(tǒng)層的軟件都會(huì)在上面疊加,就像搭積木一樣,一塊一塊地往上壘。對于數(shù)據(jù)庫內(nèi)部其實(shí)也是這樣的,分模塊、分層次,之后這些東西都可以搭建在一起。但是數(shù)據(jù)庫有著緊耦合性較強(qiáng)的特點(diǎn),搭在一起后就很難拆開,但是現(xiàn)在做分布式數(shù)據(jù)庫的一個(gè)趨勢是要嘗試把這些東西拆分,再像搭積木一樣往上壘,哪個(gè)地方需要什么樣的組件,就去建設(shè)這樣的組件,模塊與模塊之間要解耦,解耦之后更易搭建,把這個(gè)系統(tǒng)搭得在將來更具擴(kuò)展性。分布式數(shù)據(jù)庫系統(tǒng)的底層基礎(chǔ)是和硬件緊密相關(guān)的。

2. 分布式系統(tǒng)架構(gòu)經(jīng)典主流技術(shù)
我從技術(shù)的角度展示一下數(shù)據(jù)庫的代表技術(shù)。在這幅圖中,第一個(gè)人是數(shù)據(jù)庫界圖靈獎(jiǎng)的第二位得主——關(guān)系模型的創(chuàng)始人科德博士,他在1970年的時(shí)候以一篇論文奠定了關(guān)系型數(shù)據(jù)庫的基礎(chǔ)。1974年時(shí)有兩個(gè)典型的技術(shù)誕生,一個(gè)是SQL語言,另外一個(gè)是事務(wù)處理技術(shù)。50多年前,數(shù)據(jù)庫界第三位圖靈獎(jiǎng)得主James Gray開始研究事務(wù)處理,并對得到了一系列的開創(chuàng)性的成果,所以事務(wù)處理奠基于70年代,直至今日。同年,IBM同樣誕生了一個(gè)開創(chuàng)性的技術(shù),就是我們所熟知的SQL,SQL這個(gè)概念是從IBM在做數(shù)據(jù)庫的研究起就開始提出的結(jié)構(gòu)化查詢語言。

再往后,是ER模型,ER模型是實(shí)體關(guān)系模型,能夠幫助我們做數(shù)據(jù)庫應(yīng)用的建模。但是,在數(shù)據(jù)庫技術(shù)的發(fā)展過程當(dāng)中出現(xiàn)了很多模型,包括前面說的1970年之前的關(guān)系模型、層次模型,再往前的網(wǎng)狀模型,這些模型和ER模型產(chǎn)生的初衷是一樣的,都是要從數(shù)據(jù)、數(shù)據(jù)層次的角度與實(shí)體世界進(jìn)行映射,以讓數(shù)據(jù)世界具備表達(dá)、計(jì)算實(shí)體世界的能力。只不過ER模型在發(fā)展過程中只被人們用于了關(guān)系建模(教科書擷取了精華展示,讀者的理解程度不再能全面深刻),但它背后包含的內(nèi)容其實(shí)和關(guān)系模型、層次模型是相同的,如果我們回顧歷史還原其初衷,則能從歷史當(dāng)中看到的一些基本的東西。
到了1980年,數(shù)據(jù)庫界出現(xiàn)基于代價(jià)的查詢優(yōu)化技術(shù),它能夠較好的選出一個(gè)近乎最優(yōu)的執(zhí)行計(jì)劃。此后,數(shù)據(jù)庫又演變出了基于火山模型的執(zhí)行器,推動(dòng)數(shù)據(jù)庫的技術(shù)進(jìn)一步發(fā)展。從這副圖中可以看出,數(shù)據(jù)庫技術(shù)發(fā)展基本上是從沒有事務(wù)到有事務(wù)概念這條主線上推進(jìn)的,到了1993年的時(shí)候有了AP和TP的分叉,這歸功于科德博士,他除了提出關(guān)系模型,又提出了OLAP的概念——在線分析事務(wù)處理,以前的主線就變成了OLTP和OLAP兩條分支。
隨著時(shí)光的繼續(xù)推移,2014年,有意思的事出現(xiàn)了,一個(gè)并不是學(xué)術(shù)研究機(jī)構(gòu)而是對行業(yè)的研究機(jī)構(gòu)——Gartner,推出一個(gè)概念:HTAP,期望在事務(wù)型的系統(tǒng)上增強(qiáng)分析的功能。這個(gè)概念這幾年大火,似乎在補(bǔ)救事務(wù)型數(shù)據(jù)庫的重事務(wù)處理弱分析能力的缺陷(概念分家,指導(dǎo)思想發(fā)生變化,看來還是有壞處的)。人們總是有一個(gè)美好意愿,在一個(gè)系統(tǒng)內(nèi)搞定所有的事情。這同人類的需求和不斷變化的認(rèn)知存在關(guān)系。
但在這之前,2012年谷歌的Spanner系統(tǒng)誕生了,它標(biāo)志著人們從不要SQL到擁抱SQL擁抱數(shù)據(jù)庫的事務(wù)處理技術(shù),演變成了New SQL系統(tǒng)。

前述這些技術(shù),是數(shù)據(jù)庫的經(jīng)典技術(shù),無論單機(jī)數(shù)據(jù)庫還是分布式數(shù)據(jù)庫,都基于這些基礎(chǔ)性的技術(shù)。雖然TDSQL是一個(gè)分布式數(shù)據(jù)庫,但里面90%甚至更多的基礎(chǔ)核心功能來自于單機(jī)數(shù)據(jù)庫系統(tǒng),所以技術(shù)的演進(jìn)其實(shí)是踏著前面的基礎(chǔ)而不斷演化的,分布式數(shù)據(jù)庫的技術(shù)離不開前面我們談到的關(guān)系模型、事務(wù)處理等基礎(chǔ)技術(shù)。因此我認(rèn)為做分布式數(shù)據(jù)庫離不開單機(jī)數(shù)據(jù)庫系統(tǒng),認(rèn)識分布式數(shù)據(jù)庫要先從單機(jī)數(shù)據(jù)庫系統(tǒng)入手,單機(jī)數(shù)據(jù)庫系統(tǒng)實(shí)際上就有了分布式數(shù)據(jù)庫的五臟六腑,它已經(jīng)比較全面。只是分布式數(shù)據(jù)庫在基礎(chǔ)技術(shù)之上,因系統(tǒng)架構(gòu)的變化,有了一些新挑戰(zhàn)。
下面,我們以MySQL的數(shù)據(jù)庫系統(tǒng)架構(gòu)為例,來分享單機(jī)數(shù)據(jù)庫系統(tǒng)包含了哪些模塊和組件。

左上角的SQL是一個(gè)入口,它執(zhí)行完的結(jié)果在這個(gè)箱子里轉(zhuǎn)了一圈后將結(jié)果返回用戶,進(jìn)入到數(shù)據(jù)庫系統(tǒng)里。左邊的是MySQL Server,右邊是它的存儲(chǔ)引擎,實(shí)際上整個(gè)數(shù)據(jù)庫可以分為三層:左邊的Server,右邊的存儲(chǔ)引擎,存儲(chǔ)引擎下面和操作系統(tǒng)緊密結(jié)合的是和外部文件相關(guān)的一部分內(nèi)容。Server在接收用戶的SQL語句并解析,就像編譯器,對于SQL語句做解析得到一棵語法樹,這棵語法樹經(jīng)過查詢優(yōu)化器的轉(zhuǎn)換變成邏輯查詢計(jì)劃,再變成物理查詢計(jì)劃,過程中會(huì)做很多優(yōu)化,就像子查詢優(yōu)化,表達(dá)式怎么去重、化簡等工作。再往后它就要交給執(zhí)行器去執(zhí)行,執(zhí)行器實(shí)際上和存儲(chǔ)系統(tǒng)是緊密綁定的,存儲(chǔ)系統(tǒng)的兩大部分,一部分是執(zhí)行器,各種SQL語句的執(zhí)行,DDL、DML、DQL等,它的執(zhí)行過程當(dāng)中又受到橫向的事務(wù)處理與它正交的組合,在事務(wù)處理系統(tǒng)的控制之下,各種SQL語句高并發(fā)地執(zhí)行,并經(jīng)過各種模塊。
模塊從底層往上看,數(shù)據(jù)庫系統(tǒng)最底層的是一個(gè)文件,因?yàn)樗嬖诓僮飨到y(tǒng)上,而操作系統(tǒng)上是以文件為單位來組織數(shù)據(jù)的,所以大家可以看到最底層的是一些物理文件,物理文件有它的格式,格式上就有數(shù)據(jù)庫自己定義的各種數(shù)據(jù)格式。數(shù)據(jù)可以分為兩部分,一部分是用戶數(shù)據(jù),一部分是數(shù)據(jù)庫系統(tǒng)自身要維護(hù)的日志數(shù)據(jù),數(shù)據(jù)可以讀入寫出有物理的IO產(chǎn)生,其要和存儲(chǔ)引擎,也就是執(zhí)行器加存儲(chǔ)系統(tǒng)打交道。數(shù)據(jù)被讀入后進(jìn)入內(nèi)存,不同的數(shù)據(jù)庫有其自己特定的數(shù)據(jù)格式,這需要access解析格式,初始面對的是一個(gè)一個(gè)物理頁面,把它們先加載到緩存區(qū)里,然后做格式的轉(zhuǎn)化,物理頁面被解析成一個(gè)一個(gè)的記錄和列,便于上層對它進(jìn)行計(jì)算。當(dāng)這些解析完成后,比如有兩個(gè)客戶端連進(jìn)來,那就有讀寫同樣數(shù)據(jù)的可能,因此有并發(fā)存在,就可能會(huì)產(chǎn)生數(shù)據(jù)異常,事務(wù)處理系統(tǒng)這時(shí)候就要發(fā)生作用——避免數(shù)據(jù)異常、保證數(shù)據(jù)的一致性,經(jīng)過計(jì)算之后再把結(jié)果通過SQL Server向上返回。作為一個(gè)分布式數(shù)據(jù)庫系統(tǒng)而言,它離不開這個(gè)執(zhí)行過程,也離不開這里面所包含的基礎(chǔ)模塊和組件。
數(shù)據(jù)庫系統(tǒng)是發(fā)展和逐漸演進(jìn)的。實(shí)際上早期做單機(jī)數(shù)據(jù)庫的大家都熟悉主從架構(gòu),MySQL的主從架構(gòu)是基于邏輯和物理混合的,但更多是偏向邏輯地做主從架構(gòu)的數(shù)據(jù)傳輸。而后純粹的單機(jī)數(shù)據(jù)庫系統(tǒng)推進(jìn)了一步,成為近似于分布的,物理節(jié)點(diǎn)已經(jīng)變成多個(gè),但是一主多備,多備只能去做讀,還不是純粹的分布式數(shù)據(jù)庫系統(tǒng),所以數(shù)據(jù)庫系統(tǒng)實(shí)際上架構(gòu)的發(fā)展分成兩代,第一代是純的單機(jī)系統(tǒng),第二代是分布式系統(tǒng),介于第一代和第二代之間就有這么一個(gè)過渡性的階段,我把它稱之為1.5代,但是它還歸屬于單機(jī)數(shù)據(jù)庫系統(tǒng),所以有了這樣一個(gè)主從架構(gòu)。典型的每一個(gè)數(shù)據(jù)庫都做了基于物理日志的,像Oracle、PG流復(fù)制等,但MySQL基于邏輯日志這樣的格式去做主從結(jié)構(gòu)的。
時(shí)光推移到七八年前,亞馬遜的Aurora系統(tǒng)誕生,它本質(zhì)上還是主從架構(gòu)、一主多備式的,進(jìn)步的地方在于做成了一個(gè)云上的存算分離的系統(tǒng)。所以1.5時(shí)代的產(chǎn)品,典型的代表是類似于早期的主從+Aurora這種架構(gòu),這是一個(gè)過渡時(shí)代。再往后我們會(huì)進(jìn)入到真正的分布式數(shù)據(jù)庫時(shí)代,它典型的標(biāo)志是什么?是多寫,在每一個(gè)節(jié)點(diǎn)上都平等地對待,可以在每一個(gè)節(jié)點(diǎn)上寫,這里面的技術(shù)就又有多種,有的是偽的分布式,其把事務(wù)的所有寫操作集中在單一的節(jié)點(diǎn)上去做,真的分布式是利用分布式并發(fā)訪問控制算法,在每一個(gè)節(jié)點(diǎn)上去做數(shù)據(jù)一致性的保障。

3. 小結(jié)
數(shù)據(jù)庫基本架構(gòu)的演進(jìn)就是經(jīng)歷了這么一個(gè)過程,總結(jié)一下,反過來從技術(shù)角度來看究竟是什么因素在推動(dòng)分布式數(shù)據(jù)庫系統(tǒng)的演進(jìn)。其實(shí)數(shù)據(jù)庫系統(tǒng)有一些內(nèi)在的、本質(zhì)性的需求在推動(dòng)它,我們以前說數(shù)據(jù)庫系統(tǒng)里面有“三高一易”,高可靠、高可用、高性能、易用性等等,這些基礎(chǔ)因素在推動(dòng)著分布式技術(shù)不斷地向前發(fā)展,到后來演化成分布式數(shù)據(jù)庫系統(tǒng)的時(shí)候,對于水平擴(kuò)展的要求提上日程,所以我的第一個(gè)總結(jié)是針對擴(kuò)展,不僅是垂直擴(kuò)展,而且要水平擴(kuò)展,所以對于擴(kuò)展性下的多讀多寫場景,使得分布式數(shù)據(jù)庫的結(jié)構(gòu)變成純粹的每一個(gè)節(jié)點(diǎn)都是對等的結(jié)構(gòu)。在分布系統(tǒng)里要講究可用性,包括數(shù)據(jù)層面的可用如共識協(xié)議下的數(shù)據(jù)多副本機(jī)制、也包括整個(gè)系統(tǒng)功能層面的可用。如果以較少的投入獲得高的性能,那就可以對外支撐更多的業(yè)務(wù),成本就會(huì)更低。所以對于數(shù)據(jù)庫內(nèi)在原生的要求從單機(jī)數(shù)據(jù)庫系統(tǒng)到分布式數(shù)據(jù)庫系統(tǒng)一直沒有發(fā)生過變化。這是我分享的第一部分。

二、分布式事務(wù)與一致性
1. 數(shù)據(jù)異常
第二部分,我們來看看分布式數(shù)據(jù)庫系統(tǒng)里面的技術(shù)層面會(huì)包含一些什么樣的內(nèi)容。事務(wù)型分布式數(shù)據(jù)庫系統(tǒng)里面最核心的,一定是事務(wù)處理技術(shù)。數(shù)據(jù)庫的操作經(jīng)過抽象以后就有兩種,一種是讀操作,一種是寫操作,當(dāng)有了并發(fā)存在的時(shí)候,至少有兩個(gè)事務(wù)讀寫同樣數(shù)據(jù)項(xiàng)的時(shí)候,就可能產(chǎn)生數(shù)據(jù)異常。


2. 缺少一致性面臨的挑戰(zhàn)與業(yè)界解決方案
但分布式數(shù)據(jù)庫系統(tǒng)面臨的不只這些問題。因?yàn)閿?shù)據(jù)庫從一個(gè)集中式系統(tǒng)擴(kuò)展變成了每一個(gè)都邏輯獨(dú)立的子系統(tǒng),但對外它的行為還像一個(gè)物理單一的數(shù)據(jù)庫系統(tǒng)要表現(xiàn)的一樣,這就面臨著新的挑戰(zhàn)。單機(jī)數(shù)據(jù)庫系統(tǒng)上做事務(wù)處理要保證ACID,分布式系統(tǒng)里面也要保證ACID,但是分布式系統(tǒng)里面要有分布式一致性,如:線性一致、順序一致、因果一致,還有讀后寫、寫后讀等等,而這兩個(gè)碰到一起就會(huì)產(chǎn)生新的問題,這是分布式系統(tǒng)要解決的。

不只是上面提及的問題,我們面對的問題更為復(fù)雜。例如,如下這張圖概況了各種分布式一致性的概念,很復(fù)雜,這里面大約有近60種分布式一致性,光把這幅圖弄清楚、把每一種一致性弄清楚,已經(jīng)不容易了,再和事務(wù)的ACID結(jié)合,難度就會(huì)更大。

業(yè)界對于分布式事務(wù)的一致性,是有研究的。如下圖,我大概解釋一下這幅圖的內(nèi)容:左上角事務(wù)一致性,左下角分布式一致性,右上角有個(gè)隔離級別下的事務(wù)一致性問題,這是數(shù)據(jù)庫里要處理的事情,但偏偏就在該圖這個(gè)紅色方框,分布式一致性和事務(wù)處理里面結(jié)合的這些地方目前為止沒有相關(guān)的理論和技術(shù)來支撐,而這些也正是TDSQL在做分布式數(shù)據(jù)庫系統(tǒng)當(dāng)中致力于解決的問題。對比業(yè)界谷歌的Spanner,Spanner做到了真的強(qiáng)一致,這是目前我看到的唯一的強(qiáng)一致系統(tǒng),唯二是TDSQL。Spanner做到了線性一致加ACID數(shù)據(jù)一致性的融合,業(yè)界實(shí)際上早有這個(gè)概念叫做嚴(yán)格可串行化,它能在全局層面保證分布式系統(tǒng)下數(shù)據(jù)的一致性,這才是真的強(qiáng)一致(請注意,這里強(qiáng)調(diào)全局,即從任何一個(gè)節(jié)點(diǎn)看去讀取數(shù)據(jù),大家都能讀到一樣的結(jié)果,不可能不同節(jié)點(diǎn)獲得不同的觀察結(jié)果)。

但是如果對Spanner做一個(gè)測試或者理論推導(dǎo),會(huì)發(fā)現(xiàn)Spanner系統(tǒng)的事務(wù)處理性能非常差。Spanner能用到什么地方?就是用到非實(shí)時(shí)性廣告系統(tǒng)數(shù)據(jù)的處理上面,但是大家聽說過Spanner用到過金融系統(tǒng)里面嗎?沒有,此種背景下,就對TDSQL構(gòu)成新挑戰(zhàn)了,因?yàn)門DSQL要用到金融系統(tǒng)業(yè)務(wù)里面,我們既要保證正確性,又要保證性能。

而做分布式數(shù)據(jù)庫還面臨著做高并發(fā)執(zhí)行器需要的技術(shù)MPP。

從一開始我們就提到了數(shù)據(jù)庫基于硬件系統(tǒng)搭建,受限于硬件,作為分布式數(shù)據(jù)庫,還面臨什么問題?我們在研究它和新硬件有什么關(guān)系,剛才蓋老師談到了Oracle21c,21c做了持久化內(nèi)存和數(shù)據(jù)庫的結(jié)合,但它是單機(jī)的結(jié)合,而TDSQL要做和分布式系統(tǒng)的結(jié)合。比如早期和SSD這樣的硬件結(jié)合,現(xiàn)在和持久化內(nèi)存、和RDMA結(jié)合,都是我們在做的事情。
所有這些事情都有一個(gè)外在的需求驅(qū)動(dòng),就是數(shù)據(jù)量的變化。數(shù)據(jù)量的變化有幾個(gè)層面,第一個(gè)很重要,但大家可能并沒有完全感受到,就是元數(shù)據(jù)。對于一個(gè)分布式數(shù)據(jù)庫系統(tǒng)來講,元數(shù)據(jù)會(huì)劇增,也會(huì)對數(shù)據(jù)庫提出一些新的挑戰(zhàn),不僅如此,數(shù)據(jù)庫系統(tǒng)里面還有什么?我們知道大家都在談AI for DB,這時(shí)AI系統(tǒng)一定需要大量的數(shù)據(jù),這大量的數(shù)據(jù)就要有一個(gè)存儲(chǔ),有些系統(tǒng)是把AI所需數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫之外,而我們在考慮,能否存儲(chǔ)在數(shù)據(jù)庫之內(nèi)?如果能又以什么形式存儲(chǔ)?這都是作為分布式技術(shù)要研究、考慮的基礎(chǔ)問題。
三、基于HTAP的TDSQL強(qiáng)一致性技術(shù)實(shí)踐
所以分布式數(shù)據(jù)庫包含了比較多的內(nèi)容:事務(wù)處理數(shù)據(jù)量的存儲(chǔ)層面、計(jì)算層面等方面的問題,基于這些需求,我們展開了基礎(chǔ)研究,做了TDSQL的HTAC系統(tǒng),里面包含多種多樣內(nèi)容。這是我們系統(tǒng)的基礎(chǔ)架構(gòu)圖,它看起來像一個(gè)單機(jī)系統(tǒng),但是里面會(huì)有很多小的細(xì)節(jié),可以看出其是一個(gè)分布式系統(tǒng)。
在這個(gè)系統(tǒng)里會(huì)包含多種多樣的技術(shù),其中核心的就是我剛才談到的和事務(wù)處理相關(guān)的——怎么保證強(qiáng)一致。
而根據(jù)我們的研究,發(fā)現(xiàn)數(shù)據(jù)異常有無數(shù)個(gè),無窮盡的東西,怎么去認(rèn)知?這又形成新的挑戰(zhàn)。TDSQL在做的一項(xiàng)工作事就是對數(shù)據(jù)異常歸類,把數(shù)據(jù)異常分成有限的若干種,對它進(jìn)行認(rèn)知,基于這樣的認(rèn)知就可以定義什么叫隔離級別、什么叫一致性,怎么去影響、看待現(xiàn)有所有的并發(fā)訪問控制算法,怎么和分布式一致性去結(jié)合,這都是TDSQL在研的一些基礎(chǔ)技術(shù),也是剛才談到的一致性技術(shù)里面的基礎(chǔ)內(nèi)容。

接下來分享下我們做出的工作。左上角是學(xué)術(shù)界的認(rèn)識,左下角是業(yè)界的現(xiàn)有產(chǎn)品對于強(qiáng)一致的支持程度,右下角是我們得出來的結(jié)果,我們把左上角那棵樹變成了右下角的一張網(wǎng),意思是把樹上很多看似沒有關(guān)聯(lián)關(guān)系的節(jié)點(diǎn)交織在一起聯(lián)系起來,這里面就涉及到強(qiáng)一致性相關(guān)的技術(shù)內(nèi)容。

基于剛才的技術(shù),我們研發(fā)出了多級一致性技術(shù),即多種級別的可串行化技術(shù),使得在分布式系統(tǒng)下,可串行化又可以分為多種級別。我們在谷歌云上買了Spanner服務(wù),對比了Spanner,在GreenPlum上實(shí)現(xiàn)了多級一致性技術(shù),又在MIT開源的一個(gè)系統(tǒng)上對比了多種并發(fā)訪問控制算法,實(shí)驗(yàn)結(jié)果表明,TDSQL的性能都更好(該技術(shù)在2020年的DTCC上做過公開分享)。

最后總結(jié),分布式數(shù)據(jù)庫的挑戰(zhàn)、問題在哪里?我以一個(gè)目錄結(jié)構(gòu)列出了這些內(nèi)容。該目錄結(jié)構(gòu)分為兩部分,左面部分是數(shù)據(jù)處理技術(shù)其自身對數(shù)據(jù)庫的內(nèi)在驅(qū)動(dòng)需求,右面部分是基于數(shù)據(jù)庫所處的外部環(huán)境對于數(shù)據(jù)庫的驅(qū)動(dòng)因素。大家可以觀察目錄所列的這些基本因素,以了解分布式數(shù)據(jù)庫的相關(guān)技術(shù)點(diǎn)。數(shù)據(jù)庫內(nèi)在的需求其實(shí)有分布式和存儲(chǔ)架構(gòu)相關(guān)的,數(shù)據(jù)分布、存儲(chǔ)管理、多副本、存算分離、多讀多寫、查詢優(yōu)化、MPP。這個(gè)思路其實(shí)和我剛才所分享的脈絡(luò)是一脈相承的,又和高可用、和事務(wù)處理相關(guān),這些都是分布式數(shù)據(jù)庫的內(nèi)在需求,驅(qū)動(dòng)著數(shù)據(jù)庫技術(shù)繼續(xù)不斷地前進(jìn)。
從外面的來看,新硬件、智能數(shù)據(jù)庫、云計(jì)算,這些是計(jì)算對于數(shù)據(jù)庫系統(tǒng)的要求;HTAP,還有下一代所謂的New SQL,數(shù)據(jù)庫也在不斷地演進(jìn),此過程中還會(huì)產(chǎn)生一些新的技術(shù)和內(nèi)容。所以做分布式數(shù)據(jù)庫,大部分就是基于單機(jī)數(shù)據(jù)庫系統(tǒng),再做一些和分布式相關(guān)的事。分布式相關(guān)的事情大概是我前面提到的那些主流技術(shù),這張目錄結(jié)構(gòu)把沒有包括的基本核心內(nèi)容都包含了。
其中,特別說明一點(diǎn),是去中心化。做分布式數(shù)據(jù)庫一定要考慮去中心化,也就是各個(gè)節(jié)點(diǎn)之間是對等的,考慮一個(gè)并發(fā)訪問控制算法的時(shí)候,這個(gè)算法是不是去中心化的?它們之間的關(guān)系是不是對等的?都是要考慮的。

最后,如果大家對核心的基礎(chǔ)技術(shù)感興趣,可以關(guān)注我們3TS的系統(tǒng),它的研究目標(biāo)主要包括:比如分布式事務(wù)處理怎么去做,它和性能擴(kuò)展性、安全性、一致性等等這些的關(guān)系是什么,怎么評價(jià)這個(gè)分布式數(shù)據(jù)庫系統(tǒng),數(shù)據(jù)異常有多少(我們回答了數(shù)據(jù)異常有無數(shù)個(gè),但可以歸類為有限種),并發(fā)訪問控制算法怎么改進(jìn)等技術(shù)。
期待和各位朋友深度交流。謝謝大家。
講師簡介
李海翔
騰訊云數(shù)據(jù)庫專家工程師
騰訊云數(shù)據(jù)庫專家工程師,負(fù)責(zé)騰訊TDSQL研發(fā)工作。中國人民大學(xué)信息學(xué)院工程碩士企業(yè)導(dǎo)師,CCF數(shù)據(jù)庫專委會(huì)委員,DTCC(中國數(shù)據(jù)庫技術(shù)大會(huì))專家委員會(huì)委員。出版有《數(shù)據(jù)庫查詢優(yōu)化器的藝術(shù):原理解析與SQL性能優(yōu)化》、《數(shù)據(jù)庫事務(wù)處理的藝術(shù):事務(wù)管理和并發(fā)訪問控制》、《大數(shù)據(jù)管理》。申請與授權(quán)專利50+,VLDB等頂會(huì)論文若干篇。參與包括國家863重大專項(xiàng)、核高基、工信部、科技部等多項(xiàng)目。獲北京市科技進(jìn)步一等獎(jiǎng)。
點(diǎn)擊觀看峰會(huì)的精彩總結(jié)視頻??


