Mailinglisten-Archive |
Hallo Andreas, Am Dienstag, 19. Juni 2007 schrieb Andreas Fay: > ich sitze zur Zeit an der Programmierung eines Online-Spieleportals. > Für die Auswertung der Statistiken stoße ich auf folgendes Problem: > > Der Kunde will für jeden Benutzer Statistiken ausgegeben haben > (Ranglistenplatz usw). Das ist im Prinzip ja auch kein großes > Problem, doch je mehr Benutzer es gibt desto höher wird die > Frequentierung der Datenbank. Ich werde wohl die Statsausgabe nur > einmal pro Tag aktualisieren und zwischenzeitlich cachen, allerdings > stellt sich trotzdem die Frage, ob ich die Stats jeweils on the fly > in der Datenbank aktualisiere oder zusammen mit dem Cache nur einmal > pro Tag. Ich würde meinen einmal pro Tag würde die Datenbank etwas > mehr schonen als on the fly. Dafür hätte ich dann zum > Aktualisierungszeitpunkt extremen Aufwand, gerade auch wenn > Ranglisten neu erstellen werden müssen. Die Rangliste würde ich aber > immer zu einem bestimmten Zeitpuntk neu erstellen lassen, da es mir > on the fly nach zu viel Aufwand ausschaut. > > Was meint ihr zu der Problematik? Wie würdet ihr vorgehen? ehrlich gesagt, sind Deine Angaben etwas zu allgemein, um Dir konkret weiterhelfen zu können. Allgemein betrachtet ist es so, daß Du vermeiden muß, aus einem Problem in ein anderes zu flüchten. Damit meine ich: Bei steigenden Nutzerzahlen mußt Du natürlich auf der einen Seite auf die entstehende Serverlast durch direkte Datenbankzugriffe achten, mußt aber auf der anderen Seite im Auge behalten, daß damit auch steigendende Datenmengen einhergehen, die irgendwann eben nicht mehr beherrschbar sind, vor allem nicht mehr zu einem einmal täglichen Aktualisierungszeitpunkt. Es gilt also, auf der Basis der konkreten Anforderungen den goldenen Mittelweg zu finden, welcher schon bei der Datenbankkonzeption ansetzen muß. Dein Ziel muß es sein, so wenig Daten wie möglich mit so wenig Operationen wie möglich (nach) zu verarbeiten. Der erste Ansatzpunkt ist also Daten- und Aufwandsvermeidung. Danach tendiere ich dazu, im Prinzip immer live zu aktualisieren, aber durch Caching für einen bestimmten Zeitraum lesende Datenbankabfragen zu minimieren. Der nächste Schritt wäre dann schon, die Hardware aufzurüsten. :-) Im Übrigen möchte ich mal einen Spieler sehen, der sich mit Statistiken zufrieden gibt, die nur einmal täglich aktualisiert werden. Der Ansatz ist rein aus dieser Sicht schon nicht praktikabel. :-) Viele Grüße Lutz
php::bar PHP Wiki - Listenarchive