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 25/05/2011, 17h28   #1
Membre habitué
 
Étudiant
Inscription : avril 2009
Messages : 144
Détails du profil
Informations personnelles :
Âge : 23
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2009
Messages : 144
Points : 115
Points : 115
Par défaut Maniere de stocker des paragraphes de texte

Bonjour à tous !

Je suis face à un dilemme. Je fais un projet (personnel) de création de rapports en ligne. Quelques mots sur le pourquoi du comment : Tout simplement car il faut que je me remette au PHP, et je travaille avec des gens qui sont au Mexique, et un peu en Europe centrale. Avoir des rapports à rédiger ( textuellement, pas de mise en page ) avec des gens qui ne sont pas là est assez difficile à faire. On a jamais la bonne version du rapport, on bosse sur les mêmes parties du truc, bref !

Mon problème est le suivant. Je ne sais quelle décision prendre. Pour stocker une paragraphe d'un rapport rédigé en ligne, vaut-il mieux :

- stocker le paragraphe dans un champs texte immense
- stocker le paragraphe dans un fichier qu'on upload sur la base mysql
- stocker le paragraphe dans un fichier texte sur serveur, et stocker dans la base le chemin vers le fichier

??? Quels seraient les avantages/inconvénients de chaque méthode, d'apres vous ? J'imagine qu'il n'existe pas une seule bonne méthode mais je souhaite en savoir un peu plus sur chacune, si quelqu'un a déjà été confronté à ce choix. Et si d'autres options sont possibles, je ne sais pas, je ne pense pas à tout

Merci à vous tous !
__________________
La politesse n'a jamais tué personne
Le langage SMS c'est le mal !
Pensez au tag
ptilemare est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 18h32   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
Je vais essayer d'apporter des éléments de réponse:

- stocker le paragraphe dans un champs texte immense

Avantages: la recherche fulltext, sauvegarde du modèle facilité
Inconvénients: charge mémoire sur la base (seulement si tes paragraphes sont très volumineux)

- stocker le paragraphe dans un fichier qu'on upload sur la base mysql

Avantages: Nul
Inconvénient: pas de recherche possible, charge inutile des transferts entre PHP et MySQL

- stocker le paragraphe dans un fichier texte sur serveur, et stocker dans la base le chemin vers le fichier

Avantage: aucune charge sur la base
Inconvénient: difficulté de lier les entrée BDD à leurs ressources sur le serveur, impossible d'exporter la base sans répliquer également les fichiers manuellement


Si ce que tu as à persister constitue des données plain/text, ce n'est pas vraiment la peine de se poser la question: mets des champs TEXT dans les tables.
Pour ton problème de parallélisme des édition, tu peux utiliser les verrous fichiers (floc) ou les verrous sur les tables pour empêcher deux utilisateurs d'être en collision sur une ressource.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 18h55   #3
Membre habitué
 
Étudiant
Inscription : avril 2009
Messages : 144
Détails du profil
Informations personnelles :
Âge : 23
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2009
Messages : 144
Points : 115
Points : 115
Merci pour les explications. Si d'autres personnes souhaitent compléter ceci, je ne vais pas mettre le tag résolu de suite, histoire de voir des avis différents !

En ce qui concerne ces paragraphes, leur taille ira d'une trentaine de mots à quelques centaines. Rien d'excessif, c'est pas pour rédiger des thèses complètes. Mais ça vaut quand même le coup de se poser la question du stockage. Au niveau utilisateurs, je prévois pour une dizaine en simultané, rien de bien excessif non plus. Je referai une étude si je souhaite vraiment le rendre plus volumineux.

Je n'avais pas du tout pensé au verrouillage des tables ! Juste à un champ booléen ( "blocage" ) qui serait modifié à chaque fois qu'un utilisateur souhaiterait modifier un paragraphe en fait, et qu'on testerait pour permettre ou non une édition. Je vais me pencher sur les verrous
__________________
La politesse n'a jamais tué personne
Le langage SMS c'est le mal !
Pensez au tag
ptilemare est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 15h45   #4
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 001
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 001
Points : 18 262
Points : 18 262
Envoyer un message via MSN à CinePhil
Effectivement, pour des paragraphes ne dépassant pas quelques centaines de mots, inutile de s'encombrer de fichiers en parallèle à la BDD.
Par contre, si ces paragraphes sont nombreux, pour améliorer les performances, il peut être judicieux d'isoler ces paragraphes dans une table séparée des autres caractéristiques des paragraphes.

MCD :
paragraphe -1,1----Contenir----(1,1)- Texte_paragraphe

Tables :
paragraphe (prg_id, prg_titre, prg_version, prg_id_etat...)
texte_paragraphe (tpg_id_paragraphe, tpg_texte)

Ainsi, on n'interroge la table texte_paragraphe que lorsqu'on veut vraiment récupérer le texte du paragraphe et on ne se trimballe pas le gros volume de données représenté par ces textes lorsqu'on veut seulement afficher la liste des paragraphe, gérer leur version, leur validation...

Mais ce ne sera sensible qu'à partir d'un assez gros volume de données.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 27/05/2011, 23h01   #5
Membre habitué
 
Étudiant
Inscription : avril 2009
Messages : 144
Détails du profil
Informations personnelles :
Âge : 23
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2009
Messages : 144
Points : 115
Points : 115
Intéressant ! Merci pour l'avis !

Cependant, si je ne souhaite pas me trimballer le volume de données au niveau requêtes, n'ai-je pas juste à éviter des requêtes de type SELECT * pour ne pas avoir à trimballer mon paragraphe mais seulement les champs de la table paragraphe qui m'intéressent ?

Je pense en effet qu'il y aura de nombreux paragraphes.
__________________
La politesse n'a jamais tué personne
Le langage SMS c'est le mal !
Pensez au tag
ptilemare est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/05/2011, 14h19   #6
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
BOjnour,
a priori, tu as juste besoin d'un champ dans ta BD où stocker les paragraphes :

- CHAR : une chaîne de caractères de taille fixée (de 1 à 255 caractères)
- VARCHAR : une chaîne de caractères de taille variable (de 1 à 255 caractères)
- TINYTEXT ou TINYBLOB : un objet BLOB ou TEXT ayant une longueur maximale de 255 caractères
- TEXT ou BLOB : un objet BLOB ou TEXT ayant une longueur maximale de 65 535 caractères
- MEDIUMTEXT ou MEDIUMBLOB : un objet BLOB ou TEXT ayant une longueur maximale de 16 777 215 caractères
- LONGTEXT ou LONGBLOB : un objet BLOB ou TEXT ayant une longueur maximale de 4 294 967 295 caractères
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/05/2011, 14h39   #7
Membre habitué
 
Étudiant
Inscription : avril 2009
Messages : 144
Détails du profil
Informations personnelles :
Âge : 23
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2009
Messages : 144
Points : 115
Points : 115
Merci pour la description des types
Cependant, pour la structure de la base, dois-je faire comme Cinephil a indiqué ?
Dois-je séparer les informations sur le paragraphe du paragraphe lui même ou bien éviter les requêtes de type SELECT * suffirait à éviter le transit ?
__________________
La politesse n'a jamais tué personne
Le langage SMS c'est le mal !
Pensez au tag
ptilemare 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 15h39.


 
 
 
 
Partenaires

Hébergement Web