<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>

          TiDB 探索 | 一棧式 X 規(guī)?;?X 多元化:PingCAP 馬曉宇談 TiDB HTAP 演進(jìn)之路

          共 3859字,需瀏覽 8分鐘

           ·

          2021-08-19 00:49

          本文根據(jù) PingCAP DevCon 2021 上 PingCAP HTAP 產(chǎn)品負(fù)責(zé)人馬曉宇的分享整理而成,介紹了 TiDB 在 HTAP 領(lǐng)域探索的過去、現(xiàn)在和未來。


          數(shù)據(jù)庫(kù)為何而建


          《三國(guó)演義》作者羅貫中說過:天下大勢(shì),合久必分,分久必合。放到數(shù)據(jù)庫(kù)領(lǐng)域也是同樣,最早的時(shí)候其實(shí)只有一種數(shù)據(jù)庫(kù),慢慢演化到后面就分成不同的類型。不同的引擎適用不同的場(chǎng)景,不同的數(shù)據(jù)庫(kù)根據(jù)使用目標(biāo)會(huì)有不同的優(yōu)化方向和設(shè)計(jì)方向。所以,一套數(shù)據(jù)庫(kù)沒有辦法滿足所有的場(chǎng)景。我們回頭去想數(shù)據(jù)庫(kù)為何而建?是不是為了極致的性能?或者說是為了在某一方面有極致的表現(xiàn)。

          如果去考慮非常極致的場(chǎng)景,當(dāng)然會(huì)有更極致的東西去匹配。數(shù)據(jù)庫(kù)為什么而建?數(shù)據(jù)庫(kù)不是為了用得方便而建嗎?如果不考慮方便,而考慮一些很極致的場(chǎng)景和一些極致的要求,那我們根本不需要數(shù)據(jù)庫(kù)。曾經(jīng)遇到過一個(gè)互聯(lián)網(wǎng)用戶,有一個(gè)具備強(qiáng)大工程能力的團(tuán)隊(duì),在某個(gè)性能要求極高的場(chǎng)景下不用數(shù)據(jù)庫(kù),而是編寫完全貼合自家場(chǎng)景的數(shù)據(jù)管理邏輯來獲取最大性能。但是,我們相信數(shù)據(jù)庫(kù)應(yīng)該是能滿足各種各樣的需求,是為了用得方便而建,TiDB 是融合派的信仰者。


          TiDB HTAP 的演進(jìn)之路


          現(xiàn)在 TiDB 的 HTAP 走到哪里了呢?從最早開始,TiDB 是一個(gè)單引擎,主 OLTP,輔以 OLAP。那個(gè)時(shí)候 HTAP 的 OLAP 部分是協(xié)處理器,也就是說每個(gè) TiKV 會(huì)分擔(dān)一部分 OLAP 的處理,比如說可以把所有的聚合推到 TiKV,每個(gè) TiKV 分別以分片的方式去聚合部分?jǐn)?shù)據(jù),然后再向 TiDB 去做匯總,可以比較快地實(shí)現(xiàn)類似多維聚合這樣的需求。

          到了第二階段,我們發(fā)現(xiàn)光有聚合其實(shí)是不夠的,必須還要有處理復(fù)雜計(jì)算的引擎。那個(gè)時(shí)候公司人也不多,我們就選擇借助其他外部的引擎。TiSpark 這套引擎就是借助 Apache Spark  連接 TiKV 存儲(chǔ)引擎,可以用 Spark 的分布式計(jì)算器直接去讀取 TiKV 的分布式存儲(chǔ)引擎來完成 HTAP 的使命。在這個(gè)場(chǎng)景中,我們以一個(gè) OLTP 引擎加一部分協(xié)處理器的功能,再輔以外部的分析引擎來完成 HTAP 功能。

          第三段也就是現(xiàn)在的狀態(tài),TiDB 擁有 OLTP 的主引擎,有一個(gè) TiFlash 分析引擎。TiFlash 實(shí)時(shí)從交易引擎同步數(shù)據(jù)以達(dá)到實(shí)時(shí)分析的目的,并且可以實(shí)現(xiàn)一致性的數(shù)據(jù)讀取。TiFlash 這套分析引擎的速度也完全可以與業(yè)界各種專項(xiàng)的分析引擎媲美。另外,通過大數(shù)據(jù)生態(tài)圈的銜接,例如借助 TiSpark,TiDB 同樣可以獲得更多外部引擎的能力加持。第四階段,TiDB 的HTAP 要走向何方?這個(gè)我們等到最后再講。


          TiDB 5.0 HTAP 的特性和場(chǎng)景


          TiDB HTAP 現(xiàn)在走到哪里了?TiDB HTAP 現(xiàn)在的狀態(tài)是統(tǒng)一引擎,統(tǒng)一入口。雖然有 OLTP 和 OLAP 兩套引擎,但是用戶看到的是同一套引擎提供統(tǒng)一的體驗(yàn)和統(tǒng)一的權(quán)限,在兩套引擎上相同的權(quán)限設(shè)定可以涵蓋不同的數(shù)據(jù)引擎。融合的引擎本身通過 Raft 協(xié)議,把數(shù)據(jù)從行存同步到列存。在查詢的視角下,這套協(xié)議保證數(shù)據(jù)的到達(dá)是最新的,你寫下的任何數(shù)據(jù),在寫下的一瞬間,通過分析引擎去讀取,是可以讀到的,不但是最新的,而且是一致的。

          舉個(gè)例子,我們?cè)诎l(fā)版之前會(huì)模擬用戶場(chǎng)景進(jìn)行測(cè)試,在交易引擎上不斷地進(jìn)行高頻的轉(zhuǎn)帳模擬,同時(shí)我們會(huì)在分析引擎上做對(duì)帳。在連續(xù)長(zhǎng)時(shí)間的測(cè)試中,但凡有一次數(shù)據(jù)對(duì)不上,產(chǎn)品的發(fā)版是會(huì)停止的。TiDB 的 HTAP 引擎確保了在任何交易發(fā)生的時(shí)候,分析引擎是可以完整地讀到最新而且是一致的數(shù)據(jù)?,F(xiàn)實(shí)中有很多對(duì)數(shù)據(jù)一致性有非常高要求的場(chǎng)景,比如說銀行,假設(shè)有一個(gè)財(cái)務(wù)系統(tǒng),不斷的有財(cái)務(wù)數(shù)據(jù)進(jìn)來,需要通過 TiFlash 或者通過 OLAP 引擎去做對(duì)賬,這個(gè)場(chǎng)景 TiFlash 是完全可以勝任的。

          另外,TiDB 的 HTAP 和很多其他產(chǎn)品有非常顯著的區(qū)別。市場(chǎng)上有些 HTAP 產(chǎn)品采用融合引擎的架構(gòu),在同一組資源上通過精巧的資源調(diào)度的方式來實(shí)現(xiàn),在不同的引擎之間進(jìn)行作業(yè)隔離。但是,從工業(yè)界的角度看,不管業(yè)務(wù)隔離做得有多精巧,其實(shí)都沒有辦法匹敵 TiDB HTAP 用兩套資源分別去執(zhí)行 OLTP 和 OLAP。可以說 TiDB  HTAP 在資源和業(yè)務(wù)隔離層面的設(shè)計(jì),在業(yè)界是非常優(yōu)秀的。

          雖然 TiFlash 不是一個(gè)專門為 OLAP 而設(shè)計(jì)的引擎,但是經(jīng)過實(shí)際場(chǎng)景的 TPC-H 測(cè)試,TiFlash 相對(duì)于業(yè)界比較流行的 OLAP 分析框架具備更快的處理能力。對(duì)比 Greenplum 最新版、Apache Spark 3.1.1 以及 Parquet,TiFlash 在開啟 MPP 的情況下整體的處理性能有 2-3 倍的優(yōu)勢(shì)。

          從 TiFlash 發(fā)布至今,通過 Telemetry 數(shù)據(jù)分析,我們發(fā)現(xiàn)在 TiDB 生產(chǎn)規(guī)格的集群中(TiKV大于三個(gè)節(jié)點(diǎn)且運(yùn)行超過一個(gè)月),已經(jīng)有接近三分之一的用戶部署了 TiFlash 節(jié)點(diǎn)。

          這些用戶是如何使用 TiFlash 的?從調(diào)研的結(jié)果看,大致有以下三種典型的應(yīng)用場(chǎng)景:

          第一種是 OLTP和 OLAP 混合負(fù)載場(chǎng)景。比如說企業(yè)的 ERP 應(yīng)用,或者是類似于經(jīng)營(yíng)分析系統(tǒng),需要做實(shí)時(shí)報(bào)表,OLTP 負(fù)載使用 TiDB,報(bào)表和實(shí)時(shí)看板使用 TiFlash,這是一個(gè)最經(jīng)典的混合架構(gòu)的應(yīng)用。

          第二種是流式計(jì)算場(chǎng)景。我們發(fā)現(xiàn) TiDB 的用戶和 Flink 的用戶有比較高的重合度,這些用戶使用 Flink 對(duì) CDC 進(jìn)行加工,比如說平寬表或者做預(yù)聚合,然后把這些數(shù)據(jù)落到 TiFlash 或者落到 TiDB 里面。為什么 TiDB 是一個(gè)很好的承載體?首先 TiDB 是可擴(kuò)展的,它既有行,又有列,并且支持實(shí)時(shí)更新,所以對(duì) Flink 來說是一個(gè)很好的落地點(diǎn)。落地之后,除了 Flink 本身可以計(jì)算指標(biāo)和看板,也可以通過落地的數(shù)據(jù)做一個(gè)輕量級(jí)的實(shí)時(shí) ETL,形成一個(gè)實(shí)時(shí)數(shù)倉(cāng),最后在 TiDB 里面去展示各種各樣的報(bào)表。

          另外一種是數(shù)據(jù)中樞場(chǎng)景,這個(gè)場(chǎng)景涉及面比較廣。很多用戶在使用 TiDB 之前已經(jīng)有了 Hadoop,等其他大數(shù)據(jù)分析或數(shù)倉(cāng)類架構(gòu)。在和這些數(shù)據(jù)棧并存的時(shí)候,用戶把 TiDB 作為業(yè)務(wù)層和離線層之間的數(shù)據(jù)中樞層,提供對(duì)數(shù)據(jù)的實(shí)時(shí)訪問和實(shí)時(shí)的收納。數(shù)據(jù)會(huì)從 CDC 實(shí)時(shí)集成到 TiDB,TiDB 也可以分批地歸檔到離線層的數(shù)據(jù)湖和數(shù)據(jù)倉(cāng)庫(kù)。在數(shù)據(jù)中樞層,TiDB 可以直接提供實(shí)時(shí)報(bào)表,也可以提供跨不同業(yè)務(wù)線的數(shù)據(jù)采集和數(shù)據(jù)訪問。以上是 TiDB HTAP 三種比較典型的用法。


          以云原生為骨干,走向多模和實(shí)時(shí)


          接下來談?wù)?TiDB HTAP 會(huì)去向何方?剛剛賣了一個(gè)關(guān)子,TiDB HTAP 的第四個(gè)發(fā)展階段,我們現(xiàn)在的看法是以云原生為骨干,向多模和實(shí)時(shí)數(shù)據(jù)庫(kù)方向演進(jìn)。

          首先是 TiDB 和流的結(jié)合,通過物化視圖和直接內(nèi)存的寫入,可以拓展實(shí)時(shí)計(jì)算的邊界。在以前 TiDB 只能實(shí)現(xiàn)行存和列存的同構(gòu)復(fù)制:列存提供的分析引擎,要求所分析的數(shù)據(jù)結(jié)構(gòu)和行存的建模是一致。現(xiàn)在通過流 + 物化視圖的擴(kuò)展,我們可以向前進(jìn)一步,在整個(gè)鏈路保持實(shí)時(shí)的前提下,向數(shù)倉(cāng)方向更進(jìn)一步,保持實(shí)時(shí)的同時(shí)可以做一些輕量的建模。

          第二個(gè)是云原生,以 TiDB Cloud 為核心的聯(lián)邦平臺(tái)。為什么 Cloud 和 HTAP 會(huì)相關(guān)呢?假設(shè)現(xiàn)在的數(shù)據(jù)庫(kù)是多模的,可以同時(shí)承載 OLTP 和 OLAP 的不同業(yè)務(wù)。那么在云上,可以為用戶提供一個(gè)超級(jí)大的池子,這個(gè)池子的部署和運(yùn)維都會(huì)非常方便,可以把用戶不同的業(yè)務(wù)線都匯聚到這個(gè)池子,不管是說 OLTP 直接放到 TiDB 上,還是說數(shù)據(jù)中臺(tái)直接放到 TiDB 上。另外,存算分離之后,可以把 TiDB 計(jì)算引擎單獨(dú)提供出來,然后再配合 Foreign Data Wrapper 這種方式來提供聯(lián)邦查詢,通過 TiDB 和其他數(shù)據(jù)生態(tài)進(jìn)行連接,還可以用外部引擎來補(bǔ)充 TiDB 原生引擎暫時(shí)沒有提供的功能,比如 Machine Learning,TiDB HTAP 也可以借助 TiSpark 等大數(shù)據(jù)生態(tài)引擎來處理。

          從多模的角度看,HTAP 本身就是一個(gè)多模的基礎(chǔ),現(xiàn)在 TiDB 本身就是一個(gè)數(shù)據(jù)生態(tài),除了OLTP、OLAP,其實(shí)也有 KV。另外 TiDB 社區(qū)也會(huì)發(fā)起其他引擎項(xiàng)目,例如之前 Hackathon 中倒排索引的項(xiàng)目,類似這些也會(huì)逐步加到我們的 Roadmap 中。

          TiDB HTAP 希望達(dá)到的是什么?OLTP 是所有數(shù)據(jù)的源頭,也就是萬里長(zhǎng)征的入口。我們希望將萬里長(zhǎng)征入口把握在 TiDB 這邊,以 HTAP 能力支撐敏捷和實(shí)時(shí)的分析體驗(yàn),以流和物化視圖能力拓展實(shí)時(shí)數(shù)倉(cāng)邊界。云化適合的能力,推進(jìn)從在線到離線之間的串聯(lián)。最后,以大數(shù)據(jù)生態(tài)和聯(lián)邦查詢的方式把整個(gè)體系同步到一起。TiDB HTAP 始終希望為用戶提供統(tǒng)一的一站式體驗(yàn)。


          ?? 掃描下方二維碼獲取 【PingCAP DevCon 2021】全部視頻回放和 PPT。點(diǎn)擊閱讀原文查看本篇演講實(shí)況。


          瀏覽 40
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <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>
                  日韩欧美高清无码 | 天天搞天天射 | 7777奇米影视四色 | 天堂网在线观看视频 | 亚训Av无码专区在 |