如何跟踪用户习惯和活动? - Django
几个月前,我在做一个项目,需要实现一个奖励系统。这个系统类似于StackOverflow的徽章系统。你可以在这里查看这些徽章。
我觉得我可能没有用最好的方式来实现它,所以我很好奇你们的看法。
有什么好的方法来跟踪用户活动,以便颁发徽章呢?
StackOverflow的系统需要了解很多信息,我也觉得这会涉及到很多数据处理,可能会让事情变得复杂。
我猜测,StackOverflow可能每24小时计算一次或两次徽章,可能会存储日志,或者有一个专门的服务器来处理徽章的计算。
你们有什么想法吗?
2 个回答
0
一般来说,徽章/积分系统可以基于两个方面。
有趣事件的活动记录,这就像是发生过的事情的纸质收据,以便在需要时可以从头开始重新计算。可以简单记录为 (用户ID, 时间戳, 事件ID, 事件详情)。
大多数情况下,你会提前设计好你的积分系统,这样你就知道需要在用户身上保留哪些计数器。现在只需要有一个大记录,里面包含所有的细节。(用户ID, 回复积分, 登录积分, 上次登录时间, 点赞积分等等)
现在你可以在这个模型对象上添加一些简单的方法,让它根据需要管理和存储积分。
2
我觉得这并没有你想的那么复杂。我很怀疑StackOverflow会用某种用户活动记录来计算徽章(虽然从技术上讲,整个数据库确实可以看作是用户活动记录)。当我查看徽章列表时,我没有看到什么是通过运行SQL查询无法实现的。
当然,有些查询可能会比较复杂,可能还会有一些高级的缓存机制,但我看不出有什么理由需要分批计算徽章。