1. 程式人生 > >Hbase篇--HBase中一對多和多對多的表設計

Hbase篇--HBase中一對多和多對多的表設計

一.前述

今天分享一篇關於HBase的一對多和多對多的案例的分析。

二.具體案例

案例一.多對多

   人員-角色  人員有多個角色  角色優先順序  角色有多個人員  人員 刪除新增角色  角色 可以新增刪除人員  人員 角色 刪除新增

PS:說明,兩張表User表和Role表, User表中定義兩個列族,第一個列族是名字,第二個列族中  多個列定義為具體的角色,列的內容定義為具體的值,即優先順序(這裡利用了列也能存資訊,所以把角色Id定義為具體的列,值越大代表優先順序越高

案例二.一對多

組織架構 部門-子部門
  查詢 頂級部門
  查詢 每個部門的所有子部門
  部門 新增、刪除子部門
  部門 新增、刪除

PS:解釋 一個表 rowkey中0代表頂級部門  1代表非頂級部門  因為頂級部門不是經常查  列族的列是具體的子部門列表。值是具體的名稱。

案例三.

3、微博
新增關注
檢視粉絲列表
釋出微博
檢視某個使用者所有的微博  排序:時間降序排序
檢視首頁  時間降序排序


001小明       關注  韓梅梅、李雷
002李雷       關注  韓梅梅
003韓梅梅


關注粉絲表
rowkey         CF1 - 關注列表       CF2 - 粉絲列表
pid

小明   001     CF1:003=韓梅梅;CF1:002=李雷;
李雷   002     CF1:003=韓梅梅;         CF2:001=小明;
韓梅梅 003                             CF2:001=小明;CF2:002=李雷;


微博表


rowkey           cf
wid            cf:content=微博內容;

wid設計:
pid_(Max-timestamp)


收取微博表
rowkey    cf (maxversion=1000)
pid          cf:sq=wid;