需要数据库中的用户对用户数据.如何避免灾难


Need to user-to-user data in the database. How to avoid a disaster?

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

到目前为止我做了什么MySQL数据库中的表如下:

___用户ID1___ |___UserID2___ |___Score___ |___Last_Uopdated___1 | 2 | 45 | 12356867442|1 | 24 | 1235645332

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

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

好吧,问题是我正在计划一个超过50万用户的系统,我担心它会让我的数据库瘫痪,并创建巨大的数据库。因此,对于50万张唱片,我们谈论的是2500亿张唱片…:/

有人知道创建这个功能的其他方法吗?可能是在计算中。。。还是其他方式?

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

如果您有一个按分数对所有用户进行排名的页面,那么如果您使用分页并使用SQL查询的ORDER by和OFFSET,LIMIT功能,而不是一次获取所有用户,则会简单得多。