Stackoverflow在您的用户名旁显示您的声望。我想它不会触及数据库来计算每个页面呈现的分数(或者它可能是?)。用户表中的总分数字段是否会在有人赞助我时得到更新?如何从数据库中预先计算评分系统?
什么是这些类型的系统的最佳做法?我很抱歉,如果这是一个明显的问题,我是数据库的新手。
Stackoverflow在您的用户名旁显示您的声望。我想它不会触及数据库来计算每个页面呈现的分数(或者它可能是?)。用户表中的总分数字段是否会在有人赞助我时得到更新?如何从数据库中预先计算评分系统?
什么是这些类型的系统的最佳做法?我很抱歉,如果这是一个明显的问题,我是数据库的新手。
当您登录,数量从数据库中与您的所有用户的信息拖着走。
它可以是一个用户对象。用户对象有一个属性评分的初始化无论这个数字是在数据库中,当你刚登录。
当你去的网站和周围做的东西,财产被更新,但不是数据库。
当对象用户被破坏然后,可以仅一次更新数据库(通过注销或关闭浏览器)或一定量的时间之后。
该属性在内存中的缓存中更新,并推送或排队到持久层(本例中为db)......您不能依赖用户注销或关闭浏览器来更新您的实体。 – newbie 2012-06-22 20:51:47
我觉得对于这样一个一般性的问题,一般的回答是:缓存!缓存的想法可能很简单,但要做到这一点并不容易。我会假设,所以不仅会存储您的总分数。它存储所有添加到您的分数的“事件”。你的总分是从这些“事件”中计算出来的。所以总分已经是某种预先计算或缓存的价值。如果您不想为每个请求命中数据库,则可以将这些值缓存在内存中。 Memcached经常用于这样的工作,但当然还有其他选择。
+1。很长时间以来一直向我自己提出这个问题。 – Arman 2013-09-06 04:45:38