· #表名:quanzi_album_{userId}{ "_id":"5fae539d7e52992e78a3b684",#主键id "publishId":"5fae53d17e52992e78a3db61", #发布id "created":1568012791171 #发布时间}
时间线:所谓“刷朋友圈”,就是刷时间线,就是一个用户所有的朋友的发布内容。· #表名:quanzi_time_line_{userId}{ "_id":"5fae539b7e52992e78a3b4ae",#主键id, "userId":2, #好友id "publishId":"5fae53d17e52992e78a3db61", #发布id "date":1568012791171 #发布时间}
评论:针对某个具体发布的朋友评论和点赞操作。· #表名:quanzi_comment{ "_id":"5fae539d7e52992e78a3b648", #主键id "publishId":"5fae53d17e52992e78a3db61", #发布id "commentType":1, #评论类型,1-点赞,2-评论,3-喜欢 "content":"给力!", #评论内容 "userId":2, #评论人 "publishUserId":9, #发布动态的人的id "isParent":false, #是否为父节点,默认是否 "parentId":1001, #父节点id "created":1568012791171}
圈子读写流程
流程说明
· 用户发布动态,动态中一般包含了图片和文字,图片上传到阿里云,上传成功后拿到图片地址,将文字和图片地址进行持久化存储
· 首先,需要将动态数据写入到发布表中,其次,再写入到自己的相册表中,需要注意的是,相册表中只包含了发布id,不会冗余存储发布数据
· 最后,需要将发布数据异步的写入到好友的时间线表中,之所以考虑异步操作,是因为希望发布能够尽快给用户反馈,发布成功
· 好友刷朋友圈时,实际上只需要查询自己的时间线表即可,这样最大限度的提升了查询速度,再配合redis的缓存,那速度将是飞快的
· 用户在对动态内容进行点赞、喜欢、评论操作时,只需要写入到评论表即可,该表中也是只会记录发布id,并不会冗余存储发布数据
查看动态 查询好友的动态流程· 查询时间线表
· 获取时间线列表中的发布id的列表
· 根据动态id查询动态列表