一、需求分析

1.需要知道哪些用户关注了zhangsan,使这些用户能看到其朋友圈。
2.需要知道zhangsan关注了哪些用户,计算zhangsan能看到的评论。
3.为保证用户体验,zhangsan的朋友圈打开速度要求很快。

二、设计过程

1.由需求1、2构建用户关系表,以用户ID作为行键,每列存储一个该用户关注的人的用户ID。得到表数据如下:
t_user表

行键 列族(cf)
列用户名(n)
12345 zhangsan
12346 lisi
12347 wangwu

t_following表

行键 列族(cf)
列1 列2
12345 12346 12347
12346 12345 12347
12347 12345 12346

2.上述表满足了需求2中查看zhangsan关注了哪些用户,若想知道zhangsan被哪些用户关注,可将表改为“用户ID+被关注人用户ID”作为行键。将t_following表改为如下表:
t_following表

行键 列族(cf)
列用户名(n)
12345_12346 lisi
12345_12347 wangwu
12346_12345 zhangsan
12346_12347 wangwu
12347_12345 zhangsan
12347_12346 lisi

3.通过使用开关标记,即0代表关注,1代表被关注合并关注表与被关注表。

行键12345_0_12346表示zhangsan关注lisi;行键12346_1_12345表示zhangsan被lisi关注,则可将t_following表更新为如下表:

行键 列族(cf)
列用户名(n)
12345_0_12346 lisi
12345_0_12347 wangwu
12345_1_12346 lisi
12345_1_12347 wangwu
12346_0_12345 zhangsan
12346_0_12347 wangwu
12346_1_12345 zhangsan
12346_1_12347 wangwu
12347_0_12345 zhangsan
12347_0_12346 lisi
12347_1_12345 zhangsan
12347_1_12346 lisi

4.朋友圈的业务流程如下:

(1)lisi发布一张朋友圈图片,图片会上传到lisi最近的CDN缓存服务器,图片上传成功后会返回一个引用地址;
(2)lisi的微信客户端将朋友圈内容及图片引用地址发布到微信服务器自己的相册;
(3)发布完成后,如果zhangsan刷新自己的朋友圈时间线,由于zhangsan关注了lisi,因此zhangsan会看到lisi刚刚发布的朋友圈。
根据其业务流程,由“用户ID+时间戳”作为行键,列族cf包括两列,列t用来存储文字内容,列p用来存储图片的CDN缓存地址,得到t_album表如下:

行键 列族(cf)
t p
12345_时间戳1 zhangsan向你问好 http://url1
12346_时间戳2 这是lisi的朋友圈 http://url2
12347_时间戳3 来自wangwu的消息 http://url3

5.为满足需求3,可将业务流程改成如下情况以提高效率。

(1)lisi发布一张朋友圈图片,图片会上传到lisi最近的CDN缓存服务器,图片上传成功后会返回一个引用地址;
(2)lisi的微信客户端将朋友圈内容及图片引用地址发布到微信服务器自己的相册;
(3)通过t_following表查询哪些用户关注了lisi,将lisi发布的朋友圈内容以及图片插入到这些用户的TimeLine;
(4)zhangsan刷新自己的朋友圈,直接从zhangsan的时间线表查询出数据展示。
根据其业务流程,由“用户ID+时间戳+发布者ID”作为行键,列族cf包括3列,列t用来存储文字内容,列p用来存储图片的CDN缓存地址,列u用来存储发布者的个人基本信息,得到t_timeline表如下:

行键 列族(cf)
t p u
12345_时间戳2_12346 这是lisi的朋友圈 http://url2 lisi,http://picurllisi
12345_时间戳3_12347 来自wangwu的消息 http://url3 wangwu,http://picurlwangwu
12346_时间戳1_12345 zhangsan向你问好 http://url1 zhangsan,http://picurlzhangsan
12346_时间戳3_12347 来自wangwu的消息 http://url3 wangwu,http://picurlwangwu
12347_时间戳1_12345 zhangsan向你问好 http://url1 zhangsan,http://picurlzhangsan
12347_时间戳2_12346 这是lisi的朋友圈 http://url2 lisi,http://picurllisi

手写的

7CF0836964455F9ACA3A47963B679C9B.jpg
5BBFEC5969FB55054F397FDC66D5FCBB.jpg