雖然HBase是基於Bigtable的開源實現,但是兩者還是有很多區別的。Bigtable通常被描述為壹個鍵值數據庫,而HBase是壹個面向列存儲的分布式數據庫。
以下是HBase的顯著特點,這些特點使HBase成為目前和未來最實用的數據庫之壹。
巨大的容量
HBase的單個表可以有幾百億行,幾百萬列,可以橫向和縱向兩個維度插入數據,靈活性很大。
當關系數據庫中單個表的記錄在1億量級時,查詢和寫入的性能會呈指數級下降。這種龐大的數據量對於傳統數據庫來說是壹場災難,而HBase在限制壹列的情況下,在單個表中存儲數百億甚至更多的數據是沒有性能問題的。
HBase使用LSM樹作為其內部數據存儲結構,定期將較小的文件合並到較大的文件中,以減少對磁盤的訪問。
擴展性強
HBase在HDFS上工作,它自然支持分布式表,並繼承了HDFS的可伸縮性。HBase的擴展是水平的。橫向擴展是指在擴展時,不需要提高服務器本身的性能,只需要將服務器添加到現有的集群中即可。
HBase表根據區域大小進行分區,存儲在集群中的不同節點上。當添加新節點時,會重新調整集群,並在新節點上啟動HBase server以進行動態擴展。這裏需要指出的是,HBase的擴展是熱擴展,即可以在不停止現有服務的情況下,隨時增加或減少節點。
高可靠性
HBase運行在HDFS上,HDFS的多副本存儲可以讓它在出現故障時自動恢復。同時,在HBase內部,還提供了WAL和復制機制。
WAL(Write-Ahead-Log)預寫日誌(pre-write log)是用來記錄HBase server在數據插入和刪除過程中的操作內容的日誌,保證寫入數據時不會因為集群異常而丟失寫入的數據;復制機制基於日誌操作來同步數據。