IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Décisions SGBD Discussion :

Application web en ligne


Sujet :

Décisions SGBD

  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 77
    Points : 463
    Points
    463
    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.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 124
    Points : 159
    Points
    159
    Par défaut
    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.

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 763
    Points : 52 554
    Points
    52 554
    Billets dans le blog
    5
    Par défaut
    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
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. Réponses: 0
    Dernier message: 24/10/2013, 22h23
  2. Outil d'administration d'application WEB en ligne
    Par keryss dans le forum ASP.NET
    Réponses: 5
    Dernier message: 22/02/2011, 16h50
  3. [c#]compiler une application web en ligne de commande
    Par chorokari dans le forum ASP.NET
    Réponses: 1
    Dernier message: 23/01/2007, 09h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo