一、Vertica數(shù)據(jù)庫與Cassandra相比有什么優(yōu)勢
vertica是傳統(tǒng)的關(guān)系型數(shù)據(jù)庫,特點是按列存儲,而且集成了MapReduce支持。
Cassandra則是屬于NoSQL陣營,特點是綜合Dynamo的弱一致性模型和Bigtable的數(shù)據(jù)模型。vertica最大的優(yōu)勢就是它提供了SQL的支持,可以很好的兼容以往的工具和數(shù)據(jù)。
傳統(tǒng)的SQL語義在高可伸縮性要求下很難實現(xiàn),如join等操作。你可以設(shè)想一下,如果要join的表都非常大,超出單臺機(jī)器的處理能力,要高效地完成這個操作該有多困難。事實上這方面已經(jīng)有很多學(xué)術(shù)研究在進(jìn)行。
傳統(tǒng)的數(shù)據(jù)庫除了SQL語義外,還要保證transaction的ACID,而要同時滿足高一致性和事務(wù)操作的要求是很難實現(xiàn)高可伸縮性的。因而才會有NoSQL的出現(xiàn),它們犧牲了部分SQL和事務(wù)的語義、降低一致性要求,以實現(xiàn)高可伸縮性的系統(tǒng)。
Vertica的底層存儲實現(xiàn)和HBase的不一樣。雖然都是叫按列存儲,HBase是先將表格按行劃分成塊,在數(shù)據(jù)塊內(nèi)部才是按列存儲;Vertica的存儲比較靈活,它號稱可以配置哪些列要放在一起存儲,每列都分開就是最基本的按列存儲,所有列都和在一起就是按行存儲了,不過同一列的數(shù)據(jù)還是會放在一起。
所以按列或者按行存儲只是不同的系統(tǒng)設(shè)計選擇,不是決定性因素。關(guān)鍵還是在于對上層提供的語義。
HBase,Cassandra本身只有存儲能力,如果要做查詢需要借助Hadoop這樣的框架進(jìn)行,Hive就是把查詢都編譯成Hadoop任務(wù)實現(xiàn)的。Hadoop的查詢效率要比關(guān)系型數(shù)據(jù)庫要低,主要是因為1)Hadoop為了保證容錯,中間數(shù)據(jù)都要走一遍磁盤,IO開銷大;2)Hadoop缺少查詢優(yōu)化引擎還有索引等優(yōu)化機(jī)制(有人把Hadoop任務(wù)轉(zhuǎn)換成sql語句,然后再利用傳統(tǒng)數(shù)據(jù)庫的優(yōu)化算法優(yōu)化。
延伸閱讀:
二、Vertica是什么
Vertica是一款基于列存儲的MPP(massively parallel processing)架構(gòu)的數(shù)據(jù)庫。
它可以支持存放多至PB(Petabyte)級別的結(jié)構(gòu)化數(shù)據(jù)。Vertica是由關(guān)系數(shù)據(jù)庫大師Michael Stonebraker(2014 年圖靈獎獲得者)所創(chuàng)建,于2011年被惠普收購并成為其核心大數(shù)據(jù)平臺軟件。Vertica 采用無共享的MPP 架構(gòu),基于工業(yè)標(biāo)準(zhǔn)的x86 服務(wù)器,擁有高可擴(kuò)展性。Vertica 集群中的所有節(jié)點100%對等,集群中沒有主節(jié)點或其他共享資源。通過增加節(jié)點,就可以線性地擴(kuò)展集群的計算能力和數(shù)據(jù)處理容量。Vertica 是真正的純列式數(shù)據(jù)庫,優(yōu)化器和執(zhí)行引擎可以忽略表中與查詢無關(guān)的列。Vertica 不僅僅按列式存儲數(shù)據(jù),還主動地根據(jù)列數(shù)據(jù)的特點和查詢的要求選用優(yōu)異的算法對數(shù)據(jù)進(jìn)行排序和編碼壓縮,這就極大地降低磁盤I/O 消耗。同時,Vertica 的執(zhí)行引擎和優(yōu)化器也是基于列式數(shù)據(jù)庫設(shè)計的,編碼壓縮過的列數(shù)據(jù)在Vertica 的執(zhí)行引擎中進(jìn)行過濾、關(guān)聯(lián)、分組等操作時不需要解反編碼,從而大大降低了CPU 和內(nèi)存消耗。