天天看點

Hbase随筆2

Hbase是建立在HDFS上的分布式資料庫,下圖是Hbase表的模型:

Hbase随筆2

      Hbase這個資料庫其實和傳統關系資料庫還是有很多類似之處,而不是像mongodb,memcached以及redis完全脫離了表的概念,隻不過hbase是以列為中心的資料庫,而傳統關系資料庫則是以行為中心的資料庫。不過hbase這個列并非我們傳統意義的列,而是列族。列族是hbase最小的存儲機關,換句話說hbase底層資料都是以列族來進行組織的。

      學習hbase我最大的收獲我個人覺得是對資料庫的一種新的認識,資料庫作用還是快速的檢索出我們想要資料,也就是資料庫的主要作用還是為了實時查詢,如果一個存儲資料的系統檢索資料的速度很慢,那麼這個系統應該稱之為資料倉庫,hbase是一種資料庫,是一種用來彌補傳統關系資料庫在海量資料中快速檢索資料的能力不足。不過受制于持久存儲系統的檢索資料的速度以及海量資料存儲是分散到各個伺服器上,是以解決海量資料實時檢索的方式隻有根據實際的業務場景重新組織資料存儲的模型,并且加上合理的索引來解決的。那麼hbase是如何解決這個問題的呢?

      Hbase首先打破關系資料庫裡的避免資料備援的機制,将經常需要一起查詢的記錄聚集在一起存儲,例如商戶的訂單資訊,這裡我們用order代表訂單資訊,orderId為訂單号,spId為商品訂單号,spNm為商品名字,num為數量其他字段就略去,在hbase裡我們可以把order定義為一個列族,orderId這些字段就是列的名字,在底層存儲系統裡我們将order這個列族下所有的列資料聚集在一起存儲,那麼當我們查詢訂單資訊就可以直接找到這些聚集在一起的存儲訂單資訊,那麼就可以快速查詢出訂單資訊。這一點相比關系資料庫,關系資料庫很難将一些經常查詢出來的資訊聚集在一起存儲,這也就是hbase對于關系資料庫的一大優勢。這也就是為什麼hbase是圍繞列族的資料庫,因為列族就是将一些經常會被一起查詢出來的資料的邏輯抽象,是以底層實體存儲機制都是圍繞列族進行,這也就是hbase裡的hfile了,hfile是hbase實體存儲的最小機關,而hfile都是按照列族聚集在一起的。