SQL Server 2008 Bootcamp Día 2 SQL 2008...

28
SQL 2008 FILESTREAM SQL Server 2008 Bootcamp Día 2

Transcript of SQL Server 2008 Bootcamp Día 2 SQL 2008...

SQL 2008

FILESTREAM

SQL Server 2008 Bootcamp – Día 2

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

DEMO 1

Vistazo al uso de FILESTREAM

15© 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

DEMO 2

Uso desde aplicaciones cliente

20© 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

Preguntas y respuestas

FILESTREAM

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