设计hbase表(表的查询相对于表的删除更多,所以设计表的时候要优先考虑查询)
实际上描述了:多对多的对应关系:两张表(如下:人员-角色表的设计)!
1、人员-角色
1.人员有多个角色,角色优先级
2.角色有多个人员
3.人员 删除添加角色
4.角色 可以添加删除人员
5.人员 角色 删除添加
person表
rowkey CF1 CF2
person_info role
member_id person_info:name role:role_id1 = 优先级num
person_info:age role:role_id2 = 优先级num
001 cf1:name=xiaoming cf2:101=1,cf2:102=0
role表
rowkey CF1 CF2
role_info person
role_id role_info:name person:member_id1 = member_name
role_info:fullname person:member_id2 = member_name
101 cf1:name=服务员 cf2: cf2:001=xiaoming001=xiaoming
102 cf1:name=前台
可以效仿 手机+UUID 生成主键ID;
hbase中没有像关系型数据库中的join语句(连接多张表),但是可以通过二级索引的方式查询!
2、组织架构 部门-子部门 (描述的是一对多表的设计)
1.查询 顶级部门
2.查询 每个部门的所有子部门(指的是二级子部门)
3.部门 添加、删除子部门
4.部门 添加、删除
组织架构:
1.Dept_no 部门编号
2.Dept_name 部门编号
3.Dept_pno 上级部门编号
dept 表
rowkey(rowkey在hbase中是按着字典排序的,所以设计rowkey的时候是将部门id放在uuid前面,而不是放在将uuid放在前面,部门级别越高,越会排在hbase数据库的前面)
dept表
rowkey dept列簇 dept-cid列簇
0|1_did cf1:name 名称 cid代表子id name为子id名称
cf1:pid 父id cf2:cid1=name1
cf2:cid2=name2
cf2:cid3=name3
0 代表 顶级部门
1 代表 非顶级部门
0_001 cf1:name=尚学堂教学部 cf2:1_101=尚学堂大数据教学组
0_002 cf1:name=尚学堂财务部
1_101 cf1:name=尚学堂大数据教学组 cf1:pid=0_001
1_102 cf1:name=尚学堂Java教学组
可以有多个rowkey数据!只有一个rowkey字段!
3、微博
添加、删除关注好友 查看粉丝列表
查看所关注的好友的微博 首页
查看自己发布微博
写微博
粉丝关注用户表
rowkey cf1(存放关注列表) cf2(存放粉丝列表)
uid cf1:uid=uname cf2:uid=uname
微博表
rowkey cf1
uid_(long.max-time) cf1:content=微博内容
收微博表
rowkey cf1
uid cf1:id=uid_(long.max-time) version=1000
A B C D
C 粉丝 A B
A 关注 C D
B 关注 C
D 粉丝 A
我们可以设置版本号:1000,当超过版本号的个数时候,Hbase就会删除最旧的数据!或者当我们主动发送删除请求的时候,它也会删除!
但是这两种情况的删除都是在region进行合并的时候删除的!
实际上描述了:多对多的对应关系:两张表(如下:人员-角色表的设计)!
1、人员-角色
1.人员有多个角色,角色优先级
2.角色有多个人员
3.人员 删除添加角色
4.角色 可以添加删除人员
5.人员 角色 删除添加
person表
rowkey CF1 CF2
person_info role
member_id person_info:name role:role_id1 = 优先级num
person_info:age role:role_id2 = 优先级num
001 cf1:name=xiaoming cf2:101=1,cf2:102=0
role表
rowkey CF1 CF2
role_info person
role_id role_info:name person:member_id1 = member_name
role_info:fullname person:member_id2 = member_name
101 cf1:name=服务员 cf2: cf2:001=xiaoming001=xiaoming
102 cf1:name=前台
可以效仿 手机+UUID 生成主键ID;
hbase中没有像关系型数据库中的join语句(连接多张表),但是可以通过二级索引的方式查询!
2、组织架构 部门-子部门 (描述的是一对多表的设计)
1.查询 顶级部门
2.查询 每个部门的所有子部门(指的是二级子部门)
3.部门 添加、删除子部门
4.部门 添加、删除
组织架构:
1.Dept_no 部门编号
2.Dept_name 部门编号
3.Dept_pno 上级部门编号
dept 表
rowkey(rowkey在hbase中是按着字典排序的,所以设计rowkey的时候是将部门id放在uuid前面,而不是放在将uuid放在前面,部门级别越高,越会排在hbase数据库的前面)
dept表
rowkey dept列簇 dept-cid列簇
0|1_did cf1:name 名称 cid代表子id name为子id名称
cf1:pid 父id cf2:cid1=name1
cf2:cid2=name2
cf2:cid3=name3
0 代表 顶级部门
1 代表 非顶级部门
0_001 cf1:name=尚学堂教学部 cf2:1_101=尚学堂大数据教学组
0_002 cf1:name=尚学堂财务部
1_101 cf1:name=尚学堂大数据教学组 cf1:pid=0_001
1_102 cf1:name=尚学堂Java教学组
可以有多个rowkey数据!只有一个rowkey字段!
3、微博
添加、删除关注好友 查看粉丝列表
查看所关注的好友的微博 首页
查看自己发布微博
写微博
粉丝关注用户表
rowkey cf1(存放关注列表) cf2(存放粉丝列表)
uid cf1:uid=uname cf2:uid=uname
微博表
rowkey cf1
uid_(long.max-time) cf1:content=微博内容
收微博表
rowkey cf1
uid cf1:id=uid_(long.max-time) version=1000
A B C D
C 粉丝 A B
A 关注 C D
B 关注 C
D 粉丝 A
我们可以设置版本号:1000,当超过版本号的个数时候,Hbase就会删除最旧的数据!或者当我们主动发送删除请求的时候,它也会删除!
但是这两种情况的删除都是在region进行合并的时候删除的!