數(shù)據(jù)庫未來發(fā)展趨勢(上)
數(shù)據(jù)庫是IT技術(shù)棧中承上啟下的關(guān)鍵一層,具有如下特性:
(1)?向上承托應(yīng)用開發(fā)與運(yùn)行,是應(yīng)用生態(tài)關(guān)鍵組成之一。
(2)?向下對接硬件和OS,對數(shù)據(jù)處理應(yīng)用屏蔽底層硬件復(fù)雜性和兼容性。
數(shù)據(jù)庫系統(tǒng)是IT技術(shù)棧中的獨(dú)立“小王國”,被譽(yù)為“軟件行業(yè)皇冠上的明珠”。它內(nèi)含了幾乎所有的基礎(chǔ)軟件關(guān)鍵技術(shù),是軟件集大成者: OS(進(jìn)線程調(diào)度和內(nèi)存分配管理)、編程語言(SQL)、編譯器(SQL編譯和編譯執(zhí)行)、大規(guī)模并行計(jì)算(分布式SQL執(zhí)行)、優(yōu)化技術(shù)(優(yōu)化器)等。數(shù)據(jù)庫是數(shù)學(xué)理論和軟件工程的結(jié)晶,其中蘊(yùn)含了兩個NP-Hard的世界級難題(優(yōu)化理論和事務(wù)處理)。數(shù)據(jù)庫領(lǐng)域也因此誕生了4個圖靈獎得主。因此,數(shù)據(jù)庫發(fā)展趨勢與硬件演進(jìn)緊密相關(guān),并受到應(yīng)用的驅(qū)動。
新硬件驅(qū)動的數(shù)據(jù)庫(鯤鵬+昇騰)處理器架構(gòu)的差異直接影響到數(shù)據(jù)庫的工作效率。不斷發(fā)展的處理器架構(gòu),驅(qū)動著數(shù)據(jù)庫不斷做出相應(yīng)的優(yōu)化。
一、處理器架構(gòu)對數(shù)據(jù)庫系統(tǒng)帶來挑戰(zhàn)與機(jī)遇
當(dāng)前業(yè)界的計(jì)算機(jī)處理器分為兩大系列:?通用處理器(CPU)和異構(gòu)加速器。按照其用途又可分為面向數(shù)據(jù)中心服務(wù)器的處理器(如Intel Xeon至強(qiáng)系列CPU)、面向消費(fèi)者設(shè)備的處理器(如Intel Core酷睿系列PC的CPU、高通的Snapdragon系列手機(jī)CPU?等)。數(shù)據(jù)庫系統(tǒng)一般運(yùn)行在數(shù)據(jù)中心服務(wù)器上,因此本文主要簡述服務(wù)器處理器發(fā)展對數(shù)據(jù)庫架構(gòu)和技術(shù)發(fā)展方向帶來的沖擊和影響。
通用處理器家族中有兩個最為著名的體系和指令集架構(gòu)(Instruction Set?Architecture,ISA)。
(1)?源自Intel 8086處理器的x86指令集,它是一種CISC(Complex Instruction?Set Computer,復(fù)雜指令集計(jì)算機(jī))體系結(jié)構(gòu)指令集。
(2)?源自ARM (Advanced RISC Machine)公司的指令集,它是一種RISC?(Reduced Instruction Set Computer,精簡指令集計(jì)算機(jī))體系結(jié)構(gòu)指令集。
從歷史上看,Intel的x86指令集隨著Wintel(微軟Windows+Intel芯片)聯(lián)盟在20世紀(jì)80年代壟斷PC市場而興起,由于Intel芯片發(fā)貨量遠(yuǎn)遠(yuǎn)大于20世紀(jì)八九十年代面向小型計(jì)算機(jī)市場的RISC芯片,Intel借助市場壟斷優(yōu)勢不斷更新優(yōu)化其制造工藝水平和芯片處理能力。20世紀(jì)90年代末Intel進(jìn)入PC服務(wù)器市場,借助其規(guī)模優(yōu)勢不斷侵蝕RISC小型計(jì)算機(jī)市場空間,到2010年Intel已經(jīng)成為芯片霸主,壟斷了90%以上世界服務(wù)器市場空間。
2010年起,ARM?公司通過只聚焦芯片指令集研發(fā)、不涉及芯片設(shè)計(jì)和制造的商業(yè)策略,借助Android手機(jī)的興起,重演了Intel在20世紀(jì)80年代Wintel聯(lián)盟壟斷桌面機(jī)市場的故事。當(dāng)前ARM?架構(gòu)芯片每年發(fā)貨量是Intel x86芯片發(fā)貨的10倍以上,有豐富的軟件和硬件生態(tài)。如何基于ARM?架構(gòu)打造一款數(shù)據(jù)中心服務(wù)器芯片,成為眾多芯片設(shè)計(jì)和制造企業(yè)的商業(yè)計(jì)劃。
以美國Calxeda和Applied Micro等為代表的創(chuàng)業(yè)公司,利用其貼近硅谷高科技源頭優(yōu)勢,紛紛推出基于ARM?架構(gòu)的服務(wù)器芯片,但由于缺乏客戶和市場規(guī)模,敗北收場。
美國芯片巨頭高通公司,攜Snapdragon手機(jī)芯片和技術(shù)優(yōu)勢,于2017年宣布進(jìn)入ARM?服務(wù)器芯片市場,并發(fā)布了Centriq系列芯片,但同諸多創(chuàng)業(yè)公司一樣,2018年宣布停止ARM?服務(wù)器芯片研發(fā)。
雖然在基于ARM?研發(fā)服務(wù)器芯片方面已有多家公司折戟,但I(xiàn)ntel的成功歷史仍然具有說服力,隨著ARM?架構(gòu)芯片生態(tài)的逐步成熟,其技術(shù)競爭力追趕Intel x86,研發(fā)投入也在不斷積累和攤薄,必將成為可以替代Intel x86的新通用處理器芯片。
ARM?與x86對比如下圖所示。

