Il y a un très bon article de Microsoft Research appelé To Blob or Not To Blob .
Leur conclusion, après un grand nombre de tests de performance et d'analyses, est la suivante :
-
si vos images ou vos documents ont une taille inférieure à 256 Ko, il est plus efficace de les stocker dans une colonne VARBINARY de la base de données.
-
si vos images ou vos documents font généralement plus de 1 Mo, il est plus efficace de les stocker dans le système de fichiers (et avec l'attribut FILESTREAM de SQL Server 2008, ils sont toujours sous contrôle transactionnel et font partie de la base de données).
-
entre les deux, c'est un peu à pile ou face en fonction de l'utilisation que vous en faites.
Si vous décidez de mettre vos photos dans une table SQL Server, je vous recommande fortement d'utiliser une table séparée pour stocker ces photos - ne stockez pas la photo de l'employé dans la table employee - gardez-les dans une table séparée. De cette façon, la table Employé peut rester mince et efficace, en supposant que vous n'avez pas toujours besoin de sélectionner la photo de l'employé, aussi, dans le cadre de vos requêtes.
Pour les groupes de fichiers, consultez Fichiers et architecture des groupes de fichiers pour une introduction. En gros, vous pouvez soit créer votre base de données avec un groupe de fichiers séparé pour les grandes structures de données dès le début, soit ajouter un groupe de fichiers supplémentaire plus tard. Appelons-le "LARGE_DATA".
Désormais, chaque fois que vous devez créer une nouvelle table qui doit stocker des colonnes VARCHAR(MAX) ou VARBINARY(MAX), vous pouvez spécifier ce groupe de fichiers pour les données volumineuses :
CREATE TABLE dbo.YourTable
(....... define the fields here ......)
ON Data -- the basic "Data" filegroup for the regular data
TEXTIMAGE_ON LARGE_DATA -- the filegroup for large chunks of data
Consultez l'introduction MSDN sur les groupes de fichiers, et jouez avec !
8 votes
Y a-t-il un nouvel ajout pour cette question en 2017 ? Est-ce toujours valable à ce jour ?