首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >网站排名最佳数据库设计

网站排名最佳数据库设计
EN

Database Administration用户
提问于 2015-09-04 05:27:57
回答 1查看 1.1K关注 0票数 5

我正在做一个项目,在这个项目中,我需要用两种方式对网站进行排名--全球排名和特定国家的排名。这两种因素都有不同的计算依据。大约有200个国家需要计算排名。

我正在使用MySQL

我有两个问题-

全局秩

每当有新网站加入时-

  • 如果我将网站排名存储在数据库中,我需要重新计算所有网站的排名。这需要在每次添加新网站时进行大量处理。
  • 或者,另一种选择是为每个网站分配一个分数,每当查询进行时,根据分数进行order by并返回其位置来分配排名。这看起来并不是可伸缩的方式,因为order by是昂贵的操作。

国家等级数据库与更新

  • 我应该如何存储每个网站的国家排名?
  • 当一个新的网站被添加时,如何更新所有这些排名?在这里,升水的代价将比全球排名还要高。
  • 我应该在查询时生成on-the-fly,然后缓存结果吗?

像play商店这样的网站是如何显示个性化和基于国家的结果的?

EN

回答 1

Database Administration用户

回答已采纳

发布于 2015-09-04 17:10:42

你会对数十亿的网站进行排名吗?如果是这样的话,那么在飞行和重新计算-都是不可能的。

相反,有一个背景任务来处理这个问题。要显示,请显示表中的信息,可能会在一两天前过期(取决于重新计算所需的时间)。

将排名放在一个单独的表中,只有website_idrank。这将使替换整个表后的recalc原子和快速。也许还有第二个表,包括website_idcountry_code (CHAR(2) CHARACTER SET ascii)和rank

你还没有解释排名是如何计算的,所以我不能给你任何关于如何把它作为背景任务的洞察力。

票数 5
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/114166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档