Précédent   Forum des professionnels en informatique > Bases de données > Décisions SGBD
Décisions SGBD Forum de décisions sur le choix en bases de données. Le Comparatif
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/04/2006, 09h35   #1
Membre du Club
 
Inscription : avril 2004
Messages : 77
Détails du profil
Informations personnelles :
Âge : 22

Informations forums :
Inscription : avril 2004
Messages : 77
Points : 50
Points : 50
Envoyer un message via ICQ à Info-Rital Envoyer un message via MSN à Info-Rital Envoyer un message via Yahoo à Info-Rital Envoyer un message via Skype™ à Info-Rital
Par défaut Application web en ligne

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.
Info-Rital est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2006, 18h12   #2
Membre habitué
 
Inscription : février 2006
Messages : 118
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 118
Points : 116
Points : 116
Je ne pense pas être suffisament qualifié pour t'aider mais selon moi tu ne donnes pas assez d'information.

Combien de tables doivent être mises à jour pour enregistrer les données d'un joueur?

Combien de joueurs jouent simultanément sur ce serveur?

Le but j'imagine c'est que toutes les 2 minutes les actions d'un joueur soient mises à jour dans la base de données, il faut donc faire un tournus selon moi. Si t'as 100 joueurs par serveur ça signifie que tu as 100 mises à jour à effectuer en 2 minutes soit 1.2 secondes par mise à jour.

Je pense que si ton système est conçu efficacement tu dois pouvoir réussir mais je n'ai jamais fait ce genre de trucs, ni en Java ni dans tout autres langages.

Cela dit j'ai pas l'impression que PHP ait été destiné à ce genre d'usage côté serveur, java me semble plus adapté.

J'ai pas de temps de traitement très concret à te donner mais un insert/update/delete avec des index ça prend nettement moins d'1 sec même si la table contient des dizaines de milliers de lignes je crois.

Je te conseille de faire des tests de mises à jour directement sur la base de données et tu peux afficher les temps d'exécution.
yizashi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2006, 09h56   #3
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 959
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 959
Points : 17 791
Points : 17 791
Il est impossible de répondre à ta question sans une étude de la structure de la base et des transactions qui doivent opérer.

L'optimum en terme de performances est assuré avec :
- une modélisation NICKEL de la base (respect des formes normales, choix des types appropriés)
- un niveau de traitement proche de l'objet ce qui ne peut se faire qu'exclusivement au travers de procédures stockées et donc aucune requête directe depuis les pages web.

Mon expérience en terme d'audit et de tunning (plus de 10 ans maintenant) montre que les gains possible le sont :
60 à 70 % au niveau du modèle de données
20 % au niveau de la structure de la base (fichiers, index...)
le reste dans l'écriture des requêtes et le paramétrage du serveur.

Il faut donc faire une étude...

A ta dispo.

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h32.


 
 
 
 
Partenaires

Hébergement Web