V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
qwerthhusn
V2EX  ›  程序员

大神求助,统计报表技术选型

  •  
  •   qwerthhusn · 2019-09-05 10:21:17 +08:00 · 1323 次点击
    这是一个创建于 1667 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我们小作坊是做资讯类的服务,技术栈是 java

    现在有几个需求,主要就是针对每一条资讯,需要记录其访问,分享,收藏,评论数量。然后会有各种各样的数据展示。 4 项数据:访问数,分享数,收藏数,评论数

    客户端查看某条资讯时显示这条资讯的各项数据。 机构能够展示总的数据,按年月日统计总数据,根据这四个字段的排序找出各项数据最高的几条资讯 总平台能够展示各个机构的上述数据以及总的汇总。

    请问这种场景,应该大概使用什么方式来做 我们目前想到的,一个就是传统的数据库查询:建一个表有这四个字段和资讯 id,然后不停自增。。然后统计的时候就是各种极其复杂的 SQL。 另外一种就是用 flink,但是鉴于对 flink 不是很熟,只是感觉可以。 或者有什么其他比较适合的方案??

    求大神支招

    3 条回复    2019-09-05 12:52:32 +08:00
    VisionKi
        1
    VisionKi  
       2019-09-05 11:09:29 +08:00
    用 Redis 的 Hash 结构能做。
    例如访问的时候,每访问一次,用 redis 的自增命令:HINCRBY [key] [field] 1,这里[key]是用资讯 ID,[field]是访问量的键。
    然后其他操作类型也这么设置。每天凌晨取出昨天的每个资讯四个值,记录到表里,记录完了删除掉昨天的数据。
    VisionKi
        2
    VisionKi  
       2019-09-05 11:12:22 +08:00
    每个资讯对应 redis 中的结构类似:

    key:资讯 ID

    field:访问量 value:1
    field:分享数 value:1
    field:收藏数 value:1
    field:评论数 value:1
    ma836323493
        3
    ma836323493  
       2019-09-05 12:52:32 +08:00 via Android
    实时更新的放 redis, 非实时的埋点查日志
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3197 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 10:53 · PVG 18:53 · LAX 03:53 · JFK 06:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.