Hbase篇--HBase中一對多和多對多的表設計
阿新 • • 發佈:2019-02-18
一.前述
今天分享一篇關於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;