I am building a little app for users to create collections. I want to have a rating system in there. And now, since I want to cover all my fields, let’s pretend that I have a lot of visitors. Performance comes into play, especially with rates.
Let’s suppose that I have rates table, and there I have id, game_id, user_id and rate. Data comes simple, for every user there is one entry. Let’s suppose again, that 1000 users will rate one game. And I want to print out average rate on that game subpage (and somewhere else, like on the games list). For now, I have two scenarios to go with:
-
Getting
AVGeach time the game is displayed. -
Creating another column in
games, calledtemprateand store there rate for the game. It would be updated evey time someone votes.
Those two scenarios have obvious flaws. First one is more stressful to my host, since it definietly will consume more power of the machine. Secound is more work while rating (getting all the game data, submitting rate, getting new AVG).
Please advice me, which scenario should I go with? Or maybe you have some other ideas?
I work with PDO and no framework.
So I’ve finally manage to solve this issue. I used file caching based on dumping arrays into files. I just go with something like
if (cache) { $var = cache } else { $var = db }. I am using JG Cache, for now, but propably I’ll write myself something similar soon, but for now – it’s a great solution.