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

Administration SQL Server Discussion :

Stocker des fichiers en base de données utiliser filestream [2014]


Sujet :

Administration SQL Server

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut Stocker des fichiers en base de données utiliser filestream
    Bonjour,
    Je n'arrive pas à trouver des informations récentes sur la meilleure façon de stocker des fichiers en base de données.
    J'ai trouvé qu'il y avait plusieurs solutions selon la taille des données

    Malheureusement les articles que je trouve ont généralement au mieux 5 ans, et en 5 ans les moteurs de base de données font des progrès ! Certains articles parlent encore de type Image ou Text!
    Est-ce que l'utilisation de filestream pour des fichiers de 1 à 5 Mo est judicieuse ou est-ce qu'il vaut mieux passer par le stockage d'un fichier physiquement, avec stockage en base de données du chemin du fichier.

    J'ai quelques contraintes :
    • L'enregistrement en base de données se fera avec une application Web en ASP.net MVC utilisant entity framework (mais je peux faire un enregistrement en ADO.net s'il le faut)
    • Nous faisons régulièrement des backups restore de la base de données pour rafraîchir les environnements de PRE Production, qualification, et je crains que le stockage sur un chemin données complique le restore
    • Pour l'instant le nombre de fichier sera faible (peut -être une centaine) mais une fois qu'on aura donné cette possibilité à un endroit, les utilisateurs la voudront peut-être ailleurs.


    Merci de votre aide
    Soazig

  2. #2
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 170
    Points : 7 422
    Points
    7 422
    Billets dans le blog
    1
    Par défaut
    Le type "image" a évolué vers le type "varbinary(max)".
    Les deux syntaxes sont plus ou moins synonymes (tout du moins, on peut remplacer le type image par varbinary(max) sans risque.

    Ensuite, FileStream est une option qu'on ajoute à une colonne de type varbinary(max).
    Cette option nécessite l'activation de la fonctionalité au niveau du moteur SQL.

    Si filestream est disponible, il faut absolument l'utiliser : c'est infiniment plus performant d'utiliser ce mécanisme plutôt que de stocker les données directement dans la table.

    Depuis je ne sais quelle version, le mécanisme filetable a aussi fait son apparition.
    C'est une couche supplémentaire à filestream, qui permet d'exposer aux applications les données filestream directement à travers le système de fichier.

    Cela permet d'alléger le code de l'application cliente en accédant simplement à un fichier sur le disque, plutôt que de devoir faire une requête SQL, charger le varbinary dans un buffer en mémoire, puis envoyer ces données à l'application client (avec parfois la nécessité de passer par un fichier temporaire sur le disque !)

    https://docs.microsoft.com/en-us/sql...ql-server-2017

  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 897
    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 897
    Points : 53 135
    Points
    53 135
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par soazig Voir le message
    Bonjour,
    Je n'arrive pas à trouver des informations récentes sur la meilleure façon de stocker des fichiers en base de données.
    J'ai trouvé qu'il y avait plusieurs solutions selon la taille des données

    Malheureusement les articles que je trouve ont généralement au mieux 5 ans, et en 5 ans les moteurs de base de données font des progrès ! Certains articles parlent encore de type Image ou Text!
    Est-ce que l'utilisation de filestream pour des fichiers de 1 à 5 Mo est judicieuse ou est-ce qu'il vaut mieux passer par le stockage d'un fichier physiquement, avec stockage en base de données du chemin du fichier.
    Stocker des fichiers relatif à des données de la base hors de la base est le meilleur moyen de rendre le système non intègre... Et donc de ne plus pouvoir recoller les morceaux. par exemple vous n'arriverez jamais à synchroniser les sauvegardes de votre bases avec celle de vos fichiers.
    Il faut donc le faire :
    • en VARBINARY(max) donc dans une table
    • ou bien en dehors des tables via le FILETREAM ou le FileTable.


    Les tests montrent qu'en dessous de 2 Mo de fichier, mieux vaut choisir le table et qu'au dessus, mieux vaut choisir le FILESTREAM (Filetable n'étant qu'une extension particulière de FILESTREAM).


    J'ai quelques contraintes :

    - L'enregistrement en base de données se fera avec une application Web en ASP.net MVC utilisant entity framework (mais je peux faire un enregistrement en ADO.net s'il le faut)
    pas de souci que ce soitr directement dans la table ou en FILESTREAM

    - Nous faisons régulièrement des backups restore de la base de données pour rafraîchir les environnements de PRE Production, qualification, et je crains que le stockage sur un chemin données complique le restore
    Oui, avec le chemin vous aurez des soucis !!!! mais aucun avec VARBINARY(max) ou FILESTREAM

    - Pour l'instant le nombre de fichier sera faible (peut -être une centaine) mais une fois qu'on aura donné cette possibilité à un endroit, les utilisateurs la voudront peut-être ailleurs.


    Merci de votre aide
    Soazig
    A +

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Ok super merci.
    Je propose donc cette option pour mon chiffrage, et je reviendrai peut-être vers vous s'il est accepté et que je ne m'en sors pas.
    Encore merci
    Soazig

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

Discussions similaires

  1. taille des fichiers de base de données
    Par lao.patrick dans le forum Langage
    Réponses: 1
    Dernier message: 22/09/2010, 08h23
  2. Stockage des fichier Dans base de donnée sql
    Par Meryjean dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 29/08/2010, 12h23
  3. Réponses: 3
    Dernier message: 19/02/2009, 23h15
  4. [Système] gestion des fichiers et base de données
    Par noobspower dans le forum Langage
    Réponses: 3
    Dernier message: 26/02/2007, 10h42
  5. [Conception] Lier des fichiers à une base de données
    Par sandytarit dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 29/06/2006, 20h25

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