以下方案可以與StackExchange信譽系統進行比較。我想知道哪個是性能和可伸縮性方面最好的方法。獎勵系統的數據庫設計 - 即時計數或使用單獨/連接表?
場景:我有一個遊戲網站,我需要爲用戶頒發獎章。每枚獎牌明顯具有自己的要求。例如:打一定數量的比賽;連勝;一場比賽的前1分;等等。
選項1:如果在註冊新匹配時滿足條件,則將記錄存儲在連接表(users_medals)上。起初這會更簡單快捷,但是很難追蹤未來的狀況變化(例如:增加某些獎章所需的勝利數量)。
選項2:每次用戶瀏覽用戶配置文件時,不要存儲任何關係並執行所有計算。它可以很容易地處理條件的變化,但用戶和獎牌越多,顯示用戶信息的速度越慢,或用戶名單越差。
選項3:運行sceduled任務,以檢測新的獎牌和堅持的結果。關於選項2的 –
- 關於變化的條件,你真的會拿走贏得的獎牌嗎? – miraculixx
好的,在某些情況下,我將不得不這樣做。改變標準的一個常見原因是平衡事情。如果老用戶有更多的獎牌,這對新用戶來說是不公平的,因爲在新用戶加入之前,要求變得更加容易。但是,是的,它應該至少有一個選擇,以保持舊的獎勵打算。 – rzb