可伸缩性 – Web应用程序的可扩展时间衰减

我的目标是生成一个类似于reddit首页的系统.

我有东西,为了简单起见,这些东西都有选票.我生成的最好的系统是使用时间衰减.半衰期为7天,如果今天投票值20分,那么在7天内,它值10分,而在14天内它只值5分.

问题是,虽然这会产生我非常满意的结果,但它不会扩展.每一次投票都要求我有效地重新计算每一次投票的价值.

所以,我想我可能会扭转这个想法.今天的投票值得1分.从现在开始的七天投票值得2分,从现在开始的14天值得4分,依此类推.这很有效,因为对于每次投票,我只需要更新一行.问题是,到今年年底,我需要一个可以容纳巨大数字的数据类型.

所以,我尝试使用线性增长产生可怕的排名.我尝试了多项式增长(自站点启动和提交以来的平方和立方数)并且它产生了稍微好一点的结果.然而,随着我获得稍微好一点的结果,我很快就会重新接近不可维护的数字.

所以,我来找你stackoverflow.谁有天才的想法或链接到如何建模这个系统的想法,以便它适用于Web应用程序.

最佳答案 我一直在尝试这样做.我发现了什么看起来像一个解决方案,但不幸的是,我忘了怎么做数学,所以我很难理解它.

我们的想法是存储您的分数日志并按此排序,因此数字不会溢出.

这个文档描述了数学.
https://docs.google.com/View?id=dg7jwgdn_8cd9bprdr

我发现它的评论在这里:
http://blog.notdot.net/2009/12/Most-popular-metrics-in-App-Engine#comment-25910828

点赞