Date de publication initiale de l’article : jeudi 21 avril 2011

Auteur : Bill Baer, Responsable en chef de produit technique, Microsoft Corporation - SharePoint

FILESTREAM est une nouvelle fonctionnalité de SQL Server 2008 qui autorise le stockage de données non structurées dans un système de fichiers NTFS. FILESTREAM (local ou distant) est pris en charge dans SharePoint 2010 comme mécanisme de réduction des dépenses de capital grâce à l’activation du stockage de grandes données binaires non structurées sur des unités de stockage de contenu ordinaires ou adressables.

Données non structurées
Les données non structurées font référence à des informations qui n’adhèrent à aucun modèle défini ou ne s’adaptent pas correctement aux tables relationnelles. Dans SharePoint, les données non structurées peuvent faire référence à des formats de fichiers de documents Microsoft Office ou à des types de fichiers audio, vidéo ou associés.
 
Données structurées
Les données structurées dans SharePoint font référence aux données BLOB ou métadonnées associées à leurs données non structurées correspondantes. Les bases de données relationnelles sont souvent citées en guise d’exemples de données structurées.
 
SQL Server et stockage de données non structurées
Il existe trois (3) approches au stockage de données non structurées avec SQL Server, à savoir RBS, SQL BLOB et FILESTREAM :
  • Remote BLOB Storage (RBS), selon lequel SharePoint repose sur une nouvelle couche dans SQL Server pour lire ou mettre à jour des données BLOB stockées en dehors de la base de données dans des magasins BLOB distincts (système de fichiers ou magasins BLOB dédiés).
  • SQL BLOB, qui fait référence au stockage BLOB traditionnel avec SharePoint. Les données BLOB sont stockées avec les métadonnées structurées dans la base de données de contenu.
  • FILESTREAM
 
Vue d’ensemble de FILESTREAM
FILESTREAM est implémenté sur le type de données varbinary(max) qui indique au moteur de base de données de stocker les données non structurées dans le système de fichiers par le biais d’un groupe de fichiers FILESTREAM qui contient des répertoires de système de fichiers au lieu des fichiers proprement dits, également connus sous le nom de conteneurs de données. Les conteneurs de données sont l’interface entre le stockage de moteur de base de données et le stockage de système de fichiers. varbinary est la désignation du type de données binaire pour les grands objets binaires stockés dans les bases de données de contenu SharePoint 2010. Il fait référence aux données binaires de longueur variable. (MAX) fait référence à une valeur qui indique que la taille de stockage maximale est 2^31-1 octets, soit 2 Go. Le stockage RBS ne fournit pas de mécanisme permettant de dépasser la limite de taille de fichier de 2 Go imposée par SharePoint.
 
Dans SharePoint 2010, les données BLOB distantes sont référencées par un identificateur unique dans les bases de données de contenu configurées pour RBS (voir l’illustration).
 
 
 

 
 
FILESTREAM offre plusieurs avantages en termes de performances : 1) FILESTREAM utilise le cache système NT pour la mise en cache des données de fichiers, ce qui permet de réduire l’impact des données FILESTREAM sur les performances du moteur de base de données et 2) le pool de tampons de SQL Server n’étant pas utilisé, la mémoire est disponible pour le traitement des requêtes.
 
FILESTREAM est extrêmement utile dans les scénarios dans lesquels SharePoint sert à stocker de grandes données BLOB telles que des fichiers vidéos et qui tireront parti de données FILESTREAM ou BLOB dépassant 1 Mo.
 
Considérations spéciales
 
FILESTREAM et gestion de la continuité des activités professionnelles
 
La mise en miroir de bases de données ne prend pas en charge FILESTREAM car un groupe de fichiers FILESTREAM ne peut pas être créé sur le serveur principal et la mise en miroir de bases de données ne peut pas être configurée pour une base de données qui contient des groupes de fichiers FILESTREAM. Si le fournisseur FILESTREAM sert à stocker des données BLOB localement (dans la même base de données de contenu), la base de données ne peut pas être configurée pour la mise en miroir.
 
Si le fournisseur FILESTREAM est configuré de façon à stocker les données BLOB dans une base de données SQL distincte ou en cas d’utilisation d’un magasin BLOB tiers, la base de données de contenu peut être mise en miroir ; toutefois, la mise en miroir de bases de données s’appliquera uniquement à la base de données de contenu, et non aux données BLOB. Celles-ci doivent être gérées séparément et synchronisées avec les métadonnées associées (base de données de contenu). Pour les bases de données BLOB FILESTREAM, cette opération peut s’effectuer par le biais de la copie des journaux de transaction.
 
Pour plus d’informations sur les différences entre FILESTREAM et SQL Server Remote BLOB Store, voir également http://blogs.msdn.com/b/sqlrbs/archive/2009/11/18/sql-server-remote-blob-store-and-filestream-feature-comparison.aspx.
 
FILESTREAM et le cache Office Web Applications
 
Le cache Office Web Applications est utilisé par Word et PowerPoint Web Applications pour créer une version d’un document dont l’affichage par le biais du navigateur est demandé. Il permet d’améliorer les performances et de réduire la consommation des ressources sur les ordinateurs serveurs en rendant des versions mises en cache d’un document ou d’une présentation accessibles dans les cas où il y a plusieurs demandes portant sur le même document. 
 
Le cache Office Web Applications intervient dans deux (2) couches distinctes, dans le système de fichiers de serveur et dans une collection de site « spécialisée » hébergée sur la base de chaque application Web. Les demandes de documents ou de présentations effectuées par le biais d’Office Web Applications sont satisfaites par le biais des deux caches sous forme d’images restituées pour consommation par les clients. Les deux emplacements de cache sont utilisés par toutes les collections de site d’une application Web où les fonctionnalités Office Web Applications sont activées.
 
Les bases de données où FILESTREAM est configuré stockeront les versions mises en cache du document ou de la présentation à l’emplacement de fournisseur configuré.  Il est recommandé de configurer le cache Office Web Applications sur une base de données qui n’est pas configurée pour FILESTREAM.
 
Configuration de FILESTREAM avec SharePoint 2010
Les instructions qui suivent sont fournies uniquement à titre de démonstration. Elles concernent un déploiement de serveur unique et implémentent le fournisseur FILESTREAM local.
 
Activer FILESTREAM sur l’instance de SQL Server cible
 
1.       Dans le menu Démarrer, pointez sur Tous les programmes, Microsoft SQL Server 2008 (R2), Outils de configuration, puis cliquez sur Gestionnaire de configuration SQL Server.
2.       Dans la liste de services, cliquez avec le bouton droit sur SQL Server Services, puis cliquez sur Ouvrir.
3.       Dans le composant logiciel enfichable Gestionnaire de configuration SQL Server, recherchez l’instance de SQL Server sur laquelle vous souhaitez activer FILESTREAM.
4.       Cliquez avec le bouton droit sur l’instance, puis cliquez sur Propriétés.
5.       Dans la boîte de dialogue Propriétés de SQL Server, cliquez sur l’onglet FILESTREAM.
6.       Activez la case à cocher Activer FILESTREAM pour l’accès Transact-SQL.
7.       Si vous souhaitez lire et écrire des données FILESTREAM à partir de Windows, cliquez sur Activer FILESTREAM pour l’accès en continu aux E/S de fichier. Entrez le nom du partage Windows dans la zone Nom de partage Windows.
8.       Si les clients distants doivent accéder aux données FILESTREAM stockées sur ce partage, sélectionnez Autoriser les clients distants à avoir un accès en continu aux données FILESTREAM.
9.       Cliquez sur Appliquer.
10.    Cliquez sur Démarrer, Tous les programmes, Microsoft SQL Server 2008 (R2), puis SQL Server Management Studio.
11.    Dans SQL Server Management Studio, cliquez sur Nouvelle requête pour afficher l’Éditeur de requête.
12.    Dans l’Éditeur de requête, entrez le code Transact-SQL suivant :
 
EXEC sp_configure filestream_access_level, 2
 
Dans l’Éditeur de requête, entrez le code Transact-SQL suivant :
 
RECONFIGURE
Mettre en service le magasin de données RBS
 
