Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
Información sobre versión Beta
• Toda la información y ejemplos son relativos a
la beta pública de SQL Server 2008 CTP5
• Los comandos y funcionalidades pueden diferir
de la versión RTM final
2© 2008 Solid Quality Mentors
Agenda
• FILESTREAM
– Escenarios
– Propiedades clave
– Uso
– Uso desde aplicaciones cliente
– Seguridad
– Limitaciones
– Integración con otras características de SQL 2008
FILESTREAM
3© 2008 Solid Quality Mentors
FILESTREAM
• ¿Como capturamos datos binarios no
estructurados?
– Documentos, Imágenes y similares
• Hasta ahora solo existían 2 formas
– Internamente en SQL Server como un BLOB
– Externamente a SQL Server, usando el sistema de
archivos y guardándonos la referencia al archivo en
la base de datos
• Ambas soluciones tienen sus pros y sus contras
Escenario
4© 2008 Solid Quality Mentors
FILESTREAM
• Una compañía de seguros necesita almacenar
documentos para que luego puedan ser
recuperarlos por los procesos que los
demanden
• Un minorista de Internet necesita almacenar
videos de uso de sus productos para mostrarlos
en su comercio electrónico
• Un sistema telefónico necesita almacenar
mensajes hablados como secuencias de audio
para que puedan ser recuperados remotamente
Escenario
5© 2008 Solid Quality Mentors
FILESTREAM
• Una estación de radio necesita permitir realizar
búsquedas sobre su librería de podcasts
disponibles para descarga desde su web
• Un consultor legal necesita almacenar copias
electrónicas de documentos como imágenes,
para que sean fácilmente recuperables y
vinculados a un caso o cliente individual
Escenario
6© 2008 Solid Quality Mentors
FILESTREAM
• Un arquitecto necesita almacenar y recuperar
planos digitales y sus datos vinculados al cliente
• Una biblioteca necesita convertir grandes
documentos a formato digital para indexarlo y
poder usar una herramienta digital de búsqueda.
Escenario
7© 2008 Solid Quality Mentors
FILESTREAM
• Es un atributo de una columna varbinary(max)
• Especificar que la columna se ha de almacenar
en el sistema de ficheros NTFS
– La columna sigue siendo manejable mediante
comandos T-SQL
– Además, se puede acceder desde el sistema de
ficheros y desde la API del SO
Propiedades clave
8© 2008 Solid Quality Mentors
FILESTREAM
• El almacenamiento de FILESTREAM se
implementa como una columna varbinary(max)
en la que los datos son guardados como BLOBs
en el sistema de ficheros
– El tamaño máximo de los BLOBs vienen limitados
únicamente por el tamaño del volumen de
almacenamiento
– La limitación estándar de los tipos varbinary(max) de
2-GB no se aplican a estos BLOBs que se almacenan
en el sistema de ficheros
• Los datos FILESTREAM se deben guardar en
grupos de ficheros FILESTREAM
Uso
9© 2008 Solid Quality Mentors
FILESTREAM
• Un grupo de ficheros FILESTREAM es un grupo
de ficheros especial que contiene directorios del
sistema en lugar de archivos propiamente dicho
– A estos directorios se les llama “contenedores de
datos”
– Los contenedores de datos, son la interfaz entre el
motor de base de datos y el almacenamiento del
sistema
• Los grupos de ficheros FILESTREAM pueden
residir en grupos volúmenes comprimidos
Uso
10© 2008 Solid Quality Mentors
FILESTREAM
• ¿Cuándo usar FILESTREAM?
– Necesitas almacenar objetos que ocupan como
media mas de 1 Mb
– Importancia en acceso de lectura rápido
– Estas desarrollando aplicaciones que utilizan una
capa intermedia para la lógica de tu aplicación
Uso
11© 2008 Solid Quality Mentors
FILESTREAM
• Habilitación de soporte filestream a nivel de
BBDD
– sp_filestream_configure @enable_level
• 0 = Deshabilitado. Es el valor por defecto
• 1 = Habilitado solo para acceso T-SQL
• 2 = Habilitado solo para T-SQL y acceso local al sistema de
ficheros
• 3 = Habilitado para Transact-SQL, acceso local y remoto al
sistema de ficheros
Uso
12© 2008 Solid Quality Mentors
FILESTREAM
• Añade un grupo de ficheros de base de datos
dedicado
– Con al menos un “fichero”
• Apunta a un directorio, no a un archivo
• La ruta hasta el padre del último directorio ha de existir y el
último directorio no ha de existir
• El directorio contiene un archivo filestream.hdr y una carpeta
$FSLOG
Uso
13© 2008 Solid Quality Mentors
FILESTREAM
• Crea una tabla con un varbinary(max)
– Pon los atributos FILESTREAM
– La tabla debe contener una columna con ROWGUID
único
• Uso estándar de sentencias DML
• Soporte transaccional
– Los borrados del sistema de ficheros se realizan
ante truncamientos del log
Uso
14© 2008 Solid Quality Mentors
FILESTREAM
• El método PathName devuelve la ruta UNC al
dato filestream
– SELECT column_name.PathName()
• La columna ROWGUID de una tabla que tiene el
atributo FILESTREAM de almacenamiento ha
de ser visible en las consultas en las que se
llama PathName()
• Esto se aplica a sentencias T-SQL realizadas
sobre vistas, tablas derivadas, subconsultas
relacionadas y subconsultas escalares
Uso desde aplicaciones cliente
16© 2008 Solid Quality Mentors
FILESTREAM
• Todos los acceso a filestreams deben ser parte
de la transacción
• El token transaccional es utilizado para enlistar
el ámbito de transacción y los bloqueos
necesarios
– Token transaccional: SELECT
GET_FILESTREAM_TRANSACTION_CONTEXT()
Uso desde aplicaciones cliente
17© 2008 Solid Quality Mentors
FILESTREAM
• El API OpenSqlFilestream obtiene un manejador
de archivo Win32
• La aplicación usa dicho manejador para acceder
a los datos FILESTREAM y además, para
pasárselo a las siguientes API de Win32:
– ReadFile, WriteFile, TransmitFile, SetFilePointer,
SetEndOfFile, o FlushFileBuffers.
– Si la aplicación llama a cualquier otra API utilizando
dicho manejador, se devuelve un error
ERROR_ACCESS_DENIED
• La aplicación debe cerrar el manejador
utilizando CloseHandle
Uso desde aplicaciones cliente
18© 2008 Solid Quality Mentors
FILESTREAM
• Envoltura API para la API Win32
OpenSqlFilestream para .NET disponible aquí:
– http://www.codeplex.com/SQLSrvE2E
• Ejemplo SQL2K8 FILESTREAM-WPF-HTTP
• Ejemplos SQL Server 2008
– http://www.codeplex.com/SqlServerSamples
Uso desde aplicaciones cliente
19© 2008 Solid Quality Mentors
FILESTREAM
• Cuando una tabla contiene una columna
FILESTREAM, cada fila ha de tener un ID de fila
único
• Los contenedores FILESTREAM no pueden
jerarquizarse
• En Microsoft Clustering, los grupos de ficheros
FILESTREAM deben estar en recursos
compartidos de disco
Limitaciones
21© 2008 Solid Quality Mentors
FILESTREAM
• Para acceder a los archivos de sistema sólo se
soporta el nivel de aislamiento “read-commited”
es soportado
• Se soportan “Repeatable read” ,”serializable” y
“snapshot isolations”, cuando los datos
FILESTREAM se acceden desde T-SQL.
“Lectura sucia” no está soportada.
• El acceso a archivos de sistema abre
operaciones que no esperan a ningún bloqueo
– Las operaciones abiertas fallan inmediatamente si no
pueden acceder a los datos
Limitaciones
22© 2008 Solid Quality Mentors
FILESTREAM
• Solo la cuenta de servicio tiene permisos sobre
el sistema de ficheros del contenedor
FILESTREAM
• Cuando una base de datos se abre, SQL Server
restringe el acceso al contenedor/es
FILESTREAM, excepto cuando el acceso se
realiza desde transacciones T-SQL y la API
OpenSqlFilestream
Seguridad
23© 2008 Solid Quality Mentors
FILESTREAM
• Cuando la BBDD se cierra, los datos físicos del
contenedor son completamente accesibles y
sujetos a la seguridad de Windows
– Es recomendable asegurar los directorios que
contienen FILESTREAMs para que los archivos no
sean accidentalmente modificados o borrados
• Desde un punto de vista SQL Server, la
seguridad de los FILESTREAMs se realiza
desde comandos DCL estandares
Seguridad
24© 2008 Solid Quality Mentors
FILESTREAM
• No se soportan Instantáneas de BBDD
– Puedes crear instantáneas de grupos de ficheros
estándar (no-FILESTREAM)
– Los grupos de ficheros FILESTREAM se marcan
como offline para dichas instantáneas de BBDD
• Se soporta
– Replicación
– Log Shipping
– Se soporta Full-Text indexing
– Microsoft Clustering
• Los grupos de ficheros FILESTREAM filegroups han de
residir en recursos compartidos
• SQL Express tiene soporte para FILESTREAM
Integración con otras características de SQL Server 2008
25© 2008 Solid Quality Mentors
FILESTREAM
• Las columnas FILESTREAM solo pueden
almacenar datos en volúmenes de disco locales
– Almacenamiento remoto en futuras versiones de SQL
Server
• No se soporta
– Encriptación transparente (Transparent Data
Encription)
– Columnas FILESTREAM en parámetros de tabla
– Database Mirroring
Integración con otras características de SQL Server 2008
26© 2008 Solid Quality Mentors
SQL Server 2008 Links
• Site de SQL Server 2008
– http://www.microsoft.com/sql/2008/
• Ejemplos de SQL Server 2008
– http://www.codeplex.com/SqlServerSamples
28© 2007 Solid Quality Mentors