3
我們在Ruby on Rails/postgres服務器上託管iPhone社交遊戲的後端。使用種子隨機序列而不是100M行關係表
每個遊戲有54個問題通過數據庫中的關係表連接。由於我們目前有大約2百萬個正在進行的遊戲,所以關係表包含大約100M行。這消耗了大量的記憶。我們現在考慮構建一個使用由game_id播種的僞隨機序列生成54個問題ID的算法。這個想法是產生一個看似隨機的問題集合,而不會將明確的遊戲問題關係保存到數據庫中。這樣我們可以將加載從數據庫移動到應用程序服務器。這是一個好主意嗎?
僞代碼:
r = Random.new(game_id)
q1_id = r.rand(n_questions)
q2_id = r.rand(n_questions)
...
您可能希望這樣的事情,而不是: 'n_questions.times.to_a.shuffle(隨機:Random.new(game_id))' –
有什麼保證,該隨機算法不會隨着Ruby實現改變(MRI ,jruby,rbx)和ruby版本。 –