華為借助其內(nèi)部大量使用ARM?芯片積累的技術(shù)和產(chǎn)業(yè)化優(yōu)勢,于2019年正式對業(yè)界發(fā)布鯤鵬920系列服務(wù)器芯片,其關(guān)鍵指標(biāo)如下圖所示。

華為鯤鵬芯片的發(fā)布路標(biāo)如下圖所示。

ARM?處理器與傳統(tǒng)x86處理器相比,最大特點(diǎn)是:?處理器核數(shù)更多。如鯤鵬920有64核,市場同樣定價(jià)等級Intel 6148 Golden系列有20核40超線程,而一臺服務(wù)器通常由2~4 個處理器組成。眾多處理器核,對數(shù)據(jù)庫系統(tǒng)帶來巨大挑戰(zhàn)。根據(jù)Stonebraker等人于2014 年在VLDB 發(fā)表的論文Staring into the abyss: anevaluation of concurrency control with one thousand cores,傳統(tǒng)數(shù)據(jù)庫的事務(wù)處理機(jī)制無法有效利用數(shù)十到上百個核處理能力。
2016年Anastasia Ailamaki等人在DaMon 研討會上發(fā)表論文OLTP on a?server-grade ARM : power,throughput and latency comparison,對ARM 服務(wù)器芯片上數(shù)據(jù)庫運(yùn)行進(jìn)行詳盡分析,認(rèn)為ARM 處理器在功耗上具有優(yōu)勢,但在關(guān)鍵負(fù)載業(yè)務(wù)上,如何保證業(yè)務(wù)的SLA(Service Level Agreement),ARM 服務(wù)器仍有很多改進(jìn)和優(yōu)化空間,可能需要軟硬件結(jié)合提升業(yè)務(wù)SLA。典型ARM 多核CPU 架構(gòu)如下圖所示。

注: hydra是ARM 公司定義的CPU 處理器上總線名稱。DIE是集成電路行業(yè)術(shù)語,是一個處理器封裝中的硅芯片。DRAM 是動態(tài)隨機(jī)存取存儲器的英文縮寫,行業(yè)術(shù)語。
相信隨著鯤鵬服務(wù)器在中國等一些國家的市場上逐步規(guī)模商用,會推動開源數(shù)據(jù)庫、商業(yè)數(shù)據(jù)庫等產(chǎn)品面向鯤鵬芯片進(jìn)行優(yōu)化,甚至架構(gòu)改進(jìn)。如何有效解決下列問題將是推動數(shù)據(jù)庫研究的關(guān)鍵方向:
(1) 如何有效地解決鯤鵬跨片內(nèi)存訪問時延對事務(wù)處理帶來的影響?
(2) 如何構(gòu)筑高效的并發(fā)控制原語及原子鎖?
(3) 如何降低多核下的CPU緩存未命中(cache miss)率,以減少對整體性能的影響?
(4) 如何支持百核甚至千核CPU 架構(gòu)?
(5) 如何高效利用鯤鵬服務(wù)器的特殊硬件,例如POE(核間通信能力)隊(duì)列?
二、異構(gòu)處理器高速發(fā)展為數(shù)據(jù)庫系統(tǒng)創(chuàng)新提出新方向
2010年起,隨著大數(shù)據(jù)量和大計(jì)算量的普及,AI(人工智能)迎來新一輪復(fù)興。谷歌公司在這一輪AI浪潮中扮演了至關(guān)重要的角色,谷歌公司收購的DeepMind公司于2014年發(fā)布AlphaGo,并在隨后的人機(jī)競賽中擊敗人類,是本輪AI浪潮的標(biāo)志性事件。谷歌公司認(rèn)為AI將成為未來的主導(dǎo)性技術(shù),并全力投入相關(guān)技術(shù)研發(fā),于2016年發(fā)布了面向AI的張量處理器(Tensor Processing Unit,TPU),極大地加速了以線性代數(shù)計(jì)算為中心的現(xiàn)代AI算法。
谷歌公司發(fā)布TPU 之后,眾多芯片廠家也隨之發(fā)布面向AI的加速芯片,華為于2019年發(fā)布了自研的達(dá)芬奇架構(gòu)的神經(jīng)網(wǎng)絡(luò)處理器昇騰系列芯片,其架構(gòu)如下圖所示。

