像现在发现的拉(PULL)虽然在简单的关注条件中有比较好的速度,但是无法处理一些个性化处理。比如微信朋友圈的指定好友可见或不可见如果用拉模式,基本上无法实现。
select f.*,u.nickname,u.avatar from feed f left join user u on f.user_id=u.user_id where f.user_id in (select user_id from user_relation where from_user_id = :user_id ) order by id desc
推(PUSH)抛开冗余数据不谈,倒是可以方便快速的实现个性化的权限设置,但是有个问题没想到怎么处理,就是关注一个“老”用户,对方以前的feed怎么快速的也推到推送表中?.
select f.*,u.username,u.avatar from feed f left join user u on f.user_id=u.user_id where f.feed_id in (select feed_id from user_feed where user_id = :user_id)
还有其他什么缺点请指出。
1
yangqi 2015-05-31 12:28:48 +08:00
指定可见或不可见为啥在拉模式无法实现?
|
2
cevincheung OP @yangqi
如何? 比如像微信朋友圈里的,发布的时候可以指定某些人可见,某些人不可见,可以覆盖或继承在好友权限里的设置(可以设置禁止某些人看我的朋友圈内容) 在拉模式如何取(前提是最简单的SQL没有复杂查询哦~~因为复杂,那就不如推了)? 酱紫?: ```sql select f.*,u.nickname,u.avatar from feed f left join user u on f.user_id=u.user_id where f.user_id in (select user_id from user_relation where from_user_id = :user_id ) and find_in_set(:user_id,xxxxx) and !find_in_set(:user_id,xxxxx) order by id desc ``` 新的问题:用户已经发布过的feed,然后个人中心设置禁止指定用户ID查看我的feed。那怎么覆盖之前的设置? |
3
9hills 2015-05-31 14:50:17 +08:00
|
5
cevincheung OP @varrily 这就由牵扯到接口权限鉴权方法了。
|
6
varrily 2015-05-31 15:06:13 +08:00
pull模式in查询效率不高,尤其关注量大的时候。
push模式,老数据是个问题,其次粉丝量大的时候,修改删除都需要同步。 |
7
yangqi 2015-05-31 22:27:21 +08:00
|
8
cevincheung OP @yangqi
so~ 表要如何设计?在不考虑redis等辅助方案下。 |
9
yangqi 2015-05-31 22:34:12 +08:00
@cevincheung 你现在的就可以,不知道你user_relation是怎么设计的
|