Artículo original publicado el jueves, 21 de abril de 2011

​Autor: Bill Baer, Director sénior de productos técnicos, Microsoft Corporation - SharePoint

FILESTREAM es una característica nueva de SQL Server 2008 que permite el almacenamiento de datos no estructurados en un sistema de archivos NTFS. FILESTREAM (local o remoto) es compatible con SharePoint 2010 como un mecanismo para reducir los gastos de capital permitiendo el almacenamiento de datos no estructurados binarios y grandes en contenido direccionable o almacenamiento de mercancías.

Datos no estructurados
Los datos no estructurados se refieren a la información que no cumple con un modelo definido o no se ajusta bien a las tablas relacionales. En SharePoint los datos no estructurados se pueden referir a los formatos de archivo de documentos de Microsoft Office, vídeo, audio y tipos de archivos relacionados.
 
Datos estructurados
Los datos estructurados en SharePoint se refieren a los metadatos asociados con sus datos no estructurados o BLOB correspondientes. Las bases de datos relacionales suelen citarse como ejemplos de datos estructurados.
 
SQL Server y almacenamiento de datos no estructurados
Hay tres (3) métodos para almacenar datos no estructurados con SQL Server, RBS, SQL BLOB y FILESTREAM:
  • El almacenamiento remoto de blobs (RBS) en el que SharePoint se basa en una capa nueva en SQL Server para leer o actualizar los datos BLOB almacenados fuera de la base de datos en distintos almacenes de blobs (sistema de archivos o almacenes de blobs dedicados)
  • SQL BLOB que se refiere al almacenamiento tradicional de blobs con SharePoint; los datos BLOB se almacenan junto con los metadatos estructurados en la base de datos de contenido
  • FILESTREAM
 
Información general sobre FILESTREAM
FILESTREAM se implementa en el tipo de datos varbinary(max), lo que indica al motor de la base de datos que almacene datos no estructurados en el sistema de archivos a través de un grupo de archivos FILESTREAM que contiene directorios de sistema de archivos en lugar de los archivos mismos, también conocidos como contenedores de datos. Los contenedores de datos son la interfaz entre el almacenamiento del motor de la base de datos y el almacenamiento de sistema de archivos. Varbinary es la designación de tipo de datos binarios para objetos binarios grandes que se almacenan en las bases de datos de contenido de SharePoint 2010 y hace referencia a los datos binarios de longitud variable. (MAX) hace referencia a un valor que indica que el tamaño máximo de almacenamiento es de 2^31-1 bytes o en otros casos 2 GB. El almacenamiento remoto de blobs no proporciona un mecanismo para rebasar el límite de tamaño de archivo de 2 GB impuesto por SharePoint.
 
En SharePoint 2010 se hace referencia a los datos remotos de BLOB por medio de un identificador único en las bases de datos de contenido configuradas para RBS (vea la ilustración).
 
 
 

 
 
FILESTREAM ofrece varias ventajas en relación con el rendimiento: 1) FileStream usa la memoria caché del sistema de NT para almacenar en caché los datos de archivo, reduciendo el efecto que tienen los datos FILESTREAM en el rendimiento del motor de la base de datos y 2) no se usa el grupo de búferes de SQL Server; por lo tanto, la memoria está disponible para el procesamiento de consultas.
 
FILESTREAM proporciona un valor óptimo en escenarios donde se usa SharePoint para almacenar datos BLOB grandes como, por ejemplo, archivos de vídeo que se beneficiarán de FILESTREAM o los datos BLOB que superan 1 MB.
 
Consideraciones especiales
 
FILESTREAM y administración de la continuidad empresarial
 
La creación de reflejo de la base de datos no admite FILESTREAM ya que no se puede crear un grupo de archivos FILESTREAM en el servidor principal y la creación de reflejo de la base de datos no se puede configurar para una base de datos que contiene grupos de archivos FILESTREAM. Si el proveedor FILESTREAM se usa para almacenar datos BLOB localmente (dentro de la misma base de datos de contenido), la base de datos no se puede configurar para la creación de reflejo de la base de datos.
 
Si el proveedor FILESTREAM está configurado para almacenar los datos BLOB dentro de una base de datos SQL independiente o cuando se usa un almacén de blobs de terceros, se puede reflejar la base de datos de contenido. Sin embargo, la creación de reflejo de la base de datos solo se aplicará a la base de datos de contenido y no a los datos BLOB. Los datos BLOB deben tratarse por separado y mantenerse sincronizados con los metadatos asociados (base de datos de contenido). En el caso de las bases de datos BLOB de FILESTREAM, esto se puede hacer a través del trasvase de registros.
 
Para obtener información acerca de las diferencias entre FILESTREAM y el almacén remoto de blobs de SQL Server, vea también http://blogs.msdn.com/b/sqlrbs/archive/2009/11/18/sql-server-remote-blob-store-and-filestream-feature-comparison.aspx.
 
FILESTREAM y la memoria caché de Office Web Applications
 
Word y PowerPoint Web App usan la memoria caché de Office Web Applications para crear una versión de un documento solicitado para su visualización a través del explorador, lo que mejora el rendimiento y reduce el consumo de recursos en los equipos del servidor creando versiones en caché de un documento o presentación disponible en casos en que existen varias solicitudes para el mismo documento. 
 
La memoria caché de Office Web Applications se produce en dos (2) niveles distintos: en el sistema de archivos del servidor y dentro de una colección de sitios "especializada" que se hospeda en función de la aplicación web. Las solicitudes de documentos o presentaciones que se realizan mediante Office Web Applications se atienden a través de ambas memorias caché, mientras las imágenes se representan para el consumo del cliente. Todas las colecciones de sitios usan ambas ubicaciones de memoria caché dentro de una aplicación web en la que se activan las características de Office Web Applications.
 
Las bases de datos de contenido en las que se configura FILESTREAM almacenarán las versiones en caché del documento o presentación en la ubicación del proveedor configurado.  Se recomienda configurar la memoria caché de Office Web Applications en una base de datos que no esté configurada para FILESTREAM.
 
Configuración de FILESTREAM con SharePoint 2010
Las siguientes instrucciones están diseñadas para usarse en una implementación de un solo servidor para fines de demostración y se implementa el proveedor local de FILESTREAM.
 
Habilitar FILESTREAM en la instancia de SQL Server de destino
 
1.       En el menú Inicio, elija Todos los programas, Microsoft SQL Server 2008 (R2), Herramientas de configuración y, a continuación, haga clic en Administrador de configuración de SQL Server.
2.       En la lista de servicios, haga clic con el botón secundario en Servicios de SQL Server y, a continuación, haga clic en Abrir.
3.       En el componente Administrador de configuración de SQL Server, busque la instancia de SQL Server en la que desea habilitar FILESTREAM.
4.       Haga clic con el botón secundario en la instancia y, a continuación, haga clic en Propiedades.
5.       En el cuadro de diálogo Propiedades de SQL Server, haga clic en la pestaña FILESTREAM.
6.       Active la casilla de verificación Habilitar FILESTREAM para acceso Transact-SQL.
7.       Si desea leer y escribir datos FILESTREAM en Windows, haga clic en Habilitar FILESTREAM para el acceso de transmisión por secuencias de E/S de archivos. Escriba el nombre del recurso compartido de Windows en el cuadro Nombre de recurso compartido de Windows.
8.       Si los clientes remotos deben tener acceso a los datos FILESTREAM que se almacenan en este recurso compartido, seleccione Permitir que los clientes remotos tengan acceso de transmisión por secuencias a datos FILESTREAM.
9.       Haga clic en Aplicar.
10.    Haga clic en Inicio, haga clic en Todos los programas, haga clic en Microsoft SQL Server 2008 (R2) y, a continuación, haga clic en SQL Server Management Studio.
11.    En SQL Server Management Studio, haga clic en Nueva consulta para mostrar el Editor de consultas.
12.    En el Editor de consultas, escriba el siguiente código de Transact-SQL:
 
EXEC sp_configure filestream_access_level, 2
 
En el Editor de consultas, escriba el siguiente código de Transact-SQL:
 
RECONFIGURE
Aprovisionar el almacén de datos RBS
 
1.       Haga clic en Inicio, haga clic en Todos los programas, haga clic en Microsoft SQL Server 2008 (R2) y, a continuación, haga clic en SQL Server Management Studio.
2.       Expanda Bases de datos.
3.       Seleccione la base de datos de contenido para la que desea crear un almacén de blobs y, a continuación, haga clic en Nueva consulta.
4.       En SQL Server Management Studio, haga clic en Nueva consulta para mostrar el Editor de consultas.
5.       En el Editor de consultas, escriba el siguiente código de Transact-SQL:
 
use [Nombre de la base de datos]
 
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'
 
En el Editor de consultas, escriba el siguiente código de Transact-SQL:
 
use [Nombre de la base de datos]
 
if not exists (select groupname from sysfilegroups where groupname=N'RBSFilestreamProvider')alter database [Nombre de la base de datos] add filegroup RBSFilestreamProvider contains filestream
 
En el Editor de consultas, escriba el siguiente código de Transact-SQL:
 
use [Nombre de la base de datos]
 
alter database [Nombre de la base de datos] add file (name = RBSFilestreamFile, filename = 'c:\BlobStore') to filegroup RBSFilestreamProvider
Instalar el almacén remoto de blobs de Microsoft SQL Server 2008 R2
 
Descargue el paquete x64 para el almacén remoto de blobs de Microsoft SQL Server 2008 R2 desde el Feature Pack para Microsoft SQL Server 2008 R2 en http://www.microsoft.com/downloads/en/details.aspx?FamilyID=ceb4346f-657f-4d28-83f5-aae0c5c83d52&displaylang=en.
 
Abra un símbolo del sistema con permisos de administrador y ejecute el siguiente comando para instalar RBS.MSI descargado en el paso anterior:
 
msiexec /qn /lvx* rbs_install_log.txt /i RBS.msi TRUSTSERVERCERTIFICATE=true FILEGROUP=PRIMARY DBNAME="<Nombre de la base de datos>" DBINSTANCE="<Nombre de la instancia>" FILESTREAMFILEGROUP=RBSFilestreamProvider FILESTREAMSTORENAME=FilestreamProvider_1
 
NOTA
Especifique la ruta de acceso completa a RBS.MSI en el estado anterior, es decir, C:\Users\Administrator\Desktop\RBS.MSI. Reemplace los valores de DBNAME y DBINSTANCE para que coincidan con el entorno.
 
Habilitar el almacenamiento remoto de blobs
1.       En el menú Inicio, haga clic en Todos los programas.
2.       Haga clic en Productos de Microsoft SharePoint 2010.
3.       Haga clic en Consola de administración de SharePoint 2010.
4.       En la Consola de administración de SharePoint 2010, escriba la siguiente instrucción de Windows PowerShell para establecer la base de datos de contenido que se va a configurar:
$database=Get-SPContentDatabase –Identity "Nombre de la base de datos"
En la Consola de administración de SharePoint 2010, escriba la siguiente instrucción de Windows PowerShell que obtiene el objeto que contiene la configuración que determina cómo usa la base de datos de contenido el almacenamiento remoto de blobs de Microsoft SQL Server:
$rbs=$database.RemoteBlobStorageSettings
En la Consola de administración de SharePoint 2010, escriba la siguiente instrucción de Windows PowerShell para determinar si se instaló RBS para la base de datos de contenido seleccionada:
$rbs.Installed()
NOTA
El resultado de $rbs.Installed() debe ser True; si el resultado es False, compruebe que RBS.MSI se haya instalado correctamente mediante la revisión de rbs_install_log.txt. Asegúrese de que la instrucción de instalación se haya ejecutado en la Consola de administración de SharePoint 2010. Escriba la siguiente instrucción de Windows PowerShell para habilitar RBS para la base de datos de contenido seleccionada:
 
$rbs.Enable()
En la Consola de administración de SharePoint 2010, escriba las siguientes instrucciones de Windows PowerShell para establecer el RBSprovider para la base de datos de contenido seleccionada:
$rbs.SetActiveProviderName($rbs.GetProviderNames()[0])
 