注: BUS表示計(jì)算機(jī)系統(tǒng)中總線,用于互聯(lián)芯片上多個子單元,是行業(yè)術(shù)語。Vector是矢量處理單元,用于將多個同一數(shù)據(jù)類型封裝的數(shù)據(jù)包一次性處理,如(1,3,10,11)。Cube是矩陣處理單元,用于對矩陣數(shù)據(jù)結(jié)構(gòu)進(jìn)行線性代數(shù)操作,如點(diǎn)積、加減等。Cache是處理器上的高速緩存。Scalar是標(biāo)量處理單元,用于對簡單數(shù)據(jù)結(jié)構(gòu)進(jìn)行計(jì)算,如Int 1,F(xiàn)loat 0.35等。HBM 是高帶寬內(nèi)存,行業(yè)術(shù)語。Peripheral/IO 是周邊設(shè)備總線,用于將處理器和外部存儲器等器件互聯(lián)。FHD Video是高清視頻,Image Codec是圖像編解碼器。
昇騰芯片當(dāng)前有兩個系列,分別為面向推理計(jì)算場景的Ascend 310系列和面向訓(xùn)練場景的Ascend 910系列,其規(guī)格如下圖所示。

注: DaVinci是華為昇騰處理器的芯片架構(gòu)名稱。FLOPS是指處理器每秒能處理的浮點(diǎn)數(shù)。EUV是芯片制造工藝,其采用極紫外線光刻技術(shù)。
昇騰芯片與業(yè)界頂尖廠商的AI處理器性能對比如下圖所示。

AI處理器芯片的普及,使數(shù)據(jù)庫研究社區(qū)和廠商都在思考一個問題: 如何使用AI處理器芯片巨大的算力優(yōu)勢,來幫助數(shù)據(jù)庫系統(tǒng)運(yùn)行得更快、更強(qiáng)、更好? 如何利用AI芯片來提升數(shù)據(jù)庫的智能性和高效性?
當(dāng)前主要的研究方向有AI4DB和DB4AI兩個。
1. AI4DB(AI for DB)
在傳統(tǒng)數(shù)據(jù)庫中,由于使用大量啟發(fā)式算法,無法針對眾多用戶實(shí)際場景定制化開發(fā),一般通過數(shù)據(jù)庫系統(tǒng)預(yù)定義參數(shù)組合或可調(diào)節(jié)參數(shù)開關(guān)等方式,由DBA 根據(jù)經(jīng)驗(yàn)進(jìn)行調(diào)整。AI算法與傳統(tǒng)啟發(fā)式算法的最大不同在于其可以根據(jù)歷史數(shù)據(jù)學(xué)習(xí),并根據(jù)現(xiàn)狀在運(yùn)行時進(jìn)行動態(tài)調(diào)整。因此如何利用AI算法替換啟發(fā)式算法,解決傳統(tǒng)數(shù)據(jù)庫的痛點(diǎn)問題成為研究的熱點(diǎn)話題。典型方向有:
(1)?優(yōu)化器: 傳統(tǒng)代價(jià)優(yōu)化基于采樣統(tǒng)計(jì)信息進(jìn)行表連接規(guī)劃,存在統(tǒng)計(jì)信息不準(zhǔn)(基數(shù)估計(jì)問題)、啟發(fā)式連接規(guī)劃(連接順序問題)等老大難問題。
(2)??參數(shù)調(diào)優(yōu): 數(shù)據(jù)庫有數(shù)十甚至上百個可調(diào)節(jié)參數(shù),其中很多參數(shù)是連續(xù)值調(diào)節(jié)空間,依靠人工經(jīng)驗(yàn)無法找到最優(yōu)參數(shù)組合。
(3) 自動化索引推薦和視圖推薦: 數(shù)據(jù)庫有很多張表,表中有很多列,如何自動構(gòu)建索引和視圖來提升數(shù)據(jù)庫的性能是需要考慮的問題。
(4) 事務(wù)智能調(diào)度: 事務(wù)的并發(fā)沖突是OLTP數(shù)據(jù)庫的難點(diǎn),可以通過AI技術(shù)進(jìn)行智能調(diào)度從而提升數(shù)據(jù)庫的并發(fā)性。
2. DB4AI(DB for AI)
AI數(shù)據(jù)處理流程一般可劃分為四個階段: 訓(xùn)練數(shù)據(jù)管理準(zhǔn)備、模型訓(xùn)練、模型管理和推理應(yīng)用,如下圖所示。

