3

我们在 Ruby on Rails/postgres 服务器上托管 iPhone 社交游戏的后端。

每个游戏都有 54 个问题,通过数据库中的关系表连接。由于我们目前有大约 200 万个正在进行的游戏,关系表包含大约 100M 行。这会占用大量内存。我们现在正在考虑构建一个算法,该算法使用由 game_id 播种的伪随机序列生成 54 个问题 id。这个想法是产生一个看似随机的问题集合,而不将明确的游戏问题关系保存到数据库中。通过这种方式,我们可以将负载从数据库转移到应用程序服务器。这是一个好主意吗?

伪代码:

r = Random.new(game_id)
q1_id = r.rand(n_questions)
q2_id = r.rand(n_questions)
... 
4

1 回答 1

2

是的,你所需要的只是一个确定性函数,它接受游戏 ID 并产生一个序列。像在 gameId 中添加盐并对结果进行散列这样简单的事情就可以了,然后只需将结果值映射到问题 ID 即可。(看看那种东西的组合学。)

如果您正在处理看起来像由游戏标识符键入的问题标识符列表的东西,并且您需要对答案的持久性支持,那么有比 RDBMS 更好的选择。首先看一下 Redis。

于 2012-11-08T15:09:02.100 回答