數據庫是IT技術棧中承上啟下的關鍵一層,具有如下特性:
- 向上承托應用開發與運行,是應用生態關鍵組成之一。
- 向下對接硬件和OS,對數據處理應用屏蔽底層硬件復雜性和兼容性。
數據庫系統是IT技術棧中的獨立“小王國”,被譽為“軟件行業皇冠上的明珠”。它內含了幾乎所有的基礎軟件關鍵技術,是軟件集大成者: OS(進線程調度和內存分配管理)、編程語言(SQL)、編譯器(SQL編譯和編譯執行)、大規模並行計算(分布式SQL執行)、優化技術(優化器)等。數據庫是數學理論和軟件工程的結晶,其中蘊含了兩個NP-Hard的世界級難題(優化理論和事務處理)。數據庫領域也因此誕生了4個圖靈獎得主。因此,數據庫發展趨勢與硬件演進緊密相關,並受到應用的驅動。
新硬件驅動的數據庫(鯤鵬+昇騰)
處理器架構的差異直接影響到數據庫的工作效率。不斷發展的處理器架構,驅動着數據庫不斷做出相應的優化。
一、處理器架構對數據庫系統帶來挑戰與機遇
當前業界的計算機處理器分為兩大系列: 通用處理器(CPU)和異構加速器。按照其用途又可分為面向數據中心服務器的處理器(如Intel Xeon至強系列CPU)、面向消費者設備的處理器(如Intel Core酷睿系列PC的CPU、高通的Snapdragon系列手機CPU 等)。數據庫系統一般運行在數據中心服務器上,因此本文主要簡述服務器處理器發展對數據庫架構和技術發展方向帶來的沖擊和影響。
通用處理器家族中有兩個最為著名的體系和指令集架構(Instruction Set Architecture,ISA)。
- 源自Intel 8086處理器的x86指令集,它是一種CISC(Complex Instruction Set Computer,復雜指令集計算機)體系結構指令集。
- 源自ARM(Advanced RISC Machine)公司的指令集,它是一種RISC (Reduced Instruction Set Computer,精簡指令集計算機)體系結構指令集。
從歷史上看,Intel的x86指令集隨着Wintel(微軟Windows+Intel芯片)聯盟在20世紀80年代壟斷PC市場而興起,由於Intel芯片發貨量遠遠大於20世紀八九十年代面向小型計算機市場的RISC芯片,Intel借助市場壟斷優勢不斷更新優化其制造工藝水平和芯片處理能力。20世紀90年代末Intel進入PC服務器市場,借助其規模優勢不斷侵蝕RISC小型計算機市場空間,到2010年Intel已經成為芯片霸主,壟斷了90%以上世界服務器市場空間。
2010年起,ARM 公司通過只聚焦芯片指令集研發、不涉及芯片設計和制造的商業策略,借助Android手機的興起,重演了Intel在20世紀80年代Wintel聯盟壟斷桌面機市場的故事。當前ARM 架構芯片每年發貨量是Intel x86芯片發貨的10倍以上,有豐富的軟件和硬件生態。如何基於ARM 架構打造一款數據中心服務器芯片,成為眾多芯片設計和制造企業的商業計划。
以美國Calxeda和Applied Micro等為代表的創業公司,利用其貼近硅谷高科技源頭優勢,紛紛推出基於ARM 架構的服務器芯片,但由於缺乏客戶和市場規模,敗北收場。
美國芯片巨頭高通公司,攜Snapdragon手機芯片和技術優勢,於2017年宣布進入ARM 服務器芯片市場,並發布了Centriq系列芯片,但同諸多創業公司一樣,2018年宣布停止ARM 服務器芯片研發。
雖然在基於ARM 研發服務器芯片方面已有多家公司折戟,但Intel的成功歷史仍然具有說服力,隨着ARM 架構芯片生態的逐步成熟,其技術競爭力追趕Intel x86,研發投入也在不斷積累和攤薄,必將成為可以替代Intel x86的新通用處理器芯片。
ARM 與x86對比如下圖所示。
圖: ARM與x86對比
華為借助其內部大量使用ARM 芯片積累的技術和產業化優勢,於2019年正式對業界發布鯤鵬920系列服務器芯片,其關鍵指標如下圖所示。
圖: 鯤鵬920指標
華為鯤鵬芯片的發布路標如下圖所示。
圖: 鯤鵬芯片發布路標
ARM 處理器與傳統x86處理器相比,最大特點是: 處理器核數更多。如鯤鵬920有64核,市場同樣定價等級Intel 6148 Golden系列有20核40超線程,而一台服務器通常由2~4 個處理器組成。眾多處理器核,對數據庫系統帶來巨大挑戰。根據Stonebraker等人於2014 年在VLDB 發表的論文Staring into the abyss: anevaluation of concurrency control with one thousand cores,傳統數據庫的事務處理機制無法有效利用數十到上百個核處理能力。
2016年Anastasia Ailamaki等人在DaMon 研討會上發表論文OLTP on a server-grade ARM : power,throughput and latency comparison,對ARM 服務器芯片上數據庫運行進行詳盡分析,認為ARM 處理器在功耗上具有優勢,但在關鍵負載業務上,如何保證業務的SLA(Service Level Agreement),ARM 服務器仍有很多改進和優化空間,可能需要軟硬件結合提升業務SLA。典型ARM 多核CPU 架構如下圖所示。
圖:典型ARM 多核CPU 架構
注: hydra是ARM 公司定義的CPU 處理器上總線名稱。DIE是集成電路行業術語,是一個處理器封裝中的硅芯片。DRAM 是動態隨機存取存儲器的英文縮寫,行業術語。
相信隨着鯤鵬服務器在中國等一些國家的市場上逐步規模商用,會推動開源數據庫、商業數據庫等產品面向鯤鵬芯片進行優化,甚至架構改進。如何有效解決下列問題將是推動數據庫研究的關鍵方向:
-
如何有效地解決鯤鵬跨片內存訪問時延對事務處理帶來的影響?
-
如何構築高效的並發控制原語及原子鎖?
-
如何降低多核下的CPU緩存未命中(cache miss)率,以減少對整體性能的影響?
-
如何支持百核甚至千核CPU 架構?
-
如何高效利用鯤鵬服務器的特殊硬件,例如POE(核間通信能力)隊列?
二、異構處理器高速發展為數據庫系統創新提出新方向
2010年起,隨着大數據量和大計算量的普及,AI(人工智能)迎來新一輪復興。谷歌公司在這一輪AI浪潮中扮演了至關重要的角色,谷歌公司收購的DeepMind公司於2014年發布AlphaGo,並在隨后的人機競賽中擊敗人類,是本輪AI浪潮的標志性事件。谷歌公司認為AI將成為未來的主導性技術,並全力投入相關技術研發,於2016年發布了面向AI的張量處理器(Tensor Processing Unit,TPU),極大地加速了以線性代數計算為中心的現代AI算法。
谷歌公司發布TPU 之后,眾多芯片廠家也隨之發布面向AI的加速芯片,華為於2019年發布了自研的達芬奇架構的神經網絡處理器昇騰系列芯片,其架構如下圖所示。
圖:昇騰架構
注: BUS表示計算機系統中總線,用於互聯芯片上多個子單元,是行業術語。Vector是矢量處理單元,用於將多個同一數據類型封裝的數據包一次性處理,如(1,3,10,11)。Cube是矩陣處理單元,用於對矩陣數據結構進行線性代數操作,如點積、加減等。Cache是處理器上的高速緩存。Scalar是標量處理單元,用於對簡單數據結構進行計算,如Int 1,Float 0.35等。HBM 是高帶寬內存,行業術語。Peripheral/IO 是周邊設備總線,用於將處理器和外部存儲器等器件互聯。FHD Video是高清視頻,Image Codec是圖像編解碼器。
昇騰芯片當前有兩個系列,分別為面向推理計算場景的Ascend 310系列和面向訓練場景的Ascend 910系列。
昇騰芯片與業界頂尖廠商的AI處理器性能對比如下圖所示。
圖:昇騰芯片與業界芯片對比
AI處理器芯片的普及,使數據庫研究社區和廠商都在思考一個問題: 如何使用AI處理器芯片巨大的算力優勢,來幫助數據庫系統運行得更快、更強、更好? 如何利用AI芯片來提升數據庫的智能性和高效性?
當前主要的研究方向有AI4DB和DB4AI兩個。
1. AI4DB(AI for DB)
在傳統數據庫中,由於使用大量啟發式算法,無法針對眾多用戶實際場景定制化開發,一般通過數據庫系統預定義參數組合或可調節參數開關等方式,由DBA 根據經驗進行調整。AI算法與傳統啟發式算法的最大不同在於其可以根據歷史數據學習,並根據現狀在運行時進行動態調整。因此如何利用AI算法替換啟發式算法,解決傳統數據庫的痛點問題成為研究的熱點話題。典型方向有:
- 優化器: 傳統代價優化基於采樣統計信息進行表連接規划,存在統計信息不准(基數估計問題)、啟發式連接規划(連接順序問題)等老大難問題。
- 參數調優: 數據庫有數十甚至上百個可調節參數,其中很多參數是連續值調節空間,依靠人工經驗無法找到最優參數組合。
- 動化索引推薦和視圖推薦: 數據庫有很多張表,表中有很多列,如何自動構建索引和視圖來提升數據庫的性能是需要考慮的問題。
- 事務智能調度: 事務的並發沖突是OLTP數據庫的難點,可以通過AI技術進行智能調度從而提升數據庫的並發性。
2. DB4AI(DB for AI)
AI數據處理流程一般可划分為四個階段: 訓練數據管理准備、模型訓練、模型管理和推理應用,如下圖所示。
圖:AI數據處理流程
- 訓練數據管理准備工作占據了AI全流程中80%以上時間,數據科學家和軟件工程師花費大量精力與數據標注、數據正確性、數據一致性、數據完整性、訓練結果可重復性等問題打交道。使用定制化、拼湊型的數據存儲解決方案,缺乏高效的AI訓練數據管理系統是問題的根源。數據庫系統半個世紀的研究成果能有效解決該領域的問題。當前已經有眾多公司基於數據庫系統啟動相關系統的研發,如蘋果公司的MLDP系統。
- 當前AI模型訓練主要以AI計算框架為主,但其在迭代計算中產生大量相似、冗余的參數、模型等數據,缺乏有效的模型管理,導致模型訓練中不斷重復計算,模型訓練效率大打折扣。如何使用數據管理的方法,如物化視圖、多查詢優化等技術,對訓練中產生的模型數據有效管理、實現存儲轉換計算、加速AI訓練計算成為研究的熱點,如馬里蘭大學的ModelHub等項目。
- 模型推理計算是將訓練好的模型部署到應用環境中的過程,如何減少推理計算的開銷、降低推理延遲、提升推理的吞吐量是系統開發者關注的重點。當前AI計算框架缺乏針對以上訴求的優化,使用傳統數據庫優化器的技術優化該過程是研究熱點,如伯克利大學的Model-less Inference等。
因此使用數據管理技術對AI流程進行全棧優化是數據庫研究者需要考慮的問題。對於企業用戶來說,僅僅優化AI流程的效率是遠遠不夠的,因為:
- 當前AI應用仍處於早期階段,搭建一套AI應用系統不但成本高昂,而且極為復雜,也難以在部署后繼續開發業務。如何構築一套開箱即用、業務領域專家也能輕松使用的AI應用系統是當前企業對AI系統廠商提出的重大挑戰。
- 從歷史上看,當前的AI應用與20世紀60年代數據庫系統誕生之前的情況極為相似。在數據庫系統內構築一套端到端、全流程的AI處理系統,並提供類似SQL一樣的聲明式開發語言,將是解決企業用戶應用AI門檻高難題的正確方向。
綜上所述,DB4AI是用數據庫技術打造一套端到端全流程AI系統的研究方向,是AI應用平民化的必經之路。
Gauss松鼠會是匯集數據庫愛好者和關注者的大本營,
大家共同學習、探索、分享數據庫前沿知識和技術,
互助解決問題,共建數據庫技術交流圈。