雲資料庫的本質是什麼?

雲數據庫的本質是什麼?

內容來源:2017 年 11 月 18 日,北京偶數科技創始人兼CEO常雷在“第七屆數據技術嘉年華”進行《雲數據庫的本質》演講分享。IT 大咖說作為獨家視頻合作方,經主辦方和講者審閱授權發佈。

閱讀字數:4055 | 11分鐘閱讀

嘉賓演講視頻及PPT,請複製:http://t.cn/RDbuGE2,粘貼至瀏覽器即可。

雲數據庫的本質是什麼?

摘要

數據倉庫的演進分為三代,第一代數據倉庫採用共享存儲架構(比如Oracle Exadata),可擴性差,使用專有硬件,價格高。第二代數據倉庫採用MPP架構,採用無共享架構(比如Teradata),使用普通X86服務器,可擴展至幾十節點,但很難滿足大數據需求,架構不夠靈活,比如難於實現秒級擴容。

Apache HAWQ屬於第三代數據倉庫,使用存儲與計算分離架構,可擴展至數千節點,架構靈活。另外,HAWQ從著名第二代MPP數據倉庫系統Greenplum Database演化而來,繼承了Greenplum Database的SQL以及對第三方工具的兼容性,所以,在兼容性和性能方面大大優於其他第三代Hadoop SQL引擎。

數據庫背景

數據生態系統

雲數據庫的本質是什麼?

2016年全球數據倉庫市場規模已達數百億美金,主要由幾大部分組成。最底層是雲的部分,包括公有云和私有云。往上為數據層,這部分中傳統的關係數據庫和NoSQL、NewSQL包含在OLTP中,流的處理和採集等歸屬於ETL,還有就是大家最關心也是佔比最大的數據倉庫領域,再上層則是BI和目前最火熱的機器學習/AI。

雲數據庫的本質是什麼?

以上每一部分的市場其實都不小,數據的增量也基本保存在10%-45%之間,即使是大家不太注意的ETL的市場也接近了100多億美金。

而我們接下來將著重介紹的是數據庫的部分,首先來回顧下數據庫的歷史。

數據庫:55年

數據庫這個詞首次出現至今已過了55年,最早是由Inverted File Database System和System Development Corporation這兩家公司在一個軍方項目中提出的,雖然這不一定是世界上第一個數據庫,但是DataBase這個單詞卻是首次被提出。

後續數據庫經歷了幾個比較繁榮的發展階段,第一階段是在1960年代此時的數據還是網狀/層次模型結構,第二階段的1970-1990年代主要是關係性數據庫,第三階段從2000年開始逐漸出現了一些新型數據庫。

數據庫的核心

數據庫中核心的研究領域主要分為幾部分。第一部分為數據模型和查詢語言,數據模型包含數據的表示以及理論支持,有模型之後當然就需要有查詢語言來讓程序訪問數據,最初的查詢語言類似於程序語言,相對比較複雜,後續才發展出了現在的SQL語句。第二部分為查詢優化和執行,這也是數據庫最核心的部分,面臨複雜查詢時優化和執行必不可少。第三部分為索引和存儲,數據庫的存儲其實非常複雜,經歷了很多的演練,從最早的行存慢慢演化出來了列存以及存儲於演示分離的架構等。第四部分為事務處理,傳統意義上的數據庫存儲包含索引、存儲、事務這幾個部分,這裡之所以將事務處理分離開來,是因為相對來說這部分比較獨立,在各個不同數據庫中也都將它獨立出來了。

數據庫演化

雲數據庫的本質是什麼?

這張圖展示的是網狀/層次模型的解析圖,左下角是網狀模型存儲的數據,它們通過指針相互關聯,可以看到整個模型中存在大量的指針,相對來說還是比較複雜。網狀模型數據的存取使用的是一種過程性的語言,基本上類似於寫程序語言,用起來很不方便。

1970年開始Edgar F. Codd提出了關係模型,用數學的理論形式來表示數據模型,簡單易用是它最大的優先。後來雖然出現了NoSQl、HBse、NewSQL等各種數據庫,但是到最後大家都會發現SQL語言還是最簡單的,不管是通過key value的形式還是語言的形式訪問數據庫都沒有被用戶所熟悉,因為相對來說SQL語句更類似與自然語言能被很好的接受。

2000年之後出現了第三大類模型,這一類的模型數量相對要多一些,包括Graph、Tree、KV等模型,其中Tree類型的數據庫之前有一段時間很火熱,MongoDB就屬於這一類。這些比較熱門的數據庫一般在10多年前研究界都會有所研究。

其他分類方法

數據庫的分類不光可以通過模型來分,也還有其他各種方法。比如事務處理和分析處理,事務交易是目前大部分的數據庫涉及的領域,分析處理則是從70-80年代開始出現,分析類的數據倉庫也是大數據中涉及最多的一部分。第二種分類方式是並行和串行,串行的出現的時間相對並行要早一些,因此早期的數據大多都是串行。第三類是基於硬件的分類,硬件和軟件向來都不可分離,早期的數據庫都是基於CPU,而隨著硬件的發展數據庫也做出了相應的變化,不過由於硬件的侷限性目前主流的還是CPU。第四類是雲數據庫和非雲數據庫,雖然從運維的層次來看雲數據庫相對傳統數據庫簡化了很多,但它本質上是一種商業模式,真正在數據庫核心上的改變並沒有多少。

