Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Utilisation de SQL Server comme magasin d'images

10 Go n'est pas une énorme quantité de données, vous pouvez donc probablement utiliser la base de données pour la stocker et ne pas avoir de gros problèmes, mais bien sûr, il est préférable d'utiliser le système de fichiers en termes de performances, et en termes de gestion de la sécurité, il est préférable d'utiliser la base de données (sauvegardes et cohérence).

Heureusement, Sql Server 2008 vous permet d'avoir votre gâteau et de le manger aussi, avec :

L'attribut FILESTREAM

Dans SQL Server 2008, vous pouvez appliquer l'attribut FILESTREAM à une colonne varbinary, et SQL Server stocke ensuite les données de cette colonne sur le système de fichiers NTFS local. Le stockage des données sur le système de fichiers apporte deux avantages clés :

  • Les performances correspondent aux performances de streaming du système de fichiers.
  • La taille du BLOB n'est limitée que par la taille du volume du système de fichiers.

Cependant, la colonne peut être gérée comme n'importe quelle autre colonne BLOB dans SQL Server, de sorte que les administrateurs peuvent utiliser les capacités de gestion et de sécurité de SQL Server pour intégrer la gestion des données BLOB au reste des données de la base de données relationnelle, sans avoir à gérer les données du système de fichiers séparément.

La définition des données en tant que colonne FILESTREAM dans SQL Server garantit également la cohérence au niveau des données entre les données relationnelles de la base de données et les données non structurées physiquement stockées sur le système de fichiers. Une colonne FILESTREAM se comporte exactement de la même manière qu'une colonne BLOB, ce qui signifie une intégration complète des opérations de maintenance telles que la sauvegarde et la restauration, une intégration complète avec le modèle de sécurité SQL Server et une prise en charge complète des transactions.

Les développeurs d'applications peuvent travailler avec les données FILESTREAM via l'un des deux modèles de programmation ; ils peuvent utiliser Transact-SQL pour accéder et manipuler les données tout comme les colonnes BLOB standard, ou ils peuvent utiliser les API de streaming Win32 avec la sémantique transactionnelle Transact-SQL pour assurer la cohérence, ce qui signifie qu'ils peuvent utiliser des appels de lecture/écriture Win32 standard vers FILESTREAM BLOBs comme ils le feraient s'ils interagissaient avec des fichiers sur le système de fichiers.

Dans SQL Server 2008, les colonnes FILESTREAM ne peuvent stocker des données que sur des volumes de disque locaux, et certaines fonctionnalités telles que le chiffrement transparent et les paramètres de table ne sont pas prises en charge pour les colonnes FILESTREAM. De plus, vous ne pouvez pas utiliser de tables contenant des colonnes FILESTREAM dans des instantanés de bases de données ou des sessions de mise en miroir de bases de données, bien que l'envoi de journaux soit pris en charge.