1.       Cliquez sur Démarrer, Tous les programmes, Microsoft SQL Server 2008 (R2), puis SQL Server Management Studio.
2.       Développez Bases de données.
3.       Sélectionnez la base de données de contenu pour laquelle vous souhaitez un magasin BLOB, puis cliquez sur Nouvelle requête.
4.       Dans SQL Server Management Studio, cliquez sur Nouvelle requête pour afficher l’Éditeur de requête.
5.       Dans l’Éditeur de requête, entrez le code Transact-SQL suivant :
 
use [nom_base_de_données]
 
if not exists (select * from sys.symmetric_keys where name = N'##MS_DatabaseMasterKey##')create master key encryption by password = N'Admin Key Password !2#4'
 
Dans l’Éditeur de requête, entrez le code Transact-SQL suivant :
 
use [nom_base_de_données]
 
if not exists (select groupname from sysfilegroups where groupname=N'RBSFilestreamProvider')alter database [Database Name] add filegroup RBSFilestreamProvider contains filestream
 
Dans l’Éditeur de requête, entrez le code Transact-SQL suivant :
 
use [nom_base_de_données]
 
alter database [nom_base_de_données] add file (name = RBSFilestreamFile, filename = 'c:\BlobStore') to filegroup RBSFilestreamProvider
Installer le magasin BLOB distant Microsoft SQL Server 2008 R2
 
Téléchargez le package x64 pour le magasin BLOB distant Microsoft SQL Server 2008 R2 à partir du Microsoft SQL Server 2008 R2 Feature Pack à l’adresse suivante : http://www.microsoft.com/downloads/en/details.aspx?FamilyID=ceb4346f-657f-4d28-83f5-aae0c5c83d52&displaylang=en.
 
Ouvrez une invite de commandes avec des autorisations d’administrateur et exécutez la commande suivante pour installer le fichier RBS.MSI téléchargé à l’étape précédente :
 
msiexec /qn /lvx* rbs_install_log.txt /i RBS.msi TRUSTSERVERCERTIFICATE=true FILEGROUP=PRIMARY DBNAME="<nom_base_de_données>" DBINSTANCE="<nom_instance>" FILESTREAMFILEGROUP=RBSFilestreamProvider FILESTREAMSTORENAME=FilestreamProvider_1
 
REMARQUE
Spécifiez le chemin d’accès complet à RBS.MSI à l’état ci-dessus, autrement dit C:\Users\Administrator\Desktop\RBS.MSI. Remplacez les valeurs de DBNAME et DBINSTANCE en fonction de votre environnement.
 
Activer le stockage RBS
1.       Dans le menu Démarrer, cliquez sur Tous les programmes.
2.       Cliquez sur Produits Microsoft SharePoint 2010.
3.       Cliquez sur SharePoint 2010 Management Shell.
4.       Dans SharePoint 2010 Management Shell, entrez l’instruction Windows PowerShell suivante pour définir la base de données de contenu à configurer :
$database=Get-SPContentDatabase –Identity “nom_base_de_données”
Dans SharePoint 2010 Management Shell, entrez l’instruction Windows PowerShell suivante pour obtenir l’objet qui contient les paramètres qui déterminent la façon dont la base de données de contenu utilise le stockage RBS Microsoft SQL Server :
$rbs=$database.RemoteBlobStorageSettings
Dans SharePoint 2010 Management Shell, entrez l’instruction Windows PowerShell suivante pour déterminer si RBS a été installé pour la base de données de contenu sélectionnée :
$rbs.Installed()
REMARQUE
Le résultat de $rbs.Installed() doit être True. Si le résultat est False, vérifiez que RBS.MSI a été installé correctement en examinant le fichier rbs_install_log.txt. Assurez-vous que l’instruction d’installation s’exécutait. Dans SharePoint 2010 Management Shell, entrez l’instruction Windows PowerShell suivante pour activer RBS pour la base de données de contenu sélectionnée :
 
$rbs.Enable()
Dans SharePoint 2010 Management Shell, entrez les instructions Windows PowerShell suivantes pour définir le fournisseur RBS pour la base de données de contenu sélectionnée :
$rbs.SetActiveProviderName($rbs.GetProviderNames()[0])
 
$rbs
 
REMARQUE
Le résultat de $rbs doit être :
Tableau 1
 
