开发者学堂课程【HBase 入门教程:HBase 表设计_6】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/397/detail/5086
HBase 表设计_6
一、同学作业点评与修改
rowkey
(uuid)_(注册的时间)_(是否绑定手机,用0和1区别)_(绑定的手机号)
分析:在微博内,基本信息最好使用一个单独的表用来维护,所以不应该放到 rowkey 内。
列族:列名
(cf1为用户基本信息) |
(cf2为关注的用户) |
(cf3为发布的微博) |
Cf1:name |
cf2:userId= |
cf3:messageId |
Cf1:age |
|
|
有一个需求,查看关注的好友比较方便,列族里存放着所有关注的好友,但是查看粉丝列表并不是特别方便。此时加一个列族存放粉丝列表会更好。所以应该添加一张粉丝关注用户表,如下:
粉丝关注用户表
rowkey |
cf1(存放关注列表) |
cf2(存放粉丝列表) |
uid |
cf1:uid=uname |
cf2:uid=uname |
分析:如果想要查关注列表,那么首先登录之后,用户id一定清楚,cf1下的所有列都查出来,就是关注列表,粉丝列表也是同理。
发布的微博表
Rowkey |
列族(列名) |
(uuid)_(发布的时间) |
(cf1为发布用户的 Id) Cf1:userId |
以用户 id 加上发布的时间作为 rowkey,有一个列族 cf1,查询微博的时候做一个关联
微博表
rowkey |
cf1 |
|
uid_(long.max-time) |
cf1:content=微博内容 |
version=1000 |
发布微博和查看自己发布的微博:
查看微博的特点是需要按照时间做一个降序。
Cf1可以存放微博内容,cf1:content 的值是微博内容,一个用户可以发很多很多微博 version 版本数,微博数量很多
version 可以设很大,版本数设置为1000,这样查询的时候就可以把所有的拿出来,uid_(long.max-time)有两种设计第一种把时间加到 rowkey 里。第二种通过版本来设置,这个微博表是存放一个用户发布的微博,按照最新发布的时间排序,查询某个用户或者自己发布的微博,按照时间做了一个降序,使用 version 更合适。
查看自己发布的微博:
某一个用户的微博,如果达到降序的效果,需要查看关注好友发布的微博,其实就是登录微博之后,相当于查看首页,所以此时需要把所有关注的微博按照时间降序罗列出来。