开发者学堂课程【HBase入门教程:HBase表设计_3】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/397/detail/5083
HBase表设计_3
内容介绍
一、表设计代码
二、讲解
一、表设计代码
person 表
rowkey |
CF1 |
CF2 |
|
person_info |
role |
member_id |
person_info:name person info:age |
role:role id1=优先级 num role:role id2=优先级 num
|
001 |
cf1:name=xiaoming |
cf2:101=1cf2:102=0 |
role 表
rowkey |
CF1 |
CF2 |
|
role_info |
person |
role_id |
role info:name role info:fullname |
person:member id1 =member name person:member id2=member name |
101 102 |
cf1:name=服务员 cf1:name=前台 |
cf2:001=xiaoming cf2:001=xiaoming |
二、讲解
找到对应的人员 id,查找第二个列族下边所有的列,以及对应的值的优先级,拿到所有用户的角色,只要找到一个用户,找对对应角色 id,角色之间有优先级,通过这个值,标示出优先级。角色有多个人员,查询要比修改多,查询的时候,只要找到对应的角色 id,可以很快的找到这一行,person 这一列族下边的所有的列全部查询出来,对应的人员 id 和名称。不同的人员,人员 id 一定是唯一的,以不同的人员 id 做为你的列,对应的名称,对应的值。
人员
删除添加角色 xaioming 刚开始是101,对应的101把 xiaoming 角色加过去,删除 把小明对应的前台的001删除,可以满足需求
角色
可以添加删除人员 直接跟刚才一样,把人员添加上,给小明前台下添加一个小明,对应的把前台这边加载过来,删除与之类似。
人员 角色
删除添加 向表格里添加角色 删除:小明这一行数据要删除,小明有101,102这两个角色,在101,102对应的角色里的小明删除。对应的人员列表里有小明,对应的找到001,人员表里001 的102删除。
添加,删除操作起来比较麻烦,查询的操作远多于删除,人员-角色这种关系,录入系统的时候,操作的最多,后期修改的可能性会小一些。只有新的人员和新的角色假加入,才会进行操作,大部分时间做的都是一些查询,这样设计完全是可以的。
人员角色的变更和查询,实际场景当中人员和角色实际有多少条,这个问题,设置了一个场景,跳出这个业务场景来考虑,人员和角色这样设计描述了两张表多对多这样一种情况,描述了多对多表的设计,直接将多对多表设计比较复杂。设计表的时候,考虑 HBase 的特点
做范围查询,前缀的过滤,各种过滤器,值的过滤。这个表通过id查询。
两张: ptable (员工) rtable (角色)
ptable:表1
rk:rid cf1:pid=pname cf2:rname=角色名称(人员添加查角色下人员数量)
ptable:表2
rk:pid cf1:rid=优先级 cf2:pname=员工名称。。(人员多少角色可查角色删除等)