【发布时间】:2021-11-09 04:10:30
【问题描述】:
我的网站存在一些架构问题。
我的网站有投稿,投稿有cmets。
评论有赞成票和反对票。您也可以取消您的赞成票或反对票。和 reddit.com 完全一样
我现在注册投票的方式是用户投票,然后在前端缓存该投票,以便用户刷新页面时显示投票。
但后端发生的所有事情是投票已在comments_votes 表上登记。
每隔 15 分钟,一个计划任务会获取过去 24 小时内创建的每条评论,然后针对每条评论运行一个队列作业。然后,排队的作业通过使用评论 ID 查询所有 comment_votes 来计算评论的总分(赞成票总数减去反对票总数)。
我这样做是因为我不想在每次有新投票时都计算评论的 total_score,因为这会产生大量不必要的查询。
但是,这个解决方案的问题是我也在计算没有收到任何选票的 cmets。
我在想我应该在comments 表中添加一个total_votes 列,并在前10 票或其他内容中使用它,在投票时运行队列作业。但是,如果评论的总投票数超过此值,则它会在计划任务中运行(与所有其他获得 10 多票的 cmets 一起)。
想法?有什么建议吗?
【问题讨论】: