訂閱
糾錯(cuò)
加入自媒體

首款國產(chǎn)開源數(shù)據(jù)庫TBase核心架構(gòu)演進(jìn)

2020-06-09 10:15
IT168
關(guān)注

騰訊云數(shù)據(jù)庫國產(chǎn)數(shù)據(jù)庫專題線上技術(shù)沙龍正在火熱進(jìn)行中,4月14日李躍森的分享已經(jīng)結(jié)束,沒來得及參與的小伙伴不用擔(dān)心,以下就是直播的視頻和文字回顧。

大家好,我是李躍森,目前負(fù)責(zé)騰訊云TBase數(shù)據(jù)庫研發(fā)的相關(guān)工作。今天跟大家分享的內(nèi)容主要分為兩大章節(jié)。第一章:數(shù)據(jù)庫技術(shù)的基本概念和基本架構(gòu)。第二章:TBase產(chǎn)品的典型案例,以及在國產(chǎn)化上我們所做的具體工作。

PartⅠ 數(shù)據(jù)庫產(chǎn)品分類

首先,我們先來看一下數(shù)據(jù)庫的分類。數(shù)據(jù)庫分類有多種方式,接下來會(huì)介紹三種分類。

一、按照數(shù)據(jù)庫的業(yè)務(wù)場(chǎng)景劃分

一般我們?cè)谡務(wù)摂?shù)據(jù)庫的時(shí)候,首先會(huì)問數(shù)據(jù)庫是OLAP還是OLTP?

OLAP,即在線分析型處理,這一塊其實(shí)是按照業(yè)務(wù)特點(diǎn)來劃分的。OLAP的第一個(gè)特點(diǎn)是數(shù)據(jù)量比較大,一般會(huì)要求PB級(jí)或者更大的數(shù)據(jù)量,數(shù)據(jù)量大了以后,對(duì)存儲(chǔ)的成本會(huì)比較敏感,對(duì)數(shù)據(jù)壓縮也會(huì)有一定的要求,OLAP業(yè)務(wù)系統(tǒng)的并發(fā)量不會(huì)特別的高。另外,OLAP場(chǎng)景下查詢一般都會(huì)比較復(fù)雜,每個(gè)查詢需要消耗大量的資源,會(huì)要求多個(gè)用戶之間的查詢要減少相互之間的影響,進(jìn)行資源隔離。類似產(chǎn)品還是比較多的,比如:TeraData、SybaseIQ、GreenPlum、HP Vetica、 Gauss200、 VectorWise、AWS Redshift,以及現(xiàn)在比較流行的ClickHouse等。

OLTP,即在線事務(wù)型處理。在線事務(wù)處理數(shù)據(jù)量相對(duì)較小,普遍時(shí)延要求較高,要求達(dá)到毫秒級(jí)。在吞吐量這一塊,普遍要求能夠達(dá)到百萬級(jí)以上的TPS。OLTP業(yè)務(wù)系統(tǒng)都是我們核心的業(yè)務(wù)系統(tǒng),包括銀行、保險(xiǎn)、電信這樣的實(shí)時(shí)在線的業(yè)務(wù),業(yè)務(wù)特點(diǎn)決定對(duì)容災(zāi)能力有一些突出的要求,一般來講要求99.99%以上的可靠性。傳統(tǒng)上來講,我們一般講數(shù)據(jù)庫都是指:Oracle、IBM DB2、Informix、MySQL,以及PostgreSQL這樣的一些數(shù)據(jù)庫。

這兩年還興起一個(gè)數(shù)據(jù)庫概念叫做HTAP,即混合事務(wù)處理和在線分析型數(shù)據(jù)庫;镜乃悸肥悄軌蛟趩渭簝(nèi)部同時(shí)處理OLAP和OLTP兩類業(yè)務(wù),而且OLAP和OLTP業(yè)務(wù)之間有良好的資源隔離。典型產(chǎn)品這兩年宣傳的比較多的如TiDB,包括TBase設(shè)計(jì)之初也是這么考慮的。

二、按照時(shí)間劃分

現(xiàn)在我們一般會(huì)講Old SQL,這個(gè)所謂的Old SQL是指?jìng)鹘y(tǒng)的SQL數(shù)據(jù)庫。此類數(shù)據(jù)庫的典型特點(diǎn):它是一個(gè)完整的關(guān)系模型,具備完整的事務(wù)能力。像Oracle、IBM DB2、MySQL、PostgreSQL這些是傳統(tǒng)的數(shù)據(jù)庫。

