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