Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
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/01/2012, 14h39   #1
Futur Membre du Club
 
Homme
Étudiant
Inscription : juin 2011
Messages : 135
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2011
Messages : 135
Points : 17
Points : 17
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
MRJBGO est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2012, 15h56   #2
Membre actif
 
Homme
Inscription : avril 2011
Messages : 426
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 426
Points : 171
Points : 171
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...).
heretik25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2012, 16h14   #3
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 727
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 727
Points : 3 294
Points : 3 294
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.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 19h33   #4
Futur Membre du Club
 
Homme
Étudiant
Inscription : juin 2011
Messages : 135
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2011
Messages : 135
Points : 17
Points : 17
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 :
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
MRJBGO est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 13h21   #5
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 727
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 727
Points : 3 294
Points : 3 294
Citation:
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.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 22h11   #6
Futur Membre du Club
 
Homme
Étudiant
Inscription : juin 2011
Messages : 135
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2011
Messages : 135
Points : 17
Points : 17
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 ^^
MRJBGO 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 23h40.


 
 
 
 
Partenaires

Hébergement Web