Annexe du Tableau 1
 
Enabled indique si RBS a été activé ou non pour la base de données de contenu sélectionnée.
 
ActiveProviderName est le nom du fournisseur SQL Remote Blob Storage dans lequel les nouveaux fichiers seront stockés. A la valeur null si les nouveaux fichiers ne seront pas stockés à l’aide du stockage SQL RBS.
 
MinimumBlobStorageSize correspond à la taille minimale que doit avoir un objet BLOB pour être pris en compte pour le stockage RBS. Les données BLOB dépassant la valeur MinimumBlobStorageSize spécifiée sont stockées dans le magasin de données RBS.
 
Les données de performances FILESTREAM montrent que les données BLOB dépassant 1 Mo procurent les meilleures performances de diffusion. Voir également http://msdn.microsoft.com/en-us/library/cc949109(SQL.100).aspx.
 

 
Pour configurer MinimumBlobStorageSize
1.       Dans le menu Démarrer, cliquez sur Tous les programmes.
2.       Cliquez sur Produits Microsoft SharePoint 2010.
3.       Cliquez sur SharePoint 2010 Management Shell.
4.       Dans SharePoint 2010 Management Shell, entrez les instructions Windows PowerShell suivantes pour affecter la valeur 1 Mo à MinimumBlobStorageSize :
$database = Get-SPContentDatabase “nom_base_de_données”
 
$database.RemoteBlobStorageSettings.MinimumBlobStorageSize=1048576
 
$database.Update()
UpgradePersistedProperties spécifie la collection de noms de champs et de valeurs pour les champs qui ont été supprimés ou modifiés.
 
Valider l’installation
Pour valider la configuration FILESTREAM et l’installation du stockage RBS
 
1.       Cliquez sur Démarrer, Tous les programmes, Microsoft SQL Server 2008, puis SQL Server Management Studio.
2.       Développez Bases de données.
3.       Sélectionnez la base de données de contenu pour laquelle vous souhaitez un magasin BLOB, puis cliquez sur Nouvelle requête.
4.       Dans SQL Server Management Studio, cliquez sur Nouvelle requête pour afficher l’Éditeur de requête.
5.       Dans l’Éditeur de requête, entrez le code Transact-SQL suivant :
USE [nom_base_de_données]
SELECT * FROM dbo.DatabaseInformation
Vérifiez que les lignes RBSCollectionId et RBSProvider sont toutes deux disponibles.
 
Tester le magasin de données RBS
1.       Sélectionnez une bibliothèque de documents souhaitée sur un site dans la base de données de contenu configurée.
2.       Téléchargez un fichier dont la taille est supérieure à 1 Mo.
3.       Sur l'ordinateur qui contient le magasin de données RBS, cliquez sur Démarrer, puis sur Ordinateur.
4.       Naviguez jusqu’au répertoire du magasin de données RBS.
5.       Naviguez jusqu’à la liste de fichiers et ouvrez le dossier dont la date de modification est la plus récente (autre que $FSLOG). Dans ce dossier, ouvrez le fichier dont la date de modification est la plus récente. Vérifiez que la taille et le contenu de ce fichier sont identiques à ceux du fichier que vous avez téléchargé. Si ce n’est pas le cas, assurez-vous que RBS est installé et activé correctement.
La structure de répertoires du magasin de données ressemblera à celle du diagramme suivant.
 


 
REMARQUE
Dans le cas où l’erreur « L’URL '<bibliothèque_documents>/fichier' n’est pas valide. Elle fait peut-être référence à un fichier ou dossier inexistant. Elle se réfère peut-être également à un fichier ou dossier valide qui ne figure pas dans le site Web actuel. » s’afficherait lors du téléchargement de documents dont la taille dépasse la valeur de MinimumBlobStorageSize configurée, ouvrez le Gestionnaire de configuration SQL Server, activez l’option Activer FILESTREAM pour l’accès en continu aux E/S de fichier et redémarrez le service SQL Server (MSSQLSERVER).
 
Ressources supplémentaires

 

 

Date de publication : 22/04/2011 à 09:00

Ce billet de blog a été traduit de l’anglais. L’article d’origine se trouve à l’adresse FILESTREAM with SharePoint 2010