cevincheung
V2EX  ›  问与答

feed 推拉两种模式各有什么缺点?

  •  
  •   cevincheung · May 31, 2015 · 2399 views
    This topic created in 4095 days ago, the information mentioned may be changed or developed.

    像现在发现的拉(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)
    

    还有其他什么缺点请指出。

    9 replies    2015-05-31 22:34:12 +08:00
    yangqi
        1
    yangqi  
       May 31, 2015
    指定可见或不可见为啥在拉模式无法实现?
    cevincheung
        2
    cevincheung  
    OP
       May 31, 2015
    @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。那怎么覆盖之前的设置?
    9hills
        3
    9hills  
       May 31, 2015
    @cevincheung 客户端实现。

    就是其实客户端是拉了所有的内容,只是展现的时候根据屏蔽表进行单向和双向屏蔽。
    varrily
        4
    varrily  
       May 31, 2015
    @9hills 客户端实现安全么?会不会被绕过。
    cevincheung
        5
    cevincheung  
    OP
       May 31, 2015
    @varrily 这就由牵扯到接口权限鉴权方法了。
    varrily
        6
    varrily  
       May 31, 2015
    pull模式in查询效率不高,尤其关注量大的时候。
    push模式,老数据是个问题,其次粉丝量大的时候,修改删除都需要同步。
    yangqi
        7
    yangqi  
       May 31, 2015
    @cevincheung

    发布的时候指定的很简单啊,在查询中排除掉那几个用户就行了
    权利里设置好的,要看你是怎么存储在表里的,要pull也没什么难度啊
    cevincheung
        8
    cevincheung  
    OP
       May 31, 2015
    @yangqi
    so~ 表要如何设计?在不考虑redis等辅助方案下。
    yangqi
        9
    yangqi  
       May 31, 2015
    @cevincheung 你现在的就可以,不知道你user_relation是怎么设计的
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2794 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 12:21 · PVG 20:21 · LAX 05:21 · JFK 08:21
    ♥ Do have faith in what you're doing.