如何从数据库中预先计算评分系统?

时间:2011-03-21 05:48:04

标签: database scoring

Stackoverflow会在您的用户名旁边显示您的声誉。我想它并没有打到数据库来计算你每个页面渲染的得分(或者它可能吗?)。当有人投票给我时,用户表中会有一个总得分字段会更新吗?

这类系统的最佳实践是什么?如果这是一个显而易见的问题,我很抱歉,我是数据库的新手。

2 个答案:

答案 0 :(得分:0)

我认为这个一般性问题的一般答案是:缓存!缓存的想法可能很简单,但要做到这一点并不总是那么容易。我认为不仅可以存储你的总分。它存储了添加到您的分数的所有“事件”。您的总分是根据这些“事件”计算出来的。所以总得分已经是某种预先计算或缓存的价值。如果您不想为每个请求命中数据库,可以将值缓存在内存中。 Memcached经常用于此类工作,但当然还有其他选择。

答案 1 :(得分:0)

登录时,会从数据库中提取该号码以及所有用户信息。

它可以是用户对象。该用户对象具有属性分数,该分数在您刚刚登录时初始化为数据库中的任何数字。

当您浏览网站并执行操作时,属性会更新,但不会更新数据库。

然后,您可以在对象用户被破坏时(通过注销或关闭浏览器)或在一定时间后更新数据库。