騰訊云在PostgreSQL領域的‘‘再次突破’’

來源: 騰訊云數(shù)據(jù)庫
作者:劉少蓉
時間:2022-01-12
14080
日前,第11屆PostgreSQL中國技術大會圓滿落幕,大會上騰訊云多位頂級技術達人攜手亮相,分別對騰訊云PostgreSQL系列產(chǎn)品技術亮點和創(chuàng)新實踐案例進行了深入解讀,針對TDSQL-C PostreSQL高可用特性、TDSQL-A發(fā)展歷程、技術架構等做出了詳細介紹。

日前,第11屆PostgreSQL中國技術大會圓滿落幕,大會上騰訊云多位頂級技術達人攜手亮相,分別對騰訊云PostgreSQL系列產(chǎn)品技術亮點和創(chuàng)新實踐案例進行了深入解讀,針對TDSQL-C PostreSQL高可用特性、TDSQL-A發(fā)展歷程、技術架構等做出了詳細介紹。

會上騰訊云數(shù)據(jù)庫開源產(chǎn)品TDSQL PostgreSQL版(開源代號Tbase)再次公布升級:分區(qū)表能力增強,分區(qū)剪枝性能提升30%,分布區(qū)表關聯(lián)查詢性能(Join)提升超十倍。此外,異地多活易用性增強、分布式死鎖自動檢測并解鎖功能上線,2PC殘留自動檢測并清理等多方面升級,全方位的展示了騰訊云在PG技術領域的突破和服務。

同時在本次大會,騰訊云TDSQL憑借成熟的一站式解決方案和行業(yè)應用實踐,斬獲“數(shù)據(jù)庫最佳應用獎’’,這是既獲得中國開源軟件聯(lián)盟PostgreSQL分會頒發(fā)的‘‘2021 PostgreSQL中國最佳數(shù)據(jù)庫產(chǎn)品’’獎之后,TDSQL在PostgreSQL領域的出色表現(xiàn)再獲認可。本次主論壇現(xiàn)場,騰訊云數(shù)據(jù)庫專家工程師劉少蓉詳細解讀了騰訊云在PostgreSQL領域的全線產(chǎn)品技術架構演進和應用場景,今天帶大家一文縱覽劉少蓉博士的演講精華。

640.webp.jpg

(數(shù)據(jù)庫最佳應用獎)

騰訊云PostgreSQL家族

早在2008年開始,騰訊在PG方面就開始做相關數(shù)據(jù)庫研發(fā),經(jīng)過十幾年的研發(fā)和業(yè)務打磨,我們騰訊也為業(yè)界貢獻了比較豐富的產(chǎn)品線:RDS云數(shù)據(jù)庫(TencentDB for PG),TDSQL PG版(企業(yè)級分布式數(shù)據(jù)庫PG版,為用戶提供TP、AP整體解決方案),TDSQL-A(基于分布式TDSQL架構專門研發(fā)的一款分析型產(chǎn)品)和TDSQL-C PG版(云原生數(shù)據(jù)庫)。下面我們會詳細介紹每款產(chǎn)品的架構和應用場景。

TencentDB for PG是騰訊云在PG方面的RDS,用于給用戶提供開箱即用的云端數(shù)據(jù)庫服務。用戶可以通過云控制臺一鍵創(chuàng)建和管理數(shù)據(jù)庫。騰訊云負責處理絕大部分復雜而耗時的管理工作,如PostgreSQL軟件安裝、存儲管理等,這樣用戶就可以更專注于業(yè)務程序開發(fā)。

我們來看一下TencentDB for PG的架構,這也是比較典型的單機云數(shù)據(jù)庫的架構。一主一從的強同步保障服務的高可用。同時呢,在線的熱數(shù)據(jù)也會定時的備份到COS上面,以便在數(shù)據(jù)庫災難時進行數(shù)據(jù)恢復,這也保證了高可靠性。TencentDB for PG也跟多種騰訊云產(chǎn)品集成和聯(lián)通,比方說云監(jiān)控可以自動監(jiān)控數(shù)據(jù)庫,省去了人工DBA,ES集群提供了日志查詢服務等。

640.webp (1).jpg

除了典型RDS服務,騰訊云TencentDB for PG還有一些比較獨特的優(yōu)勢,可以根據(jù)業(yè)務的需求來定制化內(nèi)核優(yōu)化。舉個例子,曾經(jīng)有個用戶在使我們RDS服務的時候,

