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

Optimisations SGBD Discussion :

Des fichiers dans une base de données : un mal absolu ?


Sujet :

Optimisations SGBD

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Février 2008
    Messages : 95
    Points : 74
    Points
    74
    Par défaut Des fichiers dans une base de données : un mal absolu ?
    Bonjour.

    J'ai eu l'occasion de tomber plusieurs fois sur les discussions sur les forums où une personne demande pour une telle ou telle base de données comment qu'elle doit faire pour y stocker les fichiers, et à la fin il y a toujours une ou plusieurs personnes qui répondent qu'on a pas à stocker les fichiers dans une base de données et qu'il y a le FS pour ça.

    Bon, je suis d'accord sur le principe. La base de données n'est pas faite pour y stocker des fichiers. À plus forte raison que c'est souvent plus compliqué, moins performant et souvent plus basique (on va pas implémenter à chaque fois les dates de création/modification, les permissions, etc.).

    En revanche, ce que je ne comprend pas, c'est cette opposition inconditionnelle de certains à l'enregistrement des fichiers dans une base de données. Après tout, il existe de très nombreuses hypothèses où je n'ai pas spécialement besoin de passer par l'FS, mais juste d'avoir tout simplement un espace à stocker des blobs.
    Du type si j'ai une application web qui permet aux utilisateurs d'envoyer des photos et aux autres de les lire indirectement (càd. l'utilisateur peut les lire seulement s'il est inscrit et connecté, il y a des statistiques à chaque téléchargement, etc., donc ça passe forcement par un code behind qui doit lire et envoyer/streamer le fichier). Dans ce cas, passer par FS n'apporte pas énormément d'avantages, si ce n'est une performance meilleure...

    Et aussi, faut dire que la base de données a ses avantages. Unifier toutes les "données dynamiques" (par opposition aux fichiers sources, les binaires, etc.) en un seul endroit permet par exemple de gérer les backups de la base de données uniquement, alors que si j'utilise à la fois la base de données et FS, je dois réfléchir aussi à la gestion des backups des fichiers. D'autre part, la base de données a justement cet avantage de donner une certaine abstraction des mécanismes d'enregistrement des données : à supposer que l'administrateur veut héberger mon application web sur un serveur orienté applications, et la base de données sur un autre orienté données, si l'application utilise l'FS en local, il y aura une perte de performances (et d'une manière générale elle ne sera pas donc adaptée au hardware).

    Donc pourquoi cette opposition catégorique ? Qu'est-ce qui m'échappe ?

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 249
    Points : 1 745
    Points
    1 745
    Par défaut
    Microsoft a réfléchi à tes problèmatiques de flux dynamique et d'organisation de l'information, il en est sorti le filestream sur sql server 2008.

    http://www.microsoft.com/france/visi...f-6481c9a8bcf9

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 716
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 716
    Points : 52 380
    Points
    52 380
    Billets dans le blog
    4
    Par défaut
    relisez ce que j'ai écrit ici : http://sqlpro.developpez.com/cours/stockerimages/ et notamment les commentaires associés. L'article datant d'il y a 10 ans. Depuis la norme de 1999 et certains SGBDR l'ont plus ou moins bien appliqué permet de stocker les fichiers à titre de fichier sous le contrôle du SGBDR. Dans la norme SQL cela s'appelle le DATALINK (exemple DB2) et sous SQL Server c'est le FILESTREAM (équivalent).

    Bien entendu il existe des conditions ou, entre le stockage direct, le stockage à titre de DATALINK et enfin le stockage externe, il est plus ou moins intéressant de recourir !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Février 2008
    Messages : 95
    Points : 74
    Points
    74
    Par défaut
    Citation Envoyé par ylarvor Voir le message
    Microsoft a réfléchi à tes problèmatiques de flux dynamique et d'organisation de l'information, il en est sorti le filestream sur sql server 2008.

    http://www.microsoft.com/france/visi...f-6481c9a8bcf9
    Oui, enfin, je parlais d'SQL pur, sans FILESTREAM.
    En passant, FILESTREAM est recommandé pour les fichiers suffisamment "grands", à savoir, si ma mémoire est bonne, au-delà d'un mégaoctet. Pour l'exemple que j'ai donné, celui des photos des utilisateurs, si on s'attend à des splendides images de 300 Ko en moyenne, je doute que FILESTREAM est la solution la plus adaptée.

    Citation Envoyé par SQLpro Voir le message
    relisez ce que j'ai écrit ici : http://sqlpro.developpez.com/cours/stockerimages/ et notamment les commentaires associés. L'article datant d'il y a 10 ans. Depuis la norme de 1999 et certains SGBDR l'ont plus ou moins bien appliqué permet de stocker les fichiers à titre de fichier sous le contrôle du SGBDR. Dans la norme SQL cela s'appelle le DATALINK (exemple DB2) et sous SQL Server c'est le FILESTREAM (équivalent).

    Bien entendu il existe des conditions ou, entre le stockage direct, le stockage à titre de DATALINK et enfin le stockage externe, il est plus ou moins intéressant de recourir !

    A +
    Oui, merci, ça me semble effectivement répondre à ma question.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] ajouter des fichiers dans une base de données phpmyadmin
    Par turki chaima dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 03/03/2014, 20h36
  2. Réponses: 1
    Dernier message: 04/01/2012, 19h08
  3. Réponses: 1
    Dernier message: 22/07/2010, 14h57
  4. stocker des fichiers dans une base de donnée MYSQL
    Par Invité(e) dans le forum MySQL
    Réponses: 5
    Dernier message: 03/12/2009, 14h10
  5. Interet de mettre des fichiers dans une base de donnée
    Par Oberown dans le forum Décisions SGBD
    Réponses: 7
    Dernier message: 04/07/2005, 12h35

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