自1970年以來,關(guān)系數(shù)據(jù)庫用于數(shù)據(jù)存儲和維護有關(guān)問題的解決方案。大數(shù)據(jù)的出現(xiàn)后,好多公司實現(xiàn)處理大數(shù)據(jù)并從中受益,并開始選擇像 Hadoop 的解決方案。
Hadoop使用分布式文件系統(tǒng),用于存儲大數(shù)據(jù),并使用MapReduce來處理。Hadoop擅長于存儲各種格式的龐大的數(shù)據(jù),任意的格式甚至非結(jié)構(gòu)化的處理。
Hadoop只能執(zhí)行批量處理,并且只以順序方式訪問數(shù)據(jù)。這意味著必須搜索整個數(shù)據(jù)集,即使是最簡單的搜索工作。
當處理結(jié)果在另一個龐大的數(shù)據(jù)集,也是按順序處理一個巨大的數(shù)據(jù)集。在這一點上,一個新的解決方案,需要訪問數(shù)據(jù)中的任何點(隨機訪問)單元。
應用程序,如HBase, Cassandra, couchDB, Dynamo 和 MongoDB 都是一些存儲大量數(shù)據(jù)和以隨機方式訪問數(shù)據(jù)的數(shù)據(jù)庫。
HBase是建立在Hadoop文件系統(tǒng)之上的分布式面向列的數(shù)據(jù)庫。它是一個開源項目,是橫向擴展的。
HBase是一個數(shù)據(jù)模型,類似于谷歌的大表設計,可以提供快速隨機訪問海量結(jié)構(gòu)化數(shù)據(jù)。它利用了Hadoop的文件系統(tǒng)(HDFS)提供的容錯能力。
它是Hadoop的生態(tài)系統(tǒng),提供對數(shù)據(jù)的隨機實時讀/寫訪問,是Hadoop文件系統(tǒng)的一部分。
人們可以直接或通過HBase的存儲HDFS數(shù)據(jù)。使用HBase在HDFS讀取消費/隨機訪問數(shù)據(jù)。 HBase在Hadoop的文件系統(tǒng)之上,并提供了讀寫訪問。
HDFS | HBase |
---|---|
HDFS是適于存儲大容量文件的分布式文件系統(tǒng)。 | HBase是建立在HDFS之上的數(shù)據(jù)庫。 |
HDFS不支持快速單獨記錄查找。 | HBase提供在較大的表快速查找 |
它提供了高延遲批量處理;沒有批處理概念。 | 它提供了數(shù)十億條記錄低延遲訪問單個行記錄(隨機存?。?。 |
它提供的數(shù)據(jù)只能順序訪問。 | HBase內(nèi)部使用哈希表和提供隨機接入,并且其存儲索引,可將在HDFS文件中的數(shù)據(jù)進行快速查找。 |
HBase是一個面向列的數(shù)據(jù)庫,在表中它由行排序。表模式定義只能列族,也就是鍵值對。一個表有多個列族以及每一個列族可以有任意數(shù)量的列。后續(xù)列的值連續(xù)地存儲在磁盤上。表中的每個單元格值都具有時間戳??傊?,在一個HBase:
下面給出的表中是HBase模式的一個例子。
Rowide | Column Family | Column Family | Column Family | Column Family | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
col1 | col2 | col3 | col1 | col2 | col3 | col1 | col2 | col3 | col1 | col2 | col3 | |
1 | ||||||||||||
2 | ||||||||||||
3 |
面向列的數(shù)據(jù)庫是存儲數(shù)據(jù)表作為數(shù)據(jù)列的部分,而不是作為行數(shù)據(jù)??傊鼈儞碛辛凶濉?/p>
行式數(shù)據(jù)庫 | 列式數(shù)據(jù)庫 |
---|---|
它適用于聯(lián)機事務處理(OLTP)。 | 它適用于在線分析處理(OLAP)。 |
這樣的數(shù)據(jù)庫被設計為小數(shù)目的行和列。 | 面向列的數(shù)據(jù)庫設計的巨大表。 |
下圖顯示了列族在面向列的數(shù)據(jù)庫:
HBase | RDBMS |
---|---|
HBase無模式,它不具有固定列模式的概念;僅定義列族。 | RDBMS有它的模式,描述表的整體結(jié)構(gòu)的約束。 |
它專門創(chuàng)建為寬表。 HBase是橫向擴展。 | 這些都是細而專為小表。很難形成規(guī)模。 |
沒有任何事務存在于HBase。 | RDBMS是事務性的。 |
它反規(guī)范化的數(shù)據(jù)。 | 它具有規(guī)范化的數(shù)據(jù)。 |
它用于半結(jié)構(gòu)以及結(jié)構(gòu)化數(shù)據(jù)是非常好的。 | 用于結(jié)構(gòu)化數(shù)據(jù)非常好。 |
年份 | 事件 |
---|---|
Nov 2006 | 谷歌公布 BigTable 文件。 |
Feb 2007 | 最初的HBase原型創(chuàng)建由 Hadoop 貢獻。 |
Oct 2007 | 隨著Hadoop 0.15.0,第一個可用的HBase也發(fā)布了。 |
Jan 2008 | HBase成為 Hadoop 的子項目。 |
Oct 2008 | HBase 0.18.1 發(fā)布。 |
Jan 2009 | HBase 0.19 發(fā)布。 |
Sept 2009 | HBase 0.20.0 發(fā)布。 |
May 2010 | HBase 成為 Apache 的頂級項目。 |