反饋說當出現(xiàn)頻繁CREATE TABLE/DROP TABLE的時候,尤其是大表的操作時,會造成主備之間較大的延遲,導致WAL大量的堆積、來不及重放并回收。根據(jù)這個場景我們在內(nèi)核上加入異步DDL方式,在收到DROP TABLE的WAL時,先進行標記,在空閑時逐步從shared_buffer和存儲上刪除數(shù)據(jù)。從而實現(xiàn)備庫上DDL的異步處理、及時響應后續(xù)WAL的重放,避免了堆積。

TencentDB for PG在一定數(shù)量下提供了一種All In One的數(shù)據(jù)解決方案。大家也都知道PG本身是一款非常好的開源軟件,也有著比較好的TP和AP能力。當用戶在使用PG時業(yè)務不斷擴大,數(shù)據(jù)量超過單機limit的時候,那么騰訊云數(shù)據(jù)庫能夠提供什么解決方案呢?

傳統(tǒng)的方法是多加幾臺機器,分庫分表,把一張邏輯表分為很多物理表,這個好處也是非常明顯的,比如說插入性能會比較高,點查也很快。當然問題也很多。業(yè)務本身需要實現(xiàn)非常復雜的分布式邏輯,比方說分布式事務,數(shù)據(jù)庫跨表查詢等。對用戶更友好的解決方案是數(shù)據(jù)庫本身提供分布式架構,比方說share-nothing MPP,提供存儲和計算的水平擴展能力。把復雜的分布式邏輯留給數(shù)據(jù)庫解決,業(yè)務邏輯簡單。

TDSQL PG版架構,可以從三個角度來看,首先是GTM事務管理器,它是負責分布式架構下全局事務管理,以及全局的對象管理。同時事務管理器是通過一主多從來保證它的可靠性、可用性。架構圖中右側(cè)上層是Coordinator(協(xié)調(diào)節(jié)點CN),它主要提供業(yè)務訪問入口。協(xié)調(diào)節(jié)點中每個節(jié)點之間是對等的,也就是說業(yè)務訪問這三個節(jié)點里面的任何一個,它得到的結果都會是相同的。圖中下層是我們的數(shù)據(jù)節(jié)點(Datanode)。數(shù)據(jù)節(jié)點是我們實際存儲數(shù)據(jù)的地方。每個數(shù)據(jù)節(jié)點會存儲一份本地的數(shù)據(jù)分片還有本地元數(shù)據(jù)。Datanode同時提供了計算功能,例如本地數(shù)據(jù)的計算以MPP架構下數(shù)據(jù)重分布的計算,e.g.join,aggregation。我們這個架構下也有相應管控,比如說指標監(jiān)測、運維管理、告警、安全審計、數(shù)據(jù)治理等等。

640.webp (2).jpg

分布式事務系統(tǒng)里的一個核心設計難題就是如何高性能,低成本的保障事務的一致性。針對這個問題,我們TDSQL PG版也發(fā)明了一套基于Global TimeStamp(全局時間戳)的MVCC可見性判斷協(xié)議來提供高性能可擴展的分布式事務能力。這種協(xié)議下GTM只需要去分配全局的GTS,CN,DN節(jié)點上的事務會向GTM請求GTS來作為事務的版本標識。這樣就可以把提交協(xié)議從GTM的單點瓶頸下放到每一個節(jié)點上,減輕壓力。同時多個GTM節(jié)點構成集群,主節(jié)點對外提供服務,主備之間通過日志同步時間戳狀態(tài),保障了GTM服務的高可靠性。

TDSQL PG版經(jīng)過十余年研發(fā),在2019年11月7號進行開源,開源代號TBase,歐洲航空航天局曾利用TDSQL開源版進行航行探索項目,數(shù)據(jù)量高達300多TB,是一個比較成功的案例。在2019年開源以后這中間進行過多次版本升級。在2021年7月開源了新版本,提高了性能以及管理方面。2022年1月1號再次升級全新版本,在分區(qū)能力方面以及易用性方面都有重磅升級。