介紹完分類方法之後,我們重點來看下其中的分析處理和雲數據庫。

數據倉庫的演進

雲數據庫的本質是什麼?

分析處理主要涉及的就是數據倉庫。Teradata是最早期做數據倉庫商業化的公司,於1984年推出了第一個MPP數據倉庫。需要注意的是最初的數據倉庫應用技術並不是MPP而傳統的共享存儲方式。傳統數倉可擴展性相對較差,最多隻能到十幾個節點,第一代MPP解決了部分可擴展性問題。2000年左右又出現了第二代MPP,使用常見的X86架構硬件實現了並行處理。MPP的缺陷在於不能應付太大的數據規模,基本上100個節點就到了瓶頸,主要是因為無法很好的管理節點。所有第三代數倉出現了,Hive, HAWQ, SparkSQL, Snowflake等就是屬於這一類,它有一個明顯的特點就是實現了存儲和計算的完成分離,能夠根據資源調度計算,可擴展性得到了很大提升。

數據倉庫引擎比較

雲數據庫的本質是什麼?

這裡將這三代數據倉庫放在幾個象限內進行了比較,第一個維度是性能和兼容性,第二維度是可擴展性和開源、開放性。傳統的共享存儲數據倉庫被放在左上角,中間部分是MPP,由於雲數據庫的本質架構並無太多變化,所以也位於中間。最後是第三類系統,他們性能往往不如老牌數據庫優化的好,兼容性也較差。

NewDW的細分類別

根據存儲的不同新一代數倉還能進行更細的劃分。第一類是SQL on Hadop,SparkSQL、Hive以及早期的HAWQ都屬於這一類。第二類是SQL on Object Store,隨著雲計算的發展很多創業公司都將數據存儲在雲端,阿里的對象存儲就有很多中小型公司在使用。前兩大類雖然在架構上還不錯,但是都有著同樣的侷限性,想要取代第二代數倉還有很遠的路要走。這也就是第三大類Hybrid(混合存儲)出現的目的,這一類有著自己的原生存儲,對外部存儲可插拔,其中走的比較前面一點的數據庫有Impaia和HAWQ。

雲數據庫

雲數據庫的創新並不多,大部分都是將現有的數據庫搬到雲上,大致有這樣幾個分類。第一類是數據庫服務,主要是對數據庫做了一些工程性工作,比如新增前端界面,然後做部署、收費和一些安全控制。第二類就更簡單了,直接將虛擬機鏡像放在雲端。第三類容器鏡像針對的是傳統的TP,比如Mysql和Postgre就有一些可以直接使用的容器鏡像,對於並行的數據庫還沒有很好的方案。

雲數據庫相對於傳統數據庫不同之處可能只有這幾點,部署運維比較簡單,收費模式不同,能做到簡單的彈性伸縮。

OuShu DataBase的前世今生

HAWQ主要發展歷程

雲數據庫的本質是什麼?

這就是HAWQ的發展歷程,從剛開始提出創意到做出原型系統, 再到第一代產品完成然後到後來開源,最後成立創業公司,基本上是這樣一個過程。2017年的時候我們又推出了新的執行器,性能上有了10倍的提升。

Greenplum版本演進

雲數據庫的本質是什麼?

HAWQ的原型系統最初是基於Postgre和hadoop,後來在進入Greenplum之後我們有了Greenplum的源碼,所以後來將Postgre替換成了Greenlpum。上圖是Greenplum Database最初始的架構,非常經典的MPP模式,每個節點上有幾個單節點的數據庫,每個單節點都有一些mirror。比如上圖的結構中有4個節點,每個節點中有2個主數據庫,還有兩個mirror,這時候的並行度就是8。

雲數據庫的本質是什麼?

上圖是HAWQ的Alpha版本的架構,這個版本還不能算是第三代的數據倉庫,因為這時只是單純添加了存儲,計算和調度都沒有改變,解決的問題有限,包括Recovery、動態擴容、調度、固定並行等問題都還存在。

雲數據庫的本質是什麼?

1.0版本中我們將mirror 去除了,使得Recovery更加簡單,解決了原先4個問題的其中之一。

雲數據庫的本質是什麼?

2.0版本做了大量的架構變動,這一代開始才真正的達到了存儲與計算的分離,實現了秒級擴容,可以根據數據進行靈活調度,以及根據查詢規模決定併發大小等。在這之後也能和容器雲平臺進行很好的結合。

雲數據庫的本質是什麼?

HAWQ3.0目前只在企業版本中才會發布,開源版本還未發佈。數據庫最核心的部分就是執行器和優化器,針對這點我們在3.0中完全重寫了一個新的執行器,為此做了大量的工作,每個算法都進行了優化,因此在性能上有很大的提升。

雲數據庫的本質是什麼?

這裡展示的是4.0將要做的工作,HAWQ的存儲完全換了一套,可以認為是一個NewSQL引擎,但相對於目前大多數只關注事務型處理的NewSQL,我們還會從分析型數據倉庫的角度來做大規模的跨數據中心的複製。4.0的整個架構基本上是P2P,沒有master,支持廣域網的複製。

以上為今天的全部分享內容,謝謝大家!


分享到:


相關文章: