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