深入學習hbase:表,列族,列標識,版本和cell

來源:互聯網
上載者:User

標籤:http   strong   檔案   資料   io   cti   

HBase是面向列的分布式的資料庫,和傳統的關係型資料庫有很大的不同:物理模型和邏輯模型。這裡我們要首先講一下HBase資料庫相關的區別於關係型資料庫的幾個基本概念: 
         表:HBase將資料群組織到自己的HTable表中,這個表是根據列族(colomn family)在物理上儲存資料的,每個列族都有自己的檔案夾和storefiles,不像關係型資料庫那樣將一個表儲存成一個檔案,表明也是檔案系統路徑的一部分。 
         行:HBase中的行是邏輯上的行,物理上模型上行是按列族(colomn family)分別存取的。HBase有Rowkey的概念,rowkwy沒有資料類型,總是被認為是byte[],它相當於關係型資料表中的主鍵。另外Rowkey設計的好壞對讀取資料有很長大的關係,可以被認為是設計HBase表是最重要的一個環節。而系型資料表中的行是真正意義上的行,邏輯上和物理上都是按行組織資料。 
         列族:HBase表中的行是按一個叫colomn family的列族分組的,也是在磁碟上也是按列族儲存資料的,由於這個原因,故當定義一個hbase表時,除了定義表名外,還必須定義列族。傳統資料庫沒有列族的概念。 
         列標識:一個列族中的資料是通過一個叫colomn qualifier的具體描述每一列。列標識在標定一種可以動態定義,既可以在表定義時定義,也可以在儲存資料時定義。而系型資料庫的表沒有此概念。 
         版本:HBase中的資料有版本的概念,每次產生或修改資料時都儲存一個版本資訊——這個版本資料就是一個時間戳記,可以再定義表時動態設定儲存行的版本數量,預設版本數為1,同一行的不同版本的資料是按時間戳記倒敘排列的,而其他資料如rowkey和列標識是按字典順序排列的,這也是讀資料操作的一種最佳化手段。對於某一行,當儲存的行的版本數大於設定的值後,最老的版本的資料行就會在執行Major compaction時被刪除掉。版本資料是預設添加的,其值時儲存資料時的時間戳記,long型(長整型)。而系型資料庫的表沒有此概念。 
          Cell:在HBase表中,是由rowkey + (colomn family:colomn qualifier) + version來標識一個cell,使用者儲存的具體資料是儲存在這個cell中的,它的值時byte[]類型的,需要在用戶端將之改為需要的類型。 
 
            table、row、rowkey、colomn family、colomn qualifier、version(timestamp)和cell 
           對於可以看出: 
           rowkey ->jacky20130429  jacky20130430 
           comlom family -> info events 
           version ->t3 t6 t9等 
           colomn qualifier -> email sex address type name 
          對於表的2個列族info和events,會被分別儲存到磁碟上。 
          由於【jacky20130429,info,email,t9】 ------> [email protected],故HBase可以被看做是key-value的資料庫。另外,HBase也可以被看做有排序的Map的Map: 
          SortedMap< 
              Rowkey,List< 
                  SortedMap< 
                      Colomn,List< 
                          value,timestamp 
                      > 
                  > 
              > 
           >
 
第一層的SortedMap代表HBase的HTable,包括一個colomn families的集合,每個列族包括又一層的SortedMap,這層的SortedMap裡包括列和相關聯的資料的集合。 
          HBase表中的行是有原子性的,但是一行的不同版本可能分布在不同的storefile檔案中,到期失效的資料只能在Major Compaction操作時刪除。 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.