分布式列存儲(chǔ)框架,在生產(chǎn)生活中會(huì)接觸到很多信息數(shù)據(jù),而大部分信息是由非結(jié)構(gòu)化數(shù)據(jù)組成的,特別是在大數(shù)據(jù)處理過程中尤為明顯。這些數(shù)據(jù)都無法用關(guān)系型數(shù)據(jù)庫(kù)的思維方式建模,因此在大數(shù)據(jù)的處理過程中,就出現(xiàn)了很多非結(jié)構(gòu)化數(shù)據(jù)處理需求。
為了存儲(chǔ)便利,易于理解,在完整的大數(shù)據(jù)體系中采用了很多NoSQL(Not OnlySQL的縮寫)數(shù)據(jù)庫(kù)。基于NoSQL理念設(shè)計(jì)的最著名的系統(tǒng)是Google的BigTable和滑鐵盧大學(xué)開發(fā)的HBase。Facebook將Google BigTable和Amazon Dynamo的完全分布式架構(gòu)集于一身,開發(fā)了Cassandra,后于2010年正式成為了Apache基金會(huì)項(xiàng)目。
Cassandra和HBase的出現(xiàn)不但使NoSQL的處理速度得到了前所未有的提升,而且它們能夠組成集群化也為Hadoop、Spark等需要大容量數(shù)據(jù)快速寫入的業(yè)務(wù)場(chǎng)景提供了非常有用的工具。著名的甲骨文公司Oracle也有自己的NoSQL產(chǎn)品,叫做NoSQL Database。
1.Cassandra簡(jiǎn)介
Cassandra的名字來源于希臘神話的一位女先知,因此該項(xiàng)目的Logo是一只明亮的眼睛。最突出的特點(diǎn)是它的可擴(kuò)展性,給集群添加新節(jié)點(diǎn)時(shí),可以直接指向新的主機(jī),不必重啟任何進(jìn)程和改變?nèi)魏尾樵儯欠浅1憷淖詣?dòng)熱擴(kuò)展機(jī)制。這是一個(gè)非常好的特性。
此外,Cassandra還有一個(gè)優(yōu)良的特性,即支持SQL語言。這也讓廣大的SQL愛好者覺得非常親切,大大降低了學(xué)習(xí)的門檻。
2.HBase簡(jiǎn)介
HBase采用Java語言開發(fā),和Cassandra一樣,同樣借鑒了Google的BigTable模型,主要為Hadoop生態(tài)圈提供了列存儲(chǔ)服務(wù)。
HBase使用HFile對(duì)文件進(jìn)行列式存儲(chǔ),HFile存儲(chǔ)以列族為單位。在讀取時(shí)如果只需用行鍵作為索引要掃描一個(gè)列族的內(nèi)容,那么其他不相干的列族即便存在和索引條件對(duì)應(yīng)的邏輯關(guān)系也不會(huì)被掃描到,這種方式在一定程度上避免了IO擁塞,也更加適合這種小尺寸的OLTP操作。
但是和Cassandra一樣,HBase也不支持事務(wù)操作。
3.Cassandra和HBase對(duì)比
(1)Cassandra部署更簡(jiǎn)單。Cassandra只有一種角色,而HBase除了RegionServer外還需要ZooKeeper來同步集群狀態(tài)。
(2)數(shù)據(jù)一致性是否可配置。Cassandra的數(shù)據(jù)一致性是可以配置的,可以更改為最終一致性,而HBase是強(qiáng)一致性的。
(3)負(fù)載均衡算法不同。Cassandra通過一致性哈希來決定數(shù)據(jù)存儲(chǔ)的位置,而HBase靠Master節(jié)點(diǎn)管理數(shù)據(jù)的分配,將過熱的節(jié)點(diǎn)上的Region動(dòng)態(tài)分配給負(fù)載較低的節(jié)點(diǎn)。因此Cassandra的平均性能會(huì)優(yōu)于HBase,但是Hbase有Master節(jié)點(diǎn),熱數(shù)據(jù)的負(fù)載更均衡。
(4)單點(diǎn)問題。正是由于Hbase存在Master節(jié)點(diǎn),因此會(huì)存在單點(diǎn)問題。