V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
LeeReamond
V2EX  ›  问与答

有关 V2EX 的“忽略主题”功能的数据库设计

  •  1
     
  •   LeeReamond · 2021-06-17 23:05:49 +08:00 · 1270 次点击
    这是一个创建于 1288 天前的主题,其中的信息可能已经有所发展或是发生改变。

    @Livid

    用了挺长时间 v2 了一直没用过这个功能,今天点了一下感觉挺好奇怎么实现的。功能上来说应该是按过忽略以后就不会再出现在指定用户的浏览界面里,那是否意味着后端要永久储存每个用户忽略了哪些数据?假设 V2EX 有一百万个主题,是不是理论上每个用户都有存下百万级别的忽略列表的可能,而渲染的时候还要取出来筛选,这不会造成明显压力吗?想问一下是怎么实现的

    12 条回复    2021-06-18 20:29:33 +08:00
    crab
        1
    crab  
       2021-06-17 23:24:16 +08:00
    全渲染在 js 筛选
    blocked = []
    ignored_topics = []
    LeeReamond
        2
    LeeReamond  
    OP
       2021-06-17 23:33:36 +08:00
    @crab 好方案,但是我翻了翻 F12 的 cookies 和 localstorage 没找到类似的键值,这是存哪里的?
    SingeeKing
        3
    SingeeKing  
       2021-06-17 23:48:53 +08:00 via iPhone
    @LeeReamond 看页面源码
    dingwen07
        4
    dingwen07  
       2021-06-17 23:49:11 +08:00
    @crab #1 根据请求 V2EX 页面,忽略主题不是本地 JS 做的
    LeeReamond
        5
    LeeReamond  
    OP
       2021-06-18 00:01:01 +08:00
    @SingeeKing 看了,没有
    3dwelcome
        6
    3dwelcome  
       2021-06-18 00:25:35 +08:00
    "那是否意味着后端要永久储存每个用户忽略了哪些数据?假设 V2EX 有一百万个主题,是不是理论上每个用户都有存下百万级别的忽略列表的可能"

    这就和 google 搜索引擎原理一样,理论上一个关键词能搜出几百万条记录。实际上对用户可见的,也只有那些”热数据“,多翻几页后面就空了。

    假设每个用户都存百万级别的忽略列表,这明显是伪需求。就算存也是一部分冷数据,对于终端每个用户,热数据里最多给筛选几百条的存储空间。

    给全站用户一起建立个几万条热数据过滤池,估计也足够了。
    Jooooooooo
        7
    Jooooooooo  
       2021-06-18 00:34:37 +08:00
    首先你不能忽略几百万个主题

    就像微博你不能关注几百万个人 (要不然时间流咋捞?

    微信不能添加几百万个好友 (要不然朋友圈咋弄
    LeeReamond
        8
    LeeReamond  
    OP
       2021-06-18 00:55:51 +08:00 via Android
    @Jooooooooo 限制数量是一个简单粗暴的方案,我只是想知道 v2 怎么实现的,毕竟这种规模的业务也不算小了,挺有参考意义的
    Elethom
        9
    Elethom  
       2021-06-18 01:26:01 +08:00 via iPhone
    这个的确是前端做的,看仔细一点。
    xiaojj
        10
    xiaojj  
       2021-06-18 10:00:02 +08:00
    前端实现的话,分页就不合理了
    414
        11
    414  
       2021-06-18 10:58:21 +08:00
    这个帖子应该会被很多人点忽略主题😅
    LeeReamond
        12
    LeeReamond  
    OP
       2021-06-18 20:29:33 +08:00
    @Elethom 还有一个问题,前端储存的话是不是表示放弃了多端同步的需求
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4059 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 10:13 · PVG 18:13 · LAX 02:13 · JFK 05:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.