接下來要介紹的是我們的分析型產(chǎn)品TDSQL-A,TDSQL-A是基于TDSQL PG版架構上全面優(yōu)化來打造關于分析性能AP方面的數(shù)據(jù)庫。TDSQL-A定位是希望能夠提供海量數(shù)據(jù)實時分析,所謂海量數(shù)據(jù)是指10PB以上秒級分析查詢功能,同時TDSQL-A也100%兼容PG,也高度兼容Oracle,兼容性在特定場景下達到98%。

640.webp (3).jpg

下面大概介紹一下TDSQL-A的核心技術。首先它是行列混存,在過去十年間有很多商業(yè)級數(shù)據(jù)庫為分析場景研發(fā)推出列存引擎。每個列單獨存儲,可以達到比較高的壓縮比。分析型的查詢通常只涉及到一個數(shù)據(jù)庫的某些列,不需要查詢一個行的所有列。我們TDSQL-A給列式數(shù)據(jù)提供多級壓縮,比如說透明級、輕量級。我們還根據(jù)數(shù)據(jù)本身的類型選擇和定制壓縮技術。

同時我們也有著非常高效的向量執(zhí)行引擎,以及多種并行策略:節(jié)點間的并行MPP,進程間的并行SMP,以及指令型的并行SIMD。最后不得不提一下的是我們獨特的分布式延遲物化能力。延遲物化是一種常用的數(shù)據(jù)庫常優(yōu)化技術。但是分布式分布式延遲物化技術目前在我們是業(yè)界第一個提出和實現(xiàn)。我們的優(yōu)化器是基于代價的,它會根據(jù)具體查詢來決定,比如說什么時候要延遲物化什么時候要提前物化。我們的分布式延遲優(yōu)化的能力,能夠減少不必要的網(wǎng)絡開銷。

介紹完了我們的單機云數(shù)據(jù)庫TencentDB for PG,我們的share-nothing MPP架構下的分布式數(shù)據(jù)庫(TDSQL PG版和TDSQL-A)。接下來我們來聊一聊云原生數(shù)據(jù)庫。首先為什么有云原生數(shù)據(jù)庫的需求呢?在無共享的MPP架構下,計算和存儲是緊耦合的。那么當業(yè)務有瓶頸的時候,不管是計算瓶頸還是存儲瓶頸都需要加資源,而且兩者的瓶頸的時間點通常不一樣,那么這樣必然浪費資源而且不容易擴展。針對這些痛點,AWS Aurora在2017年提出了計算存儲分離的數(shù)據(jù)庫架構。這個架構也是云原生數(shù)據(jù)庫的基石。云原生的本質(zhì)就是資源池化,降本增效。用戶可以按需彈性靈活地擴展計算或者存儲。如果有需求需要增加存儲就在共享存儲里增加,如果計算節(jié)點方面有瓶頸就可以增加計算節(jié)點。比如說這個架構下面通常一主多從,主RW提供讀寫能力,從RO提供讀的能力。

Aurora在提出存算分離時也提出了一個觀點,就是日志即數(shù)據(jù)庫log is thedatabase。Log is the database的核心思想是主備是基于同一份數(shù)據(jù)。在這個思想之上當我們寫數(shù)據(jù)的時候,只需要把日志寫到共享存儲里就可以了。為什么呢?因為共享存儲上面它完全可以通過存放日志來實現(xiàn)存儲節(jié)點上面修改,存儲層以Page為單位來維護數(shù)據(jù)。因為不需要跨網(wǎng)絡寫數(shù)據(jù)本身到共享存儲上面,所以極大優(yōu)化了寫的性能。在讀的性能上面也有優(yōu)化,每個RO節(jié)點它可以在很多情況下從主節(jié)點上面接收日志重放來滿足讀的請求,在少的情況下還需要從共享存儲上去讀數(shù)據(jù)。

基于存算分離,日志即數(shù)據(jù)庫的設計思想,我們在去年11月份商業(yè)化了云原生數(shù)據(jù)庫TDSQL-C PG版。TDSQL-C由騰訊完全自研,融合了傳統(tǒng)數(shù)據(jù)庫、云計算、新硬件技術的優(yōu)勢。高可用、高可靠、高性能以及極致彈性,能夠達到秒級備份和回答。

