<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 8226字,需瀏覽 17分鐘

           ·

          2021-05-22 08:05

          每一個時間段總是一個新時代,新技術(shù)層出不窮使得數(shù)據(jù)庫技術(shù)煥發(fā)新生。Spanner、CockroachDB、TDSQL等分布式數(shù)據(jù)庫正是這個時代的弄潮兒。本文由騰訊云數(shù)據(jù)庫專家工程師 李海翔在 Techo TVP開發(fā)者峰會「數(shù)據(jù)的冰與火之歌——從在線數(shù)據(jù)庫技術(shù),到海量數(shù)據(jù)分析技術(shù)」 的《分布式數(shù)據(jù)庫的演進(jìn)》演講分享整理而成,帶大家品味分布式數(shù)據(jù)庫架構(gòu)、前沿技術(shù)和TDSQL技術(shù)實(shí)踐,感受分布式數(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是一個基于HTAP的分布式數(shù)據(jù)庫系統(tǒng),尤其強(qiáng)調(diào)強(qiáng)一致。2017-2018年我們提出過“全時態(tài)數(shù)據(jù)庫”的概念,當(dāng)時提出實(shí)現(xiàn)了一個叫做HTAC的混合事務(wù)分析處集群架構(gòu),HTAC和HTAP非常接近,在工程方面我們稱為HTAC,用一個理論的名詞來概括就是HTAP(混合事務(wù)分析處理系統(tǒng)),所以在那時我們就已經(jīng)推出自己的原創(chuàng)性產(chǎn)品,而這個產(chǎn)品這兩年的演化一直專注于強(qiáng)一致性,在去年我們推出了兼具理論與實(shí)踐的產(chǎn)品,清楚解釋了“強(qiáng)一致”這個概念。該技術(shù)對應(yīng)的產(chǎn)品,內(nèi)部經(jīng)過一段時間打磨后,載有該項(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)層的軟件都會在上面疊加,就像搭積木一樣,一塊一塊地往上壘。對于數(shù)據(jù)庫內(nèi)部其實(shí)也是這樣的,分模塊、分層次,之后這些東西都可以搭建在一起。但是數(shù)據(jù)庫有著緊耦合性較強(qiáng)的特點(diǎn),搭在一起后就很難拆開,但是現(xiàn)在做分布式數(shù)據(jù)庫的一個趨勢是要嘗試把這些東西拆分,再像搭積木一樣往上壘,哪個地方需要什么樣的組件,就去建設(shè)這樣的組件,模塊與模塊之間要解耦,解耦之后更易搭建,把這個系統(tǒng)搭得在將來更具擴(kuò)展性。分布式數(shù)據(jù)庫系統(tǒng)的底層基礎(chǔ)是和硬件緊密相關(guān)的



          2. 分布式系統(tǒng)架構(gòu)經(jīng)典主流技術(shù)


          我從技術(shù)的角度展示一下數(shù)據(jù)庫的代表技術(shù)。在這幅圖中,第一個人是數(shù)據(jù)庫界圖靈獎的第二位得主——關(guān)系模型的創(chuàng)始人科德博士,他在1970年的時候以一篇論文奠定了關(guān)系型數(shù)據(jù)庫的基礎(chǔ)。1974年時有兩個典型的技術(shù)誕生,一個是SQL語言,另外一個是事務(wù)處理技術(shù)。50多年前,數(shù)據(jù)庫界第三位圖靈獎得主James Gray開始研究事務(wù)處理,并對得到了一系列的開創(chuàng)性的成果,所以事務(wù)處理奠基于70年代,直至今日。同年,IBM同樣誕生了一個開創(chuàng)性的技術(shù),就是我們所熟知的SQL,SQL這個概念是從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á)、計算實(shí)體世界的能力。只不過ER模型在發(fā)展過程中只被人們用于了關(guān)系建模(教科書擷取了精華展示,讀者的理解程度不再能全面深刻),但它背后包含的內(nèi)容其實(shí)和關(guān)系模型、層次模型是相同的,如果我們回顧歷史還原其初衷,則能從歷史當(dāng)中看到的一些基本的東西。


          到了1980年,數(shù)據(jù)庫界出現(xiàn)基于代價的查詢優(yōu)化技術(shù),它能夠較好的選出一個近乎最優(yōu)的執(zhí)行計劃。此后,數(shù)據(jù)庫又演變出了基于火山模型的執(zhí)行器,推動數(shù)據(jù)庫的技術(shù)進(jìn)一步發(fā)展。從這副圖中可以看出,數(shù)據(jù)庫技術(shù)發(fā)展基本上是從沒有事務(wù)到有事務(wù)概念這條主線上推進(jìn)的,到了1993年的時候有了AP和TP的分叉,這歸功于科德博士,他除了提出關(guān)系模型,又提出了OLAP的概念——在線分析事務(wù)處理,以前的主線就變成了OLTP和OLAP兩條分支。


          隨著時光的繼續(xù)推移,2014年,有意思的事出現(xiàn)了,一個并不是學(xué)術(shù)研究機(jī)構(gòu)而是對行業(yè)的研究機(jī)構(gòu)——Gartner,推出一個概念:HTAP,期望在事務(wù)型的系統(tǒng)上增強(qiáng)分析的功能。這個概念這幾年大火,似乎在補(bǔ)救事務(wù)型數(shù)據(jù)庫的重事務(wù)處理弱分析能力的缺陷(概念分家,指導(dǎo)思想發(fā)生變化,看來還是有壞處的)。人們總是有一個美好意愿,在一個系統(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是一個分布式數(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是一個入口,它執(zhí)行完的結(jié)果在這個箱子里轉(zhuǎn)了一圈后將結(jié)果返回用戶,進(jìn)入到數(shù)據(jù)庫系統(tǒng)里。左邊的是MySQL Server,右邊是它的存儲引擎,實(shí)際上整個數(shù)據(jù)庫可以分為三層:左邊的Server,右邊的存儲引擎,存儲引擎下面和操作系統(tǒng)緊密結(jié)合的是和外部文件相關(guān)的一部分內(nèi)容。Server在接收用戶的SQL語句并解析,就像編譯器,對于SQL語句做解析得到一棵語法樹,這棵語法樹經(jīng)過查詢優(yōu)化器的轉(zhuǎn)換變成邏輯查詢計劃,再變成物理查詢計劃,過程中會做很多優(yōu)化,就像子查詢優(yōu)化,表達(dá)式怎么去重、化簡等工作。再往后它就要交給執(zhí)行器去執(zhí)行,執(zhí)行器實(shí)際上和存儲系統(tǒng)是緊密綁定的,存儲系統(tǒng)的兩大部分,一部分是執(zhí)行器,各種SQL語句的執(zhí)行,DDL、DML、DQL等,它的執(zhí)行過程當(dāng)中又受到橫向的事務(wù)處理與它正交的組合,在事務(wù)處理系統(tǒng)的控制之下,各種SQL語句高并發(fā)地執(zhí)行,并經(jīng)過各種模塊。


          模塊從底層往上看,數(shù)據(jù)庫系統(tǒng)最底層的是一個文件,因?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)生,其要和存儲引擎,也就是執(zhí)行器加存儲系統(tǒng)打交道。數(shù)據(jù)被讀入后進(jìn)入內(nèi)存,不同的數(shù)據(jù)庫有其自己特定的數(shù)據(jù)格式,這需要access解析格式,初始面對的是一個一個物理頁面,把它們先加載到緩存區(qū)里,然后做格式的轉(zhuǎn)化,物理頁面被解析成一個一個的記錄和列,便于上層對它進(jìn)行計算。當(dāng)這些解析完成后,比如有兩個客戶端連進(jìn)來,那就有讀寫同樣數(shù)據(jù)的可能,因此有并發(fā)存在,就可能會產(chǎn)生數(shù)據(jù)異常,事務(wù)處理系統(tǒng)這時候就要發(fā)生作用——避免數(shù)據(jù)異常、保證數(shù)據(jù)的一致性,經(jīng)過計算之后再把結(jié)果通過SQL Server向上返回。作為一個分布式數(shù)據(jù)庫系統(tǒng)而言,它離不開這個執(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)變成多個,但是一主多備,多備只能去做讀,還不是純粹的分布式數(shù)據(jù)庫系統(tǒng),所以數(shù)據(jù)庫系統(tǒng)實(shí)際上架構(gòu)的發(fā)展分成兩代,第一代是純的單機(jī)系統(tǒng),第二代是分布式系統(tǒng),介于第一代和第二代之間就有這么一個過渡性的階段,我把它稱之為1.5代,但是它還歸屬于單機(jī)數(shù)據(jù)庫系統(tǒng),所以有了這樣一個主從架構(gòu)。典型的每一個數(shù)據(jù)庫都做了基于物理日志的,像Oracle、PG流復(fù)制等,但MySQL基于邏輯日志這樣的格式去做主從結(jié)構(gòu)的。


          時光推移到七八年前,亞馬遜的Aurora系統(tǒng)誕生,它本質(zhì)上還是主從架構(gòu)、一主多備式的,進(jìn)步的地方在于做成了一個云上的存算分離的系統(tǒng)。所以1.5時代的產(chǎn)品,典型的代表是類似于早期的主從+Aurora這種架構(gòu),這是一個過渡時代。再往后我們會進(jìn)入到真正的分布式數(shù)據(jù)庫時代,它典型的標(biāo)志是什么?是多寫,在每一個節(jié)點(diǎn)上都平等地對待,可以在每一個節(jié)點(diǎn)上寫,這里面的技術(shù)就又有多種,有的是偽的分布式,其把事務(wù)的所有寫操作集中在單一的節(jié)點(diǎn)上去做,真的分布式是利用分布式并發(fā)訪問控制算法,在每一個節(jié)點(diǎn)上去做數(shù)據(jù)一致性的保障



          3. 小結(jié)


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




          分布式事務(wù)與一致性



          1. 數(shù)據(jù)異常


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



          左邊的圖在說當(dāng)讀寫在兩個事務(wù)的正交之下,就是2×2四種情況,四種情況里只有讀和讀不會產(chǎn)生數(shù)據(jù)異常,其他的組合都會產(chǎn)生數(shù)據(jù)異常,這是數(shù)據(jù)異常產(chǎn)生的原因。因?yàn)橛胁l(fā)讀寫相同的數(shù)據(jù)項(xiàng),事務(wù)處理就是要解決這樣的問題。事務(wù)處理有ACID四個特性,其中的C是一致性,I是隔離性,其實(shí)C和I是相同的內(nèi)容,就像硬幣的兩個面,保證一致、保證隔離,隔離級別弱一點(diǎn),一致性會差一點(diǎn),會允許一些數(shù)據(jù)異常存在,也就是右邊這部分表示的,一些特定的數(shù)據(jù)異?,F(xiàn)象會發(fā)生。

          這幅圖總結(jié)了部分?jǐn)?shù)據(jù)異?,F(xiàn)象,但實(shí)際上數(shù)據(jù)異常不只是這么一點(diǎn)點(diǎn),TDSQL在做的一項(xiàng)工作是:系統(tǒng)化地研究數(shù)據(jù)異常到底有多少種。目前為止人類都不能夠解釋清楚數(shù)據(jù)異常到底有多少。

          SQL標(biāo)準(zhǔn)定義了四種數(shù)據(jù)異常、四種隔離級別,James Gray在里1995年的一篇論文定義了八種數(shù)據(jù)異常、八種隔離級別,在這種情況下,如果突然又發(fā)現(xiàn)第9個數(shù)據(jù)異常,按照SQL標(biāo)準(zhǔn),它應(yīng)該被放在這兩個體系下的哪一個隔離級別之下?這樣的問題在目前是不能回答的,而這也是TDSQL在做分布式數(shù)據(jù)庫研發(fā)過程當(dāng)中所遇到的、所要解決的問題,只有回答了這樣的問題之后,一個系統(tǒng)才能真正做到強(qiáng)一致,所幸我們目前對這樣的一個基礎(chǔ)問題有了明確的答案,并且秉持騰訊開源精神,把這項(xiàng)研究結(jié)果開源到了3TS系統(tǒng)(Tencent Transaction Processing Testbed System)。

          解決數(shù)據(jù)異常的一些技術(shù)就是并發(fā)訪問控制算法,而并發(fā)訪問控制算法又有很多,比如基于封鎖的、基于時間戳的、基于樂觀機(jī)制的等等。TDSQL開源的系統(tǒng)是做基礎(chǔ)技術(shù)研究的,即騰訊事務(wù)處理實(shí)驗(yàn)床,我們的系統(tǒng)叫做3TS,取剛才我說的那幾個詞里面的第一個字母T,所以有三個T,就是3TS。

          而解決分布式數(shù)據(jù)庫系統(tǒng)里面和事務(wù)相關(guān)的技術(shù),比較重要的還有一種數(shù)據(jù)異?!x半已提交。讀半已提交這樣的數(shù)據(jù)異常是基于物理分布的系統(tǒng)上產(chǎn)生的,在一個節(jié)點(diǎn)上某個數(shù)據(jù)項(xiàng)已經(jīng)提交了,轉(zhuǎn)賬的另一個節(jié)點(diǎn)上的還沒提交,這時來第二個事務(wù)去讀這兩個節(jié)點(diǎn),一定能讀到已提交的那個節(jié)點(diǎn)上的數(shù)據(jù),但是讀不到未提交節(jié)點(diǎn)上的數(shù)據(jù),也就是在未提交節(jié)點(diǎn)上所讀到的數(shù)據(jù)是舊的數(shù)據(jù),舊的數(shù)據(jù)和已提交的新數(shù)據(jù)二者之間不能保證數(shù)據(jù)一致性,所以會產(chǎn)生稱之為讀半已提交的數(shù)據(jù)異常,這就是分布式數(shù)據(jù)庫在事務(wù)處理層面即一致性方面要解決的問題。



          2. 缺少一致性面臨的挑戰(zhàn)與業(yè)界解決方案


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



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



          業(yè)界對于分布式事務(wù)的一致性,是有研究的。如下圖,我大概解釋一下這幅圖的內(nèi)容:左上角事務(wù)一致性,左下角分布式一致性,右上角有個隔離級別下的事務(wù)一致性問題,這是數(shù)據(jù)庫里要處理的事情,但偏偏就在該圖這個紅色方框,分布式一致性和事務(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í)際上早有這個概念叫做嚴(yán)格可串行化,它能在全局層面保證分布式系統(tǒng)下數(shù)據(jù)的一致性,這才是真的強(qiáng)一致(請注意,這里強(qiáng)調(diào)全局,即從任何一個節(jié)點(diǎn)看去讀取數(shù)據(jù),大家都能讀到一樣的結(jié)果,不可能不同節(jié)點(diǎn)獲得不同的觀察結(jié)果)。



          但是如果對Spanner做一個測試或者理論推導(dǎo),會發(fā)現(xiàn)Spanner系統(tǒng)的事務(wù)處理性能非常差。Spanner能用到什么地方?就是用到非實(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é)合,都是我們在做的事情。


          所有這些事情都有一個外在的需求驅(qū)動,就是數(shù)據(jù)量的變化。數(shù)據(jù)量的變化有幾個層面,第一個很重要,但大家可能并沒有完全感受到,就是元數(shù)據(jù)。對于一個分布式數(shù)據(jù)庫系統(tǒng)來講,元數(shù)據(jù)會劇增,也會對數(shù)據(jù)庫提出一些新的挑戰(zhàn),不僅如此,數(shù)據(jù)庫系統(tǒng)里面還有什么?我們知道大家都在談AI for DB,這時AI系統(tǒng)一定需要大量的數(shù)據(jù),這大量的數(shù)據(jù)就要有一個存儲,有些系統(tǒng)是把AI所需數(shù)據(jù)存儲在數(shù)據(jù)庫之外,而我們在考慮,能否存儲在數(shù)據(jù)庫之內(nèi)?如果能又以什么形式存儲?這都是作為分布式技術(shù)要研究、考慮的基礎(chǔ)問題。



          基于HTAP的TDSQL強(qiáng)一致性技術(shù)實(shí)踐



          所以分布式數(shù)據(jù)庫包含了比較多的內(nèi)容:事務(wù)處理數(shù)據(jù)量的存儲層面、計算層面等方面的問題,基于這些需求,我們展開了基礎(chǔ)研究,做了TDSQL的HTAC系統(tǒng),里面包含多種多樣內(nèi)容。這是我們系統(tǒng)的基礎(chǔ)架構(gòu)圖,它看起來像一個單機(jī)系統(tǒng),但是里面會有很多小的細(xì)節(jié),可以看出其是一個分布式系統(tǒng)。


          在這個系統(tǒng)里會包含多種多樣的技術(shù),其中核心的就是我剛才談到的和事務(wù)處理相關(guān)的——怎么保證強(qiáng)一致。


          而根據(jù)我們的研究,發(fā)現(xiàn)數(shù)據(jù)異常有無數(shù)個,無窮盡的東西,怎么去認(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開源的一個系統(tǒng)上對比了多種并發(fā)訪問控制算法,實(shí)驗(yàn)結(jié)果表明,TDSQL的性能都更好(該技術(shù)在2020年的DTCC上做過公開分享)。



          最后總結(jié),分布式數(shù)據(jù)庫的挑戰(zhàn)、問題在哪里?我以一個目錄結(jié)構(gòu)列出了這些內(nèi)容。該目錄結(jié)構(gòu)分為兩部分,左面部分是數(shù)據(jù)處理技術(shù)其自身對數(shù)據(jù)庫的內(nèi)在驅(qū)動需求,右面部分是基于數(shù)據(jù)庫所處的外部環(huán)境對于數(shù)據(jù)庫的驅(qū)動因素。大家可以觀察目錄所列的這些基本因素,以了解分布式數(shù)據(jù)庫的相關(guān)技術(shù)點(diǎn)。數(shù)據(jù)庫內(nèi)在的需求其實(shí)有分布式和存儲架構(gòu)相關(guān)的,數(shù)據(jù)分布、存儲管理、多副本、存算分離、多讀多寫、查詢優(yōu)化、MPP。這個思路其實(shí)和我剛才所分享的脈絡(luò)是一脈相承的,又和高可用、和事務(wù)處理相關(guān),這些都是分布式數(shù)據(jù)庫的內(nèi)在需求,驅(qū)動著數(shù)據(jù)庫技術(shù)繼續(xù)不斷地前進(jìn)。


          從外面的來看,新硬件、智能數(shù)據(jù)庫、云計算,這些是計算對于數(shù)據(jù)庫系統(tǒng)的要求;HTAP,還有下一代所謂的New SQL,數(shù)據(jù)庫也在不斷地演進(jìn),此過程中還會產(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ù)庫一定要考慮去中心化,也就是各個節(jié)點(diǎn)之間是對等的,考慮一個并發(fā)訪問控制算法的時候,這個算法是不是去中心化的?它們之間的關(guān)系是不是對等的?都是要考慮的。



          最后,如果大家對核心的基礎(chǔ)技術(shù)感興趣,可以關(guān)注我們3TS的系統(tǒng),它的研究目標(biāo)主要包括:比如分布式事務(wù)處理怎么去做,它和性能擴(kuò)展性、安全性、一致性等等這些的關(guān)系是什么,怎么評價這個分布式數(shù)據(jù)庫系統(tǒng),數(shù)據(jù)異常有多少(我們回答了數(shù)據(jù)異常有無數(shù)個,但可以歸類為有限種),并發(fā)訪問控制算法怎么改進(jìn)等技術(shù)。


          期待和各位朋友深度交流。謝謝大家。


          直播推薦


          5月13日(明晚)19點(diǎn)正式開課,資深大咖帶來《實(shí)戰(zhàn)演練—手把手教你使用國產(chǎn)分布式數(shù)據(jù)庫TDSQL》,歡迎關(guān)注!



          - End -


           更多精彩


          久等了,全新TDSQL-A,來了!


          14億人的大項(xiàng)目,拿下!



          ↓↓更多驚喜優(yōu)惠請點(diǎn)這兒~ 


          瀏覽 59
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  天天综合网永久入口 | 亚洲AⅤ首页| 成人五月天婷婷 | 国产一区二区三区四 | 在线高清无吗一本道 |