Vertica數據庫與Cassandra相比有什么優勢?
一、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 和內存消耗。

猜你喜歡LIKE
相關推薦HOT
更多>>
MySQL普通索引不等于為什么會失效?
一、MySQL普通索引不等于會失效的原因1、列數據類型不匹配如果查詢條件中的列類型與索引列類型不匹配,MySQL無法使用索引進行優化。例如,索引...詳情>>
2023-10-18 11:14:01
為什么關系型數據庫系統不易于scaling out(橫向擴展)?
一、為什么關系型數據庫系統不易于scaling out(橫向擴展)因為傳統的SQL數據庫沒想到要分片存儲,而現在的NewSQL開始考慮到這些問題了。當然分...詳情>>
2023-10-18 10:49:50
MySQL InnoDB引擎中的各種鎖具體是怎么實現的?
一、MySQL InnoDB引擎中的各種鎖的實現方式MySQL InnoDB引擎中的各種鎖是通過多種機制實現的1、共享鎖(Shared Lock)和排他鎖(Exclusive Lock...詳情>>
2023-10-18 10:26:59
Android怎么連接遠程數據庫?
一、Android連接遠程數據庫的方法1、確保遠程數據庫可以遠程訪問首先,確保您的遠程數據庫允許遠程連接。這通常需要在數據庫服務器的配置中啟用...詳情>>
2023-10-18 10:09:10熱門推薦
常用JS前端開發框架有哪些?
沸事務并發控制s2pl和s2pl有何區別?
熱為什么一臺電腦可以安裝多個SQL Server實例?
熱MySQL普通索引不等于為什么會失效?
新為什么關系型數據庫系統不易于scaling out(橫向擴展)?
MySQL InnoDB引擎中的各種鎖具體是怎么實現的?
Android怎么連接遠程數據庫?
為什么MySQL在innodb引擎中即使使用了MVCC機制仍然會出現丟失更新?
IO多路復用中select、poll、epoll之間的區別?
讀寫分離為什么能夠提升性能?
為什么mysql innodDB中組合索引中范圍查詢后的條件索引會失效?
為什么noteexpress不能建立數據庫也不能打開別的數據庫?
計算機前端是什么?
APP中集成移動端車牌識別系統都能達到什么效果?
技術干貨






