Besoin d'aide pour structure d'une BDD MySQL

Besoin d'aide pour structure d'une BDD MySQL - PHP - Programmation

Marsh Posté le 02-03-2012 à 22:27:06    

Plop,
 
Voilà, je vous demande de l'aide car je ne sais pas comment structurer ma table.
 
En gros, voici mon site : www.worldoftop.com (classement des meilleurs joueurs de World of Warcraft, suivant certains critères)
 
J'ai donc ma table "joueurs" avec différents champs (pseudo, guilde, niveau, classe, race, nombre de monture, nombre de quête effectuée...etc).
 
En fait je vais faire un nouveau classement recensent certains hauts faits clés comme par exemple :
 
- Date du passage au niveau max (85 actuel)
- Date de la mort du boss X ou Y ou Z (une 20 aines)
- Nombre de boss tués dans toute l'histoire de WoW
- ...etc Pleins d'autres ^^
 
J'en compte approximativement 50, donc je ne pense pas faire 50 champs différents :/
 
Sachant que la base de données va atteindre les 1.000.000 (max possible à l'heure où j'écris ces lignes : 25.000.000) de joueurs donc joueurs = entrées dans la BDD.
 
Le fonctionnement est assez simple :
 
- ID du haut faut
- Date de sa réalisation
 
Voilà quelqu'un aurait une idée de comment procéder?
 
merci


---------------
“ Un avis d’un homme non avisé ne doit jamais être pris en compte par un homme avisé. ” Jean Plancher, en 1810, « Chez Bonaparte »
Reply

Marsh Posté le 02-03-2012 à 22:27:06   

Reply

Marsh Posté le 02-03-2012 à 23:10:04    

Bonsoir,

 

Peut-être faire une autre table dédiée à ça ?
Appelons cette table "faits", avec les champs suivants :

 

ID | ID_Joueur | type_fait | valeur

 

Où "type_fait" peut être un entier / une énumération. Par exemple si type_fait = 42 --> date du passage au niveau max. Le champ "valeur" correspond, dans cet exemple, à une valeur de type datetime : 2012-03-02 23:05:20.

 

Cette table ressemblerait à :

 

ID    |  ID_Joueur  |  type_fait  |  valeur
------------------------------------------------------
140  |  6421         |  42           | 2012-03-02 23:05:20
141  |  5412         |  12           | 210  (--> nbr de boss tuées par ex)
...

 

Pour les requêtes : SELECT ... FROM joueurs LEFT JOIN faits ON joueurs.ID = faits.ID_Joueur


Message édité par guicara le 02-03-2012 à 23:10:17
Reply

Marsh Posté le 03-03-2012 à 04:07:17    

Une table avec plus de 50*20.000.000 (~ 1 000 000 000 d'entrées) sera assez rapide ?


Message édité par Orission le 03-03-2012 à 04:08:22

---------------
“ Un avis d’un homme non avisé ne doit jamais être pris en compte par un homme avisé. ” Jean Plancher, en 1810, « Chez Bonaparte »
Reply

Marsh Posté le 03-03-2012 à 14:16:19    

T'as 20 millions d'inscrits sur ton site :??:
 
De mémoire, il me semble qu'une table mysql est limité à 50 millions de lignes. Après, pour contourner le pb de perf ou de limite de taille, tu peux utiliser les tables partitionnées.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 03-03-2012 à 15:27:03    

Pas inscrit mais fiche de joueur :) différence !
 
donc la table sera rapide ou pas ?


---------------
“ Un avis d’un homme non avisé ne doit jamais être pris en compte par un homme avisé. ” Jean Plancher, en 1810, « Chez Bonaparte »
Reply

Marsh Posté le 03-03-2012 à 16:28:55    

bien indexée, partitionnée, oui, mais ça dépend aussi du serveur. Si t'es sur du mutualisé, oublie.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 03-03-2012 à 16:47:59    

Ah wai, jusqu'a combien d'entrées en mutu ça passerai ?


---------------
“ Un avis d’un homme non avisé ne doit jamais être pris en compte par un homme avisé. ” Jean Plancher, en 1810, « Chez Bonaparte »
Reply

Marsh Posté le 03-03-2012 à 17:31:14    

Le principe même d'un serveur mutualisé étant le partage des ressources, ce qui est valable à un instant t1 ne l'est pas (voire pas du tout) à un instant t2.


---------------
Traveling through hyperspace ain't like dusting crops, boy!
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed