web-dev-qa-db-fra.com

SQL Server: Comment stocker des données binaires (par exemple un fichier Word)?

Je ne suis pas un DBA, je ne connais donc pas les avantages et les inconvénients de l'utilisation de diverses méthodes de stockage de données binaires dans un serveur SQL.

  • varbinary(n) ne stocke que 8 000 octets
  • varbinary(max) stocke 2 Go
  • BLOBs sont destinés aux gros fichiers, mais sont livrés avec une surcharge "administrative" (les fichiers étant référencés uniquement dans la base de données, mais se trouvant en fait sur le disque dur local)

J'ai essentiellement environ 1000 documents (par an) que je souhaite stocker dans une base de données SQL Server 2008 R2 (remplis avec un simple téléchargement de formulaire ASPX, visualisés par une simple Gridview avec téléchargement). Tous les documents seront probablement d'environ 2 Mo à 8 Mo (fichiers Word, Excel). Mon devinez est que je devrais utiliser une table MyDocuments avec la disposition suivante:

MyDocuments 
    Data       varbinary(max)
    Title      varchar(255)
    ModifiedOn datetime()
    ModifiedBy varchar(100)

Suis-je sur la bonne voie avec varbinary(max)? Ou est-ce que je vais dans la mauvaise direction (par exemple, en termes de performances)?

17
Dennis G

Il existe un stockage "FILESTREAM" dans SQL Server 2008. Il permet le stockage et un accès efficace aux données BLOB en utilisant une combinaison de SQL Server 2008 et du système de fichiers NTFS.

Vous pouvez les vérifier:

Stockage FILESTREAM dans SQL Server 2008
Enregistrement et récupération de fichiers à l'aide de FileStream SQL Server 2008

ÉDITER:
Les objets inférieurs à 256 Ko sont mieux stockés dans une base de données tandis que les objets supérieurs à 1 Mo sont mieux stockés dans le système de fichiers.

Performance: Varbinaire vs FILESTREAM

http://www.sqlskills.com/BLOGS/PAUL/post/SQL-Server-2008-FILESTREAM-performance.aspx
vers BLOB ou pas vers BLOB: stockage d'objets volumineux dans une base de données ou un système de fichiers
performances FILESTREAM SQL Server 2008

18
Aseem Gautam