在2010年前后,No SQL數(shù)據(jù)庫在互聯(lián)網(wǎng)中大量興起,泛指一些非關(guān)系型數(shù)據(jù)庫,主要特點(diǎn)是沒有完整的事務(wù)支持,而且沒有模式的概念,普遍采用無共享架構(gòu),根據(jù)業(yè)務(wù)進(jìn)行分區(qū)。另外在復(fù)制這一塊,使用異步復(fù)制,保持最終的一致性。典型產(chǎn)品包括Redis、HBase、MongoDB等。

最近這兩年,結(jié)合上面的Old SQL和No SQL的概念,又提出了一個(gè)New SQL的概念, New SQL其實(shí)是結(jié)合了Old SQL和No SQL的概念,它既具備了No SQL的便利性,又能夠支持傳統(tǒng)數(shù)據(jù)庫數(shù)據(jù)庫架構(gòu),但是New SQL在關(guān)系模型的完整性上存在一些問題。

三、按照架構(gòu)

數(shù)據(jù)庫的劃分經(jīng)過多年的演進(jìn),大概有三種架構(gòu)。

第一種是單體數(shù)據(jù)庫,所謂單體數(shù)據(jù)庫就像之前我們經(jīng)常提到的Oracle、PostgreSQL、MySQL這種單機(jī)的數(shù)據(jù)庫,單個(gè)實(shí)例能夠提供獨(dú)立的服務(wù),主備機(jī)通過流復(fù)制來做HA,這是傳統(tǒng)的架構(gòu)。

第二種是共享存儲(chǔ)架構(gòu),多個(gè)數(shù)據(jù)庫實(shí)例同時(shí)訪問一份存儲(chǔ),數(shù)據(jù)是存儲(chǔ)在專門的存儲(chǔ)設(shè)備中,這里的存儲(chǔ)設(shè)備一般是指磁盤陣列或者類似于這樣專用的存儲(chǔ)設(shè)備,現(xiàn)在我們能看得到的包括Oracle RAC、SybaseIQ都是這樣的架構(gòu)。

第三種是無共享,也就是我們常說的MPP。每個(gè)DN節(jié)點(diǎn)存儲(chǔ)一個(gè)數(shù)據(jù)分片,在DN節(jié)點(diǎn)之上會(huì)有另外一層節(jié)點(diǎn),這層節(jié)點(diǎn)在不同的數(shù)據(jù)庫中有不同的名字,但是它的作用其實(shí)是一樣的,都是接收業(yè)務(wù)請(qǐng)求,然后分發(fā),同時(shí)對(duì)業(yè)務(wù)請(qǐng)求進(jìn)行返回。TeraData、GreenPlum、TBase、TDSQL、TiDB都是屬于這種架構(gòu)。

隨著云業(yè)務(wù)形態(tài)的誕生,這兩年在傳統(tǒng)的數(shù)據(jù)庫架構(gòu)基礎(chǔ)上,產(chǎn)生一種比較流行的新架構(gòu)--云原生架構(gòu),日志即數(shù)據(jù)庫。

它會(huì)把數(shù)據(jù)庫的業(yè)務(wù)邏輯沉到底層的存儲(chǔ)節(jié)點(diǎn)里面去,存儲(chǔ)節(jié)點(diǎn)和上面的計(jì)算節(jié)點(diǎn)是進(jìn)行邏輯上的分離,其實(shí)也就是物理上的分離,另外一種叫法是計(jì)算與存儲(chǔ)分離。在下層的存儲(chǔ)集群之間,通過一致性協(xié)議來保證多個(gè)副本之間的一致性,統(tǒng)一對(duì)上層的數(shù)據(jù)節(jié)點(diǎn)提供一個(gè)可靠的存儲(chǔ)服務(wù)。這里補(bǔ)充說明下:數(shù)據(jù)庫節(jié)點(diǎn)就是把數(shù)據(jù)庫的業(yè)務(wù)邏輯,包括SQL解析及SQL的執(zhí)行都做到上層去。類似的產(chǎn)品現(xiàn)在也比較多,基本上幾個(gè)大的云廠商都有自己的產(chǎn)品。主要有兩個(gè)技術(shù)優(yōu)點(diǎn),1、可以做到存儲(chǔ)計(jì)算分離,存儲(chǔ)和計(jì)算可以做到單獨(dú)擴(kuò)容,2、它可以實(shí)現(xiàn)存儲(chǔ)的超賣,這在云上這是一個(gè)比較有價(jià)值的能力。

這里給大家重點(diǎn)介紹一下PostgreSQL數(shù)據(jù)庫,如果是在十年以前提到PostgreSQL,大家可能都會(huì)一臉懵。經(jīng)過這幾年國內(nèi)PostgreSQL社區(qū)的推廣,PostgreSQL的認(rèn)可度已經(jīng)高了很多。

