Bonjour,
Je ne savais pas trop où mettre ce message alors je l'ai mis ici car la question tourne pas mal autour du SGBD.
Je développe actuellement une application web, et plus précisement un jeu en ligne.
Pour cela, j'utilise les technologies suivantes :
Apache/PHP5 côté serveur
XHTML/JavaScript côté client
PostGres 8 pour la base de donnée
Mais je suis actuellement confronté à un problème. Dans ce jeu, je dois mettre à jour les ressources des joueurs, les déplacements, les constructions de bâtiments, les combats...
Pour l'instant je fais tout ça côté PHP avec le système suivant :
à chaque page, je regarde dans la base de donnée les différents élements à mettre à jour, je récupère la date de la dernière mise à jours de l'élement.
Pour les ressources, je soustrais cette date de mise à jours à la date actuelle, je multiplie par un coefficient de production et j'ajoute les ressources gagnées dans la base de donnée.
Pour les autres actions, je récupère la date de fin. SI elle est inférieur à la date actuelle, alors l'action est terminé et j'effectue les traitements nécessaires.
Tous ces controles nécessitent beaucoup de ressources et sont éxecutés à chaque page par PHP.
Je pense qu'il ne s'agisse pas de la meilleur solution, alors on a pensé à un système de démon.
Une application (en java), s'occuperait de mettre à jour la base de donnée complète à intervalles réguliers. Cependant, il ne faut pas que ces intervalles excedent deux minutes.
Le problème est qu'on a des tables relativement grande en lignes (généralement plusieurs dizaines de milliers d'enregistrements), mais pas trop en colonne (souvent entre 3 et 5 au maximum et ce sont des valeurs numériques, souvent entières).
Donc il faut itérer sur les 10aine de milliers d'enregistrement, faire les controles et les traitements adéquats, tout ça en moins d'une minute.
Est-ce possible ? Je n'ai pas trop d'idée d'ordre de grandeur pour les temps de traitements par les bases de donnnées.
Que pensez-vous de ces solutions ? En avez-vous une autre ?
Merci d'avance pour vos réponses.
PS : j'ai oublié de préciser. En principe la base de donnée tournera sur un serveur bi-xeon et le serveur web (apache + PHP5) sur un second serveur bi-xeon.
Mais il y a de fortes chances qu'on commence avec seulement un ou deux serveurs athlons.
Partager