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

Langage PHP Discussion :

Stockage en base de variables très nombreuses, sérialisation


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 9
    Points : 6
    Points
    6
    Par défaut Stockage en base de variables très nombreuses, sérialisation
    Bonjour à tous!

    Je travaille actuellement sur un jeu utilisant un coeur php objet et une interface flash. Mon problème est le stockage des très nombreuses variables en base de données. J'ai d'abord essayé de donner un champ pour chaque variable, mais je me retrouvais avec des tables absolument énormes et des requetes du meme type. Puis, j'ai découvert la fonction serialize(), qui transforme un objet en string, et permet de tout stocker dans un seul champ. La vie est d'un coup devenue plus facile.

    Oui mais voilà, cette méthode pose un grave problème de sécurité au moment de l'envoi des variables à flash. J'ai donc entrepris de créer ma propre fonction de sérialisation, qui donnerait un string que flash pourrait comprendre, et qui règlerait mon souci de sécurité. Cependant, mes variables sont des objets qui contiennent eux meme des objets, qui peuvent parfois en contenir aussi... Cela rend les choses terriblement compliquées, et c'est encore pire quand on parle de déserialisation. J'ai pensé à la récursivité pour m'aider, mais j'ignore si php peut la prendre en charge, et de quelle manière. J'ai donc songé à revenir au "un champ : une variable".

    Pourriez vous me conseiller là dessus? Est-ce trop gourmand en ressources que d'utiliser des tables contenant plusieurs dizaines, voir centaines de champs? Devrais-je me relancer dans ma sérialisation? Auriez vous un conseil ou deux pour m'aider dans cette tache?

    Merci d'avance!

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je pense que ce n'est pas tant le nombre de données mais la quantité qui entre en jeux.

  3. #3
    mon_nom_est_personne
    Invité(e)
    Par défaut
    tu as bien fait de quitter l'idee de la serialisation car mettre de tel donne dans un db c'est pas top. demain tu upgrade ton jeu, tu t'aperçoit qu'une valeur dans la chaine serait mieu dans un champ dans une autre table, t'es bon pour tout faire a la main. Ou pire tu dois exraire de ta base cette meme donnée, tu va devoir extraire la chaine, la parser, sotir la valeur : pas top non ?
    donc la structure classique de db pour ce genre de probleme et le suivant :

    on va dire que tu veux mapper tes proprietes a un utilisateur, on va creer 4 tables :
    - utilisateur : la ou tu mettra les info de l'utilisateur qui contient au moins un champ id
    - propriete : tu va stocker ici les données qui precedement était dans ta serialisation mais de maniere unitaire. cette table contiens au moins 3 champs ; propriete id, propriete type id et propriete value.
    - utilisateur propriete mapping : ici tu fait donc la relation entre ton utilisateur et ses n propriete. cette table contient au moins 2 champs ; utilisateur id et propriete id
    - propriete master : ici tu decrit ce qu'est ta propriete . deux champs ; propriete id, propriete description.

    donc pour recuperer les propriete d'un utilisateur, tu feras :
    SELECT prop.propriete_value FROM propriete AS prop JOIN utilisateur_propriete_mapping AS map ON prop.propriete_id = map. propriete_id JOIN utlisateur as us ON us.utilisateur_id = map.utilisateur_id

    apres t'en fait ce que tu veux.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Mon souci est également l'optimisation... Etant donné la quantité importante de propriétés dans l'ensemble de mes objets, la méthode que tu me suggères ne risque-t-elle pas d'etre terriblement gourmande en ressources et en temps?

Discussions similaires

  1. base de données très légère
    Par julio02200 dans le forum Excel
    Réponses: 4
    Dernier message: 28/10/2007, 00h39
  2. Réponses: 14
    Dernier message: 20/09/2006, 21h07
  3. [AJAX] Passage d'une variable très longue avec AJAX
    Par Figaro83 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 18/09/2006, 16h53
  4. Base de donnée très grosse 1 gig et sans raison
    Par kissmytoe dans le forum Access
    Réponses: 5
    Dernier message: 29/03/2006, 07h31
  5. [MySQL] stockage image base de données
    Par digger dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 04/11/2005, 08h49

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