1

在我的要求中,网站上的每个用户都可以看到附加到其他用户的分数。它是根据他们的配置文件参数计算的。我给别人的分数将是一,但他们给我的分数将是另一个。

到目前为止,我在 MySQL 数据库中所做的表如下所示:

___UserID1___|___UserID2___|___Score___|___Last_Uopdated___
   1 | 2 | 45 | 1235686744
   2 | 1 | 24 | 1235645332

当用户查看某人的页面时,我的分数类正在检查该对的记录是否存在于数据库中,如果不存在,则计算并记录它。这很好用,因为没有人会查看网站上的每个用户页面。

现在我需要拉用户并根据分数对其进行排序。所以我想,我可以创建一个 cronjob,每晚运行它,这样它就会更新数据库中的分数,并为每对用户创建它们。

好吧,问题是我正在为超过 500,000 个用户规划一个系统,我担心它会导致我的数据库崩溃并创建巨大的数据库。因此,对于 500,000 条记录,我们谈论的是 2500 亿条记录……:/

有谁知道创建此功能的任何其他方式?可能是即时计算......或任何其他方式?

4

1 回答 1

0

如果我处于您的情况,我会即时创建计算。我将使用您的函数生成分数,然后将值存储到数据库中。这样,每当任何用户访问任何页面时,分数都会更新。这是一种增量方法,而不是尝试一次在每个可能的组合上运行该函数。再加上没有更多的数据库灾难:)

如果你有一个按分数对所有用户进行排名的页面,如果你使用分页并使用 SQL 查询的 ORDER BY 和 OFFSET、LIMIT 特性而不是一次获取所有用户,那会简单得多。

于 2012-08-26T07:07:54.960 回答