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

steam 创意工坊分时间段的热门度排序是如何实现的

  •  
  •   malahk · 2022-02-16 15:05:09 +08:00 · 929 次点击
    这是一个创建于 1011 天前的主题,其中的信息可能已经有所发展或是发生改变。

    steam 创意工坊的 mod 可以通过:当日热度、周热度、月热度、年热度、总热度等方式排序。总热度没什么可说的,但周热度、月热度、年热度是怎么计算出来的?

    我的猜想:每天凌晨遍历所有 mod 数据库表的条目,然后 count 它 7 天内、30 天内、356 天内的点赞、订阅数,最后综合计算出日热度、周热度、月热度、年热度。

    但这样一来点赞和订阅还要加入时间字段,每次遍历代价似乎也很大,有没有更好的思路呢?

    4 条回复    2022-02-16 21:45:41 +08:00
    helone
        1
    helone  
       2022-02-16 15:55:31 +08:00
    我感觉以 steam 的数据量大概率是数据打点扔给 Spark 、Flink 去处理
    Jooooooooo
        2
    Jooooooooo  
       2022-02-16 15:58:16 +08:00
    半夜定时任务全量跑
    kop1989smurf
        3
    kop1989smurf  
       2022-02-16 16:04:49 +08:00
    为何要遍历所有条目?
    D 日的热度 H 是 D-1~D-7 日的热度之和( or 平均 or 啥)
    D+1 日的热度是 H-( D-7 日的热度)+ D 日的热度之和( or 平均 or 啥)。
    月年同理。

    再绿色一点的话,统计的颗粒度可以变粗。
    比如三天统计一次,七天统计一次。
    malahk
        4
    malahk  
    OP
       2022-02-16 21:45:41 +08:00
    感谢各位回复,看来不借助其他数据处理工具是没有恰当的解决方案了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1617 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 00:01 · PVG 08:01 · LAX 16:01 · JFK 19:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.