大数据全系列 教程
1869个小节阅读:467.3k
目录
408考研
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
##四、表设计
###4.1 用户角色表设计
1. 分析传统的人员角色表:
tb_user:id,username,nickname,sex,...
tb_role:id,name,desc,....
tb_user_role:user_id,role_id,created_date,created_by
用户表 角色表 用户和角色的关联关系表
关系型数据库中,表设计遵循三范式:
(1)主键 (2)每列不能再分 (3)外键关联
2. hbase的设计:
该方式不好,效率比较低。
为了满足数据的本地化存取,设计冗余字段。
用户表user:
rowkey | base(人员信息) | roles(角色列表) | |||
---|---|---|---|---|---|
base:name | base:age | roles: | roles: | …… | |
uid人员编号 | 人员名称 | 年龄 | 优先级1(名称) | 优先级2 |
对用户基本信息的操作是只需要操作base列族中的信息即可。不涉及到roles列族。比如要查询某用户都有哪些角色,只需要查询roles列族中的信息即可。
角色表:
rowkey | base | users(用户列表) | |||
---|---|---|---|---|---|
base:name | base:desc | users: | users: | …… | |
角色编号 | 角色名称 | 角色描述 | name1 | name2 |
对角色基本信息操作时,只需要操作base列族中的信息即可。如果需要查询某个角色都被哪些用户授予了,只需要查询users列族中的用户列表即可。
用户表记录:
xxxxxxxxxx
1001 base:name=百里守约 base:age=25 roles:101=射手,roles:102=刺客
1002 base:name=凯 base:age=32 roles:103=战士,roles:104=坦克
1003 base:name=亚瑟 base:age=45 roles:104=坦克,roles:103=战士
1004 base:name=李元芳 base:age=32 roles:101=射手 roles:102=刺客
角色表记录:(角色表的用户id列存什么值???)
xxxxxxxxxx
101 base:name=射手 base:desc=输出 users:1001=百里守约,users:1004=李元芳
102 base:name=刺客 base:desc=收割 users:1001=百里守约,users:1004=李元芳
103 base:name=战士 base:desc=近战 users:1002=凯,users:1003=亚瑟
104 base:name=坦克 base:desc=开路 users:1002=凯,users:1003=亚瑟
了解:协处理器 coprocessor,类似于关系型数据库中的触发器trigger
见《HBase权威指南》4.3章节