它是由圖靈獎(jiǎng)得主石破天主導(dǎo)的一個(gè)項(xiàng)目,以BSD風(fēng)格協(xié)議開源。PostgreSQL的好處是源代碼可以隨意的修改和發(fā)布,甚至可以用來盈利。PostgreSQL在網(wǎng)站上聲稱是最先進(jìn)的開源數(shù)據(jù)庫,經(jīng)過這么多年的發(fā)展,PostgreSQL的整個(gè)功能上距離商業(yè)數(shù)據(jù)庫Oracle確實(shí)越來越近,作為開源產(chǎn)品也具備了一些Oracle不具備的靈活性和擴(kuò)展能力。最近幾年社區(qū)發(fā)布版本的速度是越來越快,技術(shù)思路逐漸向商業(yè)數(shù)據(jù)庫靠近,相信后面會(huì)有越來越多的業(yè)務(wù)跑在PostgreSQL上。

很多人都問MySQL和PostgreSQL兩個(gè)之間有什么區(qū)別。這邊簡(jiǎn)單列舉了一下它們的區(qū)別。

接下來跟大家分享下TBase的整體情況,先從TBase的簡(jiǎn)史說起。

TBase是基于PostgreSQL研發(fā)的一個(gè)分布式數(shù)據(jù)庫,最早可以追溯到2009年。當(dāng)時(shí)是拿PostgreSQL來作為我們內(nèi)部數(shù)倉的補(bǔ)充,支撐小數(shù)據(jù)量的分析。2014年開發(fā)了TBase第一個(gè)版本,內(nèi)部開始使用。2015年TBase在微信支付商戶集群里面上線后。到了2018年,發(fā)布了TBase V2,在數(shù)字廣東和云南公安上線。2019年發(fā)布了TBase的V3版本。

PartⅡ 數(shù)據(jù)庫核心技術(shù)選型

在講架構(gòu)設(shè)計(jì)之前,先來看一下TBase面臨的業(yè)務(wù)場(chǎng)景。

TBase的整體物理架構(gòu),跟前面提到的架構(gòu)是比較類似的。

TBase整體物理架構(gòu)分三個(gè)部分,圖中的左側(cè)上層GTM是事務(wù)管理器,它主要是提供全局事務(wù)的信息,同時(shí)管理全局對(duì)象。另外圖中右側(cè)上層Coordinator(協(xié)調(diào)節(jié)點(diǎn)CN),它主要提供業(yè)務(wù)訪問入口。協(xié)調(diào)節(jié)點(diǎn)中每個(gè)節(jié)點(diǎn)之間是對(duì)等的,也就是說業(yè)務(wù)訪問這三個(gè)節(jié)點(diǎn)里面的任何一個(gè),它得到的結(jié)果都會(huì)是相同的,而且訪問這個(gè)節(jié)點(diǎn),事務(wù)的一致性能夠得到保證。圖中中層是集群數(shù)據(jù)交互總線,把整個(gè)數(shù)據(jù)庫集群的各種連接到了一起。圖中下層是數(shù)據(jù)節(jié)點(diǎn),數(shù)據(jù)節(jié)點(diǎn)有些是我們實(shí)際存儲(chǔ)數(shù)據(jù)的地方。每個(gè)數(shù)據(jù)節(jié)點(diǎn)會(huì)存儲(chǔ)一份本地的Local元數(shù)據(jù),同時(shí)還有本地的數(shù)據(jù)分片。

1  2  3  4  下一頁>  
聲明: 本文由入駐維科號(hào)的作者撰寫,觀點(diǎn)僅代表作者本人,不代表OFweek立場(chǎng)。如有侵權(quán)或其他問題,請(qǐng)聯(lián)系舉報(bào)。

發(fā)表評(píng)論

0條評(píng)論,0人參與

請(qǐng)輸入評(píng)論內(nèi)容...

請(qǐng)輸入評(píng)論/評(píng)論長度6~500個(gè)字

您提交的評(píng)論過于頻繁,請(qǐng)輸入驗(yàn)證碼繼續(xù)

  • 看不清,點(diǎn)擊換一張  刷新

暫無評(píng)論

暫無評(píng)論

    掃碼關(guān)注公眾號(hào)
    OFweek人工智能網(wǎng)
    獲取更多精彩內(nèi)容
    文章糾錯(cuò)
    x
    *文字標(biāo)題:
    *糾錯(cuò)內(nèi)容:
    聯(lián)系郵箱:
    *驗(yàn) 證 碼:

    粵公網(wǎng)安備 44030502002758號(hào)