> Tech > Le type FILESTREAM

Le type FILESTREAM

Tech - Par iTPro - Publié le 24 juin 2010
email

Les données simples (ou structurées) telles qu'elles apparaissent dans de nombreuses applications de gestion sont de plus en plus associées à des données non structurées comme des documents qui possèdent un format complexe. En effet, les images, par exemple, sont de plus en plus présentes et permettent une meilleure compréhension

Le type FILESTREAM

des données. Les sons et les vidéos sont également de plus en plus présents.

En plus de ces données multimédia, il existe des documents à associer aux données relationnelles. La gestion de tous ces éléments directement dans la base de données peut poser des problèmes de manipulation des données, mais surtout alourdit considérablement les tâches administratives de gestion de l’espace disque et complique les opérations de sauvegarde, restauration de la base de données.

C’est pour cela que les informations de ce type sont souvent stockées directement sur le système de fichiers. Cette solution offre beaucoup de souplesse quant à la gestion des données non structurées mais par contre les documents ne sont plus liés aux données structurées ce qui pose de nombreux soucis de synchronisation des données. Pour essayer de tirer le meilleur des deux solutions, SQL Server 2008 propose l’attribut FILESTREAM sur les données de types blob(varbinary). Avec cet attribut, le serveur de base de données autorise le stockage des données de type blob sur le système de fichier. Ainsi le volume global de la base de données reste raisonnable mais les données structurées sont bien associées aux données non structurées au niveau même de la base.

L’utilisation de FILESTREAM peut ouvrir une brèche dans la sécurité du serveur, aussi cette option n’est pas disponible par défaut, et il est nécessaire de l’activer par l’intermédiaire de la procédure sp_filestream_configure.
exec sp_filestream_configure
@enable_level=3,@share_name="PartageFileStream"

La commande net share permet de s’assurer que le partage est bien actif. Voir figure 1. Pour permettre à une base d’utiliser ce partage FILESTREAM, il est nécessaire de définir un "groupe de fichiers" spécifique. Ce groupe de fichier peut être défini lors de la création de la base ou bien en ajout sur une base active.

Le groupe FileStream doit référencer un dossier qui existe. L’exemple suivant illustre comment modifier une base existante.
alter database vague2008
 add filegroup GroupeFileStream contains filestream;
go
alter database vague2008
add file(
name=FileStreamDB,
filename=N’c:\demoFS\test’ )
to filegroup GroupeFileStream;

Maintenant que la mise en place est faite il est possible de définir une table avec une colonne de type filestream. Cette opération est illustrée par le script suivant. De même quelques valeurs sont insérées dans la table. Cette insertion permet au passage d’illustrer la nouvelle syntaxe de la commande insert qui permet d’ajouter plusieurs lignes à l’aide d’une seule instruction.
create table contact(
id UNIQUEIDENTIFIER ROWGUIDCOL NOT NULL UNIQUE,
om nvarchar(80),
photo varbinary(max) filestream);
go
insert into contact(id,nom, photo)
values (newid(),’Durand’, cast(‘Photo Durand’ as varbinary(max))),
(newid(),’Dupond’, cast(‘Photo Dupond’ as varbinary(max)));

Il est alors intéressant de visualiser le contenu du dossier référencé par le groupe de fichiers destiné à recevoir les données de type FILESTREAM. Voir figure 2.

Téléchargez gratuitement cette ressource

Endpoint Security : Guide de Mise en œuvre

Endpoint Security : Guide de Mise en œuvre

Détournement d’applications légitimes, élévation de privilèges, logiciels malveillants furtifs : comment les solutions de Endpoint Security permettent elles de faire face aux nouvelles techniques d'attaques complexes ? Découvrez, dans ce Guide Endpoint Security, les perspectives associées à leur mise en œuvre.

Tech - Par iTPro - Publié le 24 juin 2010