CGFT《大數(shù)據(jù)技術原理與應用》中HBase與傳統(tǒng)關系數(shù)據(jù)庫的對比分析,今天小編帶大家一起學習。
數(shù)據(jù)庫從20世紀70年代發(fā)展到今天,已經(jīng)是一種*成熟穩(wěn)定的數(shù)據(jù)庫管理系統(tǒng),通常具備的功能包括面向磁盤的存儲和索引結構、多線程訪問、基于鎖的同步訪間機制、基于日志記錄的恢復機制和事務機制等。
但是,隨著Web2.0應用的不斷發(fā)展,傳統(tǒng)的關系數(shù)據(jù)庫已經(jīng)無法滿足Web2.0的需求,無論在數(shù)據(jù)高并發(fā)方面,還是在高可擴展性和高可用性方面,傳統(tǒng)的關系數(shù)據(jù)庫都顯得力不從心,關系數(shù)據(jù)庫的關鍵特性——完善的事務機制和高效的查詢機制,在eb2.0時代也成為“雞肋”。包括HBase在內的非關系型數(shù)據(jù)庫的出現(xiàn),有效彌補了傳統(tǒng)關系數(shù)據(jù)庫的缺陷,在Web2.0應用中得到了大量使用。
HBase與傳統(tǒng)的關系數(shù)據(jù)庫的區(qū)別主要體現(xiàn)在以下幾個方面。
數(shù)據(jù)類型。關系數(shù)據(jù)庫采用關系模型,具有豐富的數(shù)據(jù)類型和存儲方式,HBase則采用了更加簡單的數(shù)據(jù)模型,它把數(shù)據(jù)存儲為未經(jīng)解釋的字符串,用戶可以把不同格式的結構化數(shù)據(jù)和非結構化數(shù)據(jù)都序列化成字符率,保存到HBase中,用戶需要自己編寫程序把字將半解析成不同的數(shù)據(jù)類型。
數(shù)據(jù)操作、關系數(shù)假庫中包含了豐富的操作,如插入、刪除、更新、查詢等、其中會涉及復雜的多表連接,通常是借助于多個表之間的主外鍵關聯(lián)來實現(xiàn)的。HBase操作則不存在復雜的表與表之間的關系、只有簡單的輔入、查詢、刪除、清空等、因為HBase在設計上就避免了復雜的表和表之間的關系,通常只采用單表的主鍵查詢,所以,它無法實現(xiàn)像關系數(shù)據(jù)庫中那樣的表和表之間的連接操作。
存儲模式。關系數(shù)據(jù)庫是基于行模式存儲的,元組或行會被連續(xù)地存儲在磁盤頁中。在讀取數(shù)據(jù)時、需要順序掃描每個元組、然后、從中篩選出查詢所需要的屬性。如果每個元組只有少量屬性的值對于查詢是有用的、那么基于行模式存儲就會浪費許多做做空間和內存管寬。
HBase是基于列存儲的,每個列族都由幾個文件保存,不同列族的文件是分離的,它的優(yōu)點是:
可以降低10開銷、支持大量并發(fā)用戶查詢、因為僅需要處理可以回答這些查詢的列,而不需要處理與查詢無關的大量數(shù)據(jù)行;同一個列族中的數(shù)據(jù)會被一起進行壓縮,由于同一列族內的數(shù)據(jù)相似度較高,因此,可以獲得較高的數(shù)據(jù)壓縮比。
數(shù)據(jù)索引。關系數(shù)據(jù)庫通常可以針對不同列構建復雜的多個索引,以提高數(shù)據(jù)訪問性能與關系數(shù)據(jù)庫不同的是,HBase只有一個索引——行鍵,通過巧妙的設計,HBase中的所有請問方法,或者通過行鍵訪問,或者通過行鍵掃描,從而使得整個系統(tǒng)不會慢下來,由于HBase位于Hadoop框架之上,因此,可以使用Hadoop MapReduce來快速,高效地生成索引表。
數(shù)據(jù)維護。在關系數(shù)據(jù)庫中,更新操作會用*的當前值去替換記錄中原來的舊值,舊信被覆蓋后就不會存在。而在HBase中執(zhí)行更新操作時,并不會刪除數(shù)據(jù)舊的版本,而是生成一個新的版本,舊有的版本仍然保留。
可伸縮性。關系數(shù)據(jù)庫很難實現(xiàn)橫向擴展,縱向擴展的空間電比較有限,相反,HBase和BigTable這些分布式數(shù)據(jù)庫就是為了實現(xiàn)靈活的水平擴展面開發(fā)的,能夠輕易地通過在集群中增加或者減少硬件數(shù)量來實現(xiàn)性能的伸縮。
但是,相對于關系數(shù)據(jù)庫來說,HBase也有自身的局限性,如HBase不支持事務,因此,無法實現(xiàn)跨行的原子性。