看看這個像不像中國移動的業(yè)務(wù)?
分布式數(shù)據(jù)庫 HBase 的特點和優(yōu)勢
高可擴(kuò)展性
HBase 是真正意義上的線性水平擴(kuò)展。數(shù)據(jù)量累計到一定程度(可配置),HBase系統(tǒng)會自動對數(shù)據(jù)進(jìn)行水平切分,并分配不同的服務(wù)器來管理這些數(shù)據(jù)。這些數(shù)據(jù)可以被擴(kuò)散到上千個普通服務(wù)器上。這樣一方面可以由大量普通服務(wù)器組成大規(guī)模集群,來存放海量數(shù)據(jù)(從幾個 TB 到幾十 PB 的數(shù)據(jù))。另一方面,當(dāng)數(shù)據(jù)峰值接近系統(tǒng)設(shè)計容量時,可以簡單通過增加服務(wù)器的方式來擴(kuò)大容量。這個動態(tài)擴(kuò)容過程無需停機,HBase系統(tǒng)可以照常運行并提供讀寫服務(wù),完全實現(xiàn)動態(tài)無縫無宕機擴(kuò)容。
高性能
HBase 的設(shè)計目的之一是支持高并發(fā)用戶數(shù)的高速讀寫訪問。這是通過兩方面來實現(xiàn)的。首先數(shù)據(jù)行被水平切分并分布到多臺服務(wù)器上,在大量用戶訪問時,訪問請求也被分散到了不同的服務(wù)器上,雖然每個服務(wù)器的服務(wù)能力有限,但是數(shù)千臺服務(wù)器匯總后可以提供極高性能的訪問能力。其次,HBase 設(shè)計了高效的緩存機制,有效提高了訪問的命中率,提高了訪問性能。
高可用性
HBase 建立在 HDFS 之上。HDFS 提供了數(shù)據(jù)自動復(fù)制和容錯的功能。HBase 的日志和數(shù)據(jù)都存放在 HDFS 上,即使在讀寫過程中當(dāng)前服務(wù)器出現(xiàn)故障(硬盤、內(nèi)存、網(wǎng)絡(luò)等故障),日志也不會丟失,數(shù)據(jù)都可以從日志中自動恢復(fù)。HBase 系統(tǒng)會自動分配其他服務(wù)器接管并恢復(fù)這些數(shù)據(jù)。因此一旦成功寫入數(shù)據(jù),這些數(shù)據(jù)就保證被持久化并被冗余復(fù)制,整個系統(tǒng)的高可用性得到保證。
數(shù)據(jù)模型及其特點
HBase 是一個面向列的、稀疏的、分布式的、持久化存儲的多維排序映射表(Map)。表的索引是行關(guān)鍵字、列簇名(Column Family)、列關(guān)鍵字以及時間戳;表中的每個值都是一個未經(jīng)解析的字節(jié)數(shù)組。
面向列:指的是同一個列簇里所有數(shù)據(jù)都存放在一個文件中,從而在讀寫時有效降低磁盤I/O的開銷,并且由于類似數(shù)據(jù)存放在一起,提高了壓縮比。經(jīng)過壓縮后的數(shù)據(jù)容量通常達(dá)到原來的 1/3 到 1/5, 極大節(jié)省了存儲空間。
多維表:這是對傳統(tǒng)二維關(guān)系表的極大擴(kuò)充。傳統(tǒng)二維表有兩維:行和列。列在設(shè)計表結(jié)構(gòu)時必須預(yù)先固定,而行可以動態(tài)增加,也就是說有一個維度可動態(tài)改變。HBase的多維表有四維,列簇需要在設(shè)計表結(jié)構(gòu)時事先確定,而行、列、時間維都可以動態(tài)增加。也就是說有三個維度可動態(tài)改變。這種結(jié)構(gòu)非常適合用來表述有嵌套關(guān)系的數(shù)據(jù)。另外,動態(tài)增刪列的能力也給很多業(yè)務(wù)帶來便利,特別是這些業(yè)務(wù)在不停的演化,需要的列字段也在不停的增加,多維表結(jié)構(gòu)可以隨時進(jìn)行改變以適應(yīng)業(yè)務(wù)發(fā)展需求。
稀疏表:由于多維表的列可以動態(tài)增加,必然導(dǎo)致不同行相同列的數(shù)據(jù)大部分為空,也就是說這個表是稀疏的。不像傳統(tǒng)關(guān)系型數(shù)據(jù)庫,HBase 不存放空值,只存放有內(nèi)容的表格單元(cell),因此可以支持超大稀疏表,而不會帶來任何開銷。這對傳統(tǒng)的表結(jié)構(gòu)設(shè)計也帶來了觀念上的大改變。