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

PHP & Base de données Discussion :

Bases de données ..


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 148
    Par défaut Bases de données ..
    Bonjour,

    J'aurais en fait besoin de vos avis ou conseils ...

    J'ai créé un site de statistiques pour un jeu ... qui comporte 30 mondes (2 de plus par mois)...

    Pour l'instant, sur mon PC, je me retrouve avec une base mysql pour chaque monde ...

    Et je voudrais savoir si c'est nécessaire ou alors si je pouvais mettre plusieurs mondes par bases ...

    Ils sont toutes construites de la même façon : players, alliances, islands, historiques, points attaque, points combat, points defense ...

    Merci d'avance

  2. #2
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Par défaut
    Si les bases sont similaires, pourquoi ne pas faire une seule base pour tous les mondes ? Il suffit à mon avis d'ajouter une table "mondes" qui listera les différents mondes avec les champs qui te semble nécessaire (identifiant unique, nom du monde...).

  3. #3
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    Pour des statistiques ça peu être une bonne solution, mais la vrai question à mon sens c'est l'usage de ces stats.

    On peu par exemple créer une base "maitre", avec une table qui stockerait le nom des autres bases "esclaves".
    Ensuite, avoir une notion de bases actives ou non actives.
    Voir même des droits perso sur chaque base "esclaves".

    A chaque nouvelle année, on créer la nouvelle Bdd et nouvelle entrée dans la base "maitre".
    Ensuite on stock les données de chaque années.


    Si l'usage des ces stats sont très "annuelles", c'est à dire que les 2 dernières seraient très consultées et de l'autre, très peu pour les années antérieurs, alors ça peu être une solution.


    Faut voir.

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 148
    Par défaut
    Merci pour vos réponses !

    En fait, les données sont actualisés toutes les heures sauf pour la table "history" (une fois par jour)

    Il faut qu'on trouve la meilleur optimisation possible ... ce ne pense pas que le reste gène ... en fait, c'est LA TABLE HISTORY !

    Je voudrais pouvoir garder toutes les historiques qui sont actualisés tous les jours pas ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    $sql='INSERT INTO player_history (player_id,alliance_id,rank,date,points,villes,player_kills_all,player_kills_att,player_kills_def,rank_pka,rank_pkat,rank_pkd) 
    SELECT
    pka.player_id,
    pp.alliance_id,
    pp.rank,
    NOW(),
    pp.points,
    pp.towns,
    pkay.points,
    pkaw.points,
    pkaz.points,
    pkay.rank,
    pkaw.rank,
    pkaz.rank
    FROM player_kills_all AS pka 
    JOIN player_kills_all AS pkay ON (pka.player_id=pkay.player_id)
    JOIN player_kills_att AS pkaw ON (pka.player_id=pkaw.player_id)
    JOIN player_kills_def AS pkaz ON (pka.player_id=pkaz.player_id)
    JOIN players AS pp ON (pka.player_id=pp.id)';
    mysql_query($sql) or die('non mis à jour'.mysql_error());
    echo 'La maj des tables a réussi'
    Le problème étant que a la fin, ça pèse ^^ et sur 30 mondes, ça devient ingérable ...

    Existe-t-il une solution ? Une façons de les combiner en fichier lisible par des tableau ? CSV ?

    Merci d'avance

  5. #5
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Le problème étant que a la fin, ça pèse ^^ et sur 30 mondes, ça devient ingérable ...
    Je ne parviens pas à comprendre ce que tu fais.
    Je te donne un avis purement personnel sur cette question d'historique/statistique.

    D'abord, ce qui pousse à créer ce genre d'infos, c'est pour une raison de performance, et non juste pour une question pratique.
    Aussi, il faut savoir qu'en créant ainsi ce genre de table, on se retrouve avec des données redondante, chose où normalement on ne pas (surtout) pas faire.
    La chute de performance peu devenir une raison suffisante pour créer quand même des données redondantes.

    Après ça, on créer une table comme je l'ai dis plus haut : avec des données synthétisées.
    Par exemple : Le nombre total de visiteurs dans la journée, le nombre d'éditeurs qui sont venus, le nombre total de nouveaux articles et modifiés, etc, etc ...


    De ton coté, j'ai pas l'impression qu'il s'agit de stats, mais que tu ré-insert les même données qui existeraient déjà. La seule différence c'est que tu ne récupèrerais pas tout, juste certaines colonnes.
    Cependant, le nombre de ligne serait toujours aussi important.
    Je ne vois pas trop où est l'intérêt ?
    Ne faudrait t-il pas créer qu'une seule ligne/heure (soit 24 au maxi par jour), et y mettre que les totaux (faire les calculs au besoin) qui te seraient utiles ?
    Voir le faire 1 seule fois par jour (1 ligne par jour) si au fond on souhaite que des stats de la journée.
    Si c'est par mois alors on lance uniquement 1 fois par mois.
    Si c'est pour chaque année -> 1 fois par an.


    Enfin, c'est une idée.

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 148
    Par défaut
    C'est bien ce que je fais ... mais c'est un ligne PAR joueur ... (18 000 par mondes)

    Il y a 30 mondes ... donc je le répète dans 30 bases différentes et ça pèse une tonne ... voilà le problème ^^

Discussions similaires

  1. Problème Base de données et CRecordSet
    Par LE CHAKAL dans le forum MFC
    Réponses: 3
    Dernier message: 20/08/2002, 11h59
  2. connexion base de donné
    Par saidi dans le forum MFC
    Réponses: 3
    Dernier message: 07/08/2002, 22h22
  3. [Concept] Stabilité d'une base de donnée
    Par lassmust dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 03/07/2002, 16h16
  4. Bases de données
    Par dev dans le forum C++Builder
    Réponses: 4
    Dernier message: 01/07/2002, 22h55
  5. associer une base de données(access) a un dbgrid
    Par ange1708 dans le forum MFC
    Réponses: 3
    Dernier message: 11/06/2002, 12h18

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