我正在做一个项目,在这个项目中,我需要用两种方式对网站进行排名--全球排名和特定国家的排名。这两种因素都有不同的计算依据。大约有200个国家需要计算排名。
我正在使用MySQL
我有两个问题-
每当有新网站加入时-
order by并返回其位置来分配排名。这看起来并不是可伸缩的方式,因为order by是昂贵的操作。on-the-fly,然后缓存结果吗?像play商店这样的网站是如何显示个性化和基于国家的结果的?
发布于 2015-09-04 17:10:42
你会对数十亿的网站进行排名吗?如果是这样的话,那么在飞行和重新计算-都是不可能的。
相反,有一个背景任务来处理这个问题。要显示,请显示表中的信息,可能会在一两天前过期(取决于重新计算所需的时间)。
将排名放在一个单独的表中,只有website_id和rank。这将使替换整个表后的recalc原子和快速。也许还有第二个表,包括website_id、country_code (CHAR(2) CHARACTER SET ascii)和rank。
你还没有解释排名是如何计算的,所以我不能给你任何关于如何把它作为背景任务的洞察力。
https://dba.stackexchange.com/questions/114166
复制相似问题