2013-08-23 54 views
1

我正在创建当然需要显示结果的网球网站。目前要获得排名,我需要为每个球员总结分数,然后再排序,即使我只需要单个球员的结果。我认为当系统中的玩家数量会增加时,它会非常慢。这就是为什么我需要某种方式来缓存结果,并且只在某些更改时更新它们(或者在结果必须更新时添加某种超时)。创建排名表的正确方法?

另外其他的要求是能够计算总分数,即我将有几个比赛,我需要分别显示所有比赛和每场比赛的比分。

我目前认为的将是单个表来存储所有内容。它的模式是:

ranking_tbl玛

rank_type(可能是竞争,团队,球员或者别的什么)

rank_owner(谁拥有的行列,可球队的球员行列 - 老板将团队)

rank_item(谁是排在队伍的例子是播放器)

得分(实际得分排名)

排名(预缓存级别,只有当添加了新的成绩更新)

排名会在我的系统的重要组成部分,大量使用,所以我需要它尽可能高效。

问题:是否有更好的方法来实现排名比使用我的表格shema?

回答

1

我认为你的模式将起作用。我可以看到3种可能的解决方案,您可以使用它们来获得所需的功能。

  1. 克朗 - 使用cron作业(计划任务)更新每晚的基础上的排名就意味着你可以在非高峰时间进行大量的处理(凌晨2点为例)。您会安排一个脚本,按照分数重新排列玩家,为他们分配一个等级并将其保存到数据库中。
  2. Single Save Recalculation - 如果您一次插入一个玩家的分数,您可能会在保存任何分数后重新计算排名。这将提供出色的最新排名,但在添加大量分数时可能会有一些折中。
  3. 多重保存重新计算 - 将您的分数编译为包含玩家ID和分数的CSV文件。然后你可以编写脚本来解析你的CSV,更新所有玩家的分数。一旦保存得分,您可以重新计算所有球员的等级。

我个人比较喜欢第三种选择,但它在初始设置时会花费更多的时间消耗。

希望这会有所帮助。

+0

谢谢你的时间,系统将从少量的玩家开始,所以第二个选项应该现在做。我会接受你的回答。 – insanebits