$rbs
 
NOTA
El resultado de $rbs debe ser:
Tabla 1
 
Apéndice para la tabla 1
 
Enabled especifica si RBS está habilitado o no para la base de datos de contenido seleccionada.
 
ActiveProviderName es el nombre del proveedor de almacenamiento remoto de blobs de SQL en el que se almacenarán los nuevos archivos. El valor será null si los nuevos archivos no se almacenan mediante el almacenamiento remoto de blobs de SQL.
 
MinimumBlobStorageSize se refiere al tamaño mínimo que puede tener un blob para que se considere digno del almacenamiento RBS; los datos BLOB que excedan el MinimumBlobStorageSize especificado se almacenarán en el almacén de datos RBS.
 
Los datos de rendimiento de FILESTREAM muestran que los datos BLOB que exceden 1 MB proporcionan el mejor rendimiento de transmisión por secuencias. Vea también http://msdn.microsoft.com/en-us/library/cc949109(SQL.100).aspx.
 

 
Para configurar el MinimumBlobStorageSize:
1.       En el menú Inicio, haga clic en Todos los programas.
2.       Haga clic en Productos de Microsoft SharePoint 2010.
3.       Haga clic en Consola de administración de SharePoint 2010.
4.       En la Consola de administración de SharePoint 2010, escriba las siguientes instrucciones de Windows PowerShell para configurar el MinimumBlobStorageSize en 1 MB:
$database = Get-SPContentDatabase "Nombre de la base de datos"
 
$database.RemoteBlobStorageSettings.MinimumBlobStorageSize=1048576
 
$database.Update()
UpgradePersistedProperties especifica la colección de nombres de campo y los valores de campos que se eliminaron o modificaron.
 
Validar la instalación
Para validar la configuración de FILESTREAM y la instalación de RBS:
 
1.       Haga clic en Inicio, elija Todos los programas, haga clic en Microsoft SQL Server 2008 y, a continuación, elija SQL Server Management Studio.
2.       Expanda Bases de datos.
3.       Seleccione la base de datos de contenido para la que desea crear un almacén de blobs y, a continuación, haga clic en Nueva consulta.
4.       En SQL Server Management Studio, haga clic en Nueva consulta para mostrar el Editor de consultas.
5.       En el Editor de consultas, escriba el siguiente código de Transact-SQL:
USE [Nombre de la base de datos]
SELECT * FROM dbo.DatabaseInformation
Confirme que las filas RBSCollectionId y RBSProvider están disponibles.
 
Probar el almacén de datos RBS
1.       Seleccione una biblioteca de documentos que desee en un sitio en la base de datos de contenido configurada.
2.       Cargue un archivo que sea mayor que 1 MB.
3.       En el equipo que contiene el almacén de datos RBS, haga clic en Inicio y, a continuación, haga clic en Equipo.
4.       Examine el directorio de almacén de datos RBS.
5.       Vaya a la lista de archivos y abra la carpeta que tiene la fecha de modificación más reciente (diferente de $FSLOG). En esa carpeta, abra el archivo que tiene la fecha de modificación más reciente. Compruebe que este archivo tiene el mismo tamaño y contenido que el archivo cargado. Si no es así, asegúrese de que el RBS está instalado y habilitado correctamente.
La estructura de directorios del almacén de datos tendrá un aspecto similar al del siguiente diagrama.
 


 
NOTA
El error de evento "La dirección URL '<Biblioteca de documentos>/Archivo' no es válida. Puede que haga referencia a una carpeta o un archivo que no existe, o a una carpeta o un archivo válido que no está en el sitio web actual” aparece al cargar documentos mayores que el MinimumBlobStorageSize configurado. Abra el Administrador de configuración de SQL Server, active Habilitar FILESTREAM para el acceso de transmisión por secuencias de E/S de archivos y reinicie el servicio de SQL Server (MSSQLSERVER).
 
Recursos adicionales

 

 

Publicado: 22/04/2011 9:00 a. m.

Esta entrada de blog es una traducción. Puede consultar el artículo original en FILESTREAM with SharePoint 2010