下面來講一下云原生數(shù)據(jù)庫PG架構,左邊這個圖大概可以分為兩個部分,上面是計算層,下面是存儲層。計算層大概分為三個部分,首先是CynosPG,CynosPG是基于PG研發(fā)的計算引擎,它提供通常計算引擎的功能,查詢處理器、事務管理、緩存實現(xiàn)等等。因為計算層并不存儲數(shù)據(jù),而且我們只是把日志存儲在存儲上面,所以也就省去了不必要的,比如說Full page write、臟頁刷盤。計算層中間一層是用戶態(tài)文件系統(tǒng)Cynos File System,它主要是提供了分布式文件管理。最下面一層是Cynos Store Agent,它提供了計算存儲之間的讀寫交互,以及主備之間日志流的同步。

640.webp (4).jpg

在存儲層方面首先需要記錄日志,需要回放日志,同時也提供了CRC日志校驗以及備份/恢復等。同時數(shù)據(jù)也會定時地冷備到COS上來保證高可靠性。

分布式存儲方面的架構,首先大家可以看到有很多StoreNode,我們簡稱SN,StoreNode提供的是數(shù)據(jù)服務,StoreNode維度可以看到不同的pool。每個pool對應了一個數(shù)據(jù)庫實例,每個pool下面又同時劃分為不同的segment,每個segment基于Raft多數(shù)派提交保證多副本。

以segment維度來存儲數(shù)據(jù)它其實有很多優(yōu)點,第一個是彈性,我們有專門的監(jiān)控系統(tǒng)監(jiān)測存儲方面的是否情況,當存儲節(jié)點的使用沒有達到一定閾值時,就會從空閑StoreNode加一個到共享存儲池里面,同時可以從segment進行搬遷,這樣做的好處是它并不會影響到主segment的讀寫請求。另外以segment可以實行并行搬遷。多個segment同時并發(fā)的搬遷,提高效率。

最后關于我們TDSQL-C PG版方面,計算節(jié)點方面也是高可用的彈性,比如說當業(yè)務需求需要增加或減少計算節(jié)點時,同樣也可以很快拉起一個新的計算節(jié)點,而且這個計算節(jié)點基本上是無狀態(tài)。同時這個計算節(jié)點可以自由地添加,根據(jù)業(yè)務訴求可以添加不同規(guī)格來彈性地實現(xiàn)彈出鏈路業(yè)務需求。

未來機遇與展望

最后分享一下未來我們會在PG生態(tài)方面有什么樣的規(guī)劃,首先我們生態(tài)是要不停地跟進社區(qū)發(fā)展,同時我們也會持續(xù)開源我們的TBase的新功能。第二個是關于Oracle兼容性、應用性方面,我們現(xiàn)在在這四款PG產(chǎn)品方面都高度兼容,當然離目標100%兼容還有一定距離,所以我們肯定需要持續(xù)發(fā)展進行深耕。

第二個角度,架構方面我們現(xiàn)已有云原生的數(shù)據(jù)庫,下一步更希望能夠把HTAP搬到云原生上面,同時實現(xiàn)Serverless以及Multi-master,能夠高效地實現(xiàn)數(shù)據(jù)共享,保證安全性。

第三個角度是從怎么充分利用我們新硬件,來實現(xiàn)軟硬協(xié)同提高性能。最后可能就是智能化,可以理解為怎么能夠,比如說智能調(diào)優(yōu)是一方面,騰訊云方面有DBBrain(智能管家),再一個就是AI in DB,怎么實現(xiàn)in-database machine learning和analytics。

最后我想引用一下之前看到的一篇文章,CMU數(shù)據(jù)庫教授Andy Palvo寫的關于2021年數(shù)據(jù)庫的review,提到的一句話是"PostgreSQL has become the first choice in new applications."。PG已經(jīng)成為新應用的首選。我們現(xiàn)在屬于數(shù)據(jù)庫黃金時代,所以我們會一起共同努力,謝謝大家!

立即登錄,閱讀全文
版權說明:
本文內(nèi)容來自于騰訊云數(shù)據(jù)庫,本站不擁有所有權,不承擔相關法律責任。文章內(nèi)容系作者個人觀點,不代表快出海對觀點贊同或支持。如有侵權,請聯(lián)系管理員(zzx@kchuhai.com)刪除!
掃碼登錄
打開掃一掃, 關注公眾號后即可登錄/注冊
加載中
二維碼已失效 請重試
刷新
賬號登錄/注冊
個人VIP
小程序
快出海小程序
公眾號
快出海公眾號
商務合作
商務合作
投稿采訪
投稿采訪
出海管家
出海管家