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 :

base MySQL ou fichier?


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    193
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 193
    Par défaut base MySQL ou fichier?
    Vaut-il mieux stocker ses données dans une bdd MySQL ou dans un fichier?

    Je sais que c'est une question qui revient souvent, j'ai fait quelques recherches et ai trouvé quelques infos pas toujours concluantes, et j'aimerais résumer ici le résultat de mes recherches, d'abord parce que ça peut servir à d'autres, ensuite pour que vous me disiez si je me trompe, ou s'il y a des choses à rajouter.


    ------------Avantages des bases MySQL:-----------------

    -Si il y a écriture par plusieurs appels clients différents, il faut préférer MySQL car il est bien plus sûr pour gérer les accès concurrents que les fonctions de lecture et d'ecriture dans des fichiers (même avec flock)

    -Si il y a écriture par un seul appel client (pas d'accès concurrent) MySQL est aussi plus sûr pour ne pas risquer de corrompre les données...??

    -MySQL à des fonctions de recherche (éventuellement croisée) d'information qu'il faudrait s'embêter à recréer si on voulais faire la même chose avec des fichiers


    ------------Avantage des fichiers--------------------------

    -Plus rapide en lecture: j'ai fait une petite expérience chez moi, en mesurant a l'aide de microtime() le temps mis pour sortir la même information d'une bdd MySQL et d'un fichier contenant les mêmes données.
    La lecture du fichier prend un temps moyen de 5,7 ms, et en tirer l'information (avec recherche dans le texte) prend 3,1 ms. Ce qui fait 9 ms pour tirer une seule info.
    La connexion à MySQL et l'ouverture de la bdd prend 1,3 ms et la requête prend 33,2 ms, soit en tout 34,5 ms pour une seule info.
    Donc pour cette requête, chez moi, la lecture dans un fichier est bien plus rapide (et sera encore plus rapide relativement à la bdd si on augmente le nombre de requêtes).
    Pour info la requête était 'SELECT * FROM frr WHERE mot="ornithorhynque"'

    -En écriture je n'ai pas encore essayé



    Voila tout ce que je sais la-dessus, si vous avez des corrections ou compléments...
    Je me demandes aussi ce qui est le plus sur au niveau de la sécurité vis-à-vis du piratage (évidemment si on ne fait pas d'erreurs qui puisse mettre en péril la sécurité)...

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 252
    Par défaut
    Déjà au niveau de la sécurité on ne peut pas accéder à tes données dans une base de données alors que en tapant l'adresse de tes fichiers texte dans la barre d'adresse tout est disponible.

    De plus une base de donnée (relationnelle) permet de gérer facilement les relations (jointure) entre différentes tables grâce aux clé primaires, étrangère etc... ce qui s'avère rapidement nécessaire dans énormément de systèmes d'informations.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    193
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 193
    Par défaut
    Citation Envoyé par numew Voir le message
    Déjà au niveau de la sécurité on ne peut pas accéder à tes données dans une base de données alors que en tapant l'adresse de tes fichiers texte dans la barre d'adresse tout est disponible.
    Bien sur je parle de la sécurité dans le cas ou on n'a fait aucune faute comme de mettre les fichiers dans le répertoire www. Si les fichiers sont dans un répertoire à la racine autre que www on ne peut pas y accéder.


    Citation Envoyé par numew Voir le message
    De plus une base de donnée (relationnelle) permet de gérer facilement les relations (jointure) entre différentes tables grâce aux clé primaires, étrangère etc... ce qui s'avère rapidement nécessaire dans énormément de systèmes d'informations.
    C'est ce que je voulais dire par recherche croisée. J'ai parlé des fonctions de recherche mais je voulais dire aussi fonctions d'écriture.

    On pourrait trouver un autre avantage aux bdd MySQL, qui est que l'opimisation des données pour prendre le moins de place possible (un nombre de 0 à 255 prendra 1 octet dans une bdd et 3 dans un fichier, sauf si on s'embête à coder ce nombre en caractère).


    Mais par exemple dans le cas d'un correcteur d'orthographe, qui nécessite une bdd des mots existants, donc qui n'est utilisée qu'en lecture par les clients et sur laquelle la seule opération qui nous intéresse est la recherche d'un mot (éventuellement la recherche d'un mot et de ses formes équivalentes si on fait un moteur de recherche), le fichier est préférable, non?

  4. #4
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Pour les bdd, il est possible de stocker les données en mémoire pour accélerer la lecture :
    http://dev.mysql.com/doc/refman/5.0/...ge-engine.html

    Pour les fichiers, on peut aussi stocker les données en mémoire avec fread...

  5. #5
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Par défaut
    A mon avis plus la taille de ton fichier de test va augementer, plus la gestion bdd sera performante. As-tu fait la recherche avec l'indexation ou pas?

    Toujours amusant ces tests même si perso, les qualités que tu énonces pour la BDD me paraissent tellement indispensables que je n'envisage même pas autres choses.

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    Bonsoir,
    Personnellement, à moins que l'application n'implique un nombre très important d'accès, la durée d'accès ne constitue pas pour moi un point essentiel. Et quand il y a un nombre important d'accès, ça veut probablement dire du code très lourd derrière, et si on veut absolument optimiser, il y a plus matière à faire dans l'application lui-même que dans les accès disque ou base de données.
    Mon choix se justifie donc pas la commodité de manipulation: une base de données permet quand même d'exprimer des requêtes plutôt compliquées en une ou quelques lignes, permet de gérer des transactions concurrentes simplement, permet de modéliser ses données de façon analogue à leur nature, etc ...
    Ceci dit, quand il s'agit d'un petit fichier, très simple, qui servira exclusivement en lecture, avec des données statiques et non relationnelles, je n'hésite pas à utiliser un xml par exemple.

Discussions similaires

  1. Réponses: 14
    Dernier message: 08/08/2006, 11h31
  2. Réponses: 6
    Dernier message: 30/05/2006, 11h41
  3. Enregistrement fichier excel dans une base mysql (pas csv)
    Par morph12345 dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 27/03/2006, 10h01
  4. PHP5: charger des fichiers textes dans une base MYSQL
    Par koueletbak dans le forum Requêtes
    Réponses: 4
    Dernier message: 23/03/2006, 11h14
  5. Stockage de fichiers dans une base MySQL
    Par FredMines dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 09/01/2006, 22h15

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