(1) 訓(xùn)練數(shù)據(jù)管理準(zhǔn)備工作占據(jù)了AI全流程中80%以上時間,數(shù)據(jù)科學(xué)家和軟件工程師花費(fèi)大量精力與數(shù)據(jù)標(biāo)注、數(shù)據(jù)正確性、數(shù)據(jù)一致性、數(shù)據(jù)完整性、訓(xùn)練結(jié)果可重復(fù)性等問題打交道。使用定制化、拼湊型的數(shù)據(jù)存儲解決方案,缺乏高效的AI訓(xùn)練數(shù)據(jù)管理系統(tǒng)是問題的根源。數(shù)據(jù)庫系統(tǒng)半個世紀(jì)的研究成果能有效解決該領(lǐng)域的問題。當(dāng)前已經(jīng)有眾多公司基于數(shù)據(jù)庫系統(tǒng)啟動相關(guān)系統(tǒng)的研發(fā),如蘋果公司的MLDP系統(tǒng)。
(2) 當(dāng)前AI模型訓(xùn)練主要以AI計(jì)算框架為主,但其在迭代計(jì)算中產(chǎn)生大量相似、冗余的參數(shù)、模型等數(shù)據(jù),缺乏有效的模型管理,導(dǎo)致模型訓(xùn)練中不斷重復(fù)計(jì)算,模型訓(xùn)練效率大打折扣。如何使用數(shù)據(jù)管理的方法,如物化視圖、多查詢優(yōu)化等技術(shù),對訓(xùn)練中產(chǎn)生的模型數(shù)據(jù)有效管理、實(shí)現(xiàn)存儲轉(zhuǎn)換計(jì)算、加速AI訓(xùn)練計(jì)算成為研究的熱點(diǎn),如馬里蘭大學(xué)的ModelHub等項(xiàng)目。
(3) 模型推理計(jì)算是將訓(xùn)練好的模型部署到應(yīng)用環(huán)境中的過程,如何減少推理計(jì)算的開銷、降低推理延遲、提升推理的吞吐量是系統(tǒng)開發(fā)者關(guān)注的重點(diǎn)。當(dāng)前AI計(jì)算框架缺乏針對以上訴求的優(yōu)化,使用傳統(tǒng)數(shù)據(jù)庫優(yōu)化器的技術(shù)優(yōu)化該過程是研究熱點(diǎn),如伯克利大學(xué)的Model-less Inference等。
因此使用數(shù)據(jù)管理技術(shù)對AI流程進(jìn)行全棧優(yōu)化是數(shù)據(jù)庫研究者需要考慮的問題。對于企業(yè)用戶來說,僅僅優(yōu)化AI流程的效率是遠(yuǎn)遠(yuǎn)不夠的,因?yàn)?
(1)?當(dāng)前AI應(yīng)用仍處于早期階段,搭建一套AI應(yīng)用系統(tǒng)不但成本高昂,而且極為復(fù)雜,也難以在部署后繼續(xù)開發(fā)業(yè)務(wù)。如何構(gòu)筑一套開箱即用、業(yè)務(wù)領(lǐng)域?qū)<乙材茌p松使用的AI應(yīng)用系統(tǒng)是當(dāng)前企業(yè)對AI系統(tǒng)廠商提出的重大挑戰(zhàn)。
(2) 從歷史上看,當(dāng)前的AI應(yīng)用與20世紀(jì)60年代數(shù)據(jù)庫系統(tǒng)誕生之前的情況極為相似。在數(shù)據(jù)庫系統(tǒng)內(nèi)構(gòu)筑一套端到端、全流程的AI處理系統(tǒng),并提供類似SQL一樣的聲明式開發(fā)語言,將是解決企業(yè)用戶應(yīng)用AI門檻高難題的正確方向。
綜上所述,DB4AI是用數(shù)據(jù)庫技術(shù)打造一套端到端全流程AI系統(tǒng)的研究方向,是AI應(yīng)用平民化的必經(jīng)之路。