sql >> Base de Datos >  >> RDS >> Sqlserver

Uso de SQL Server como almacén de imágenes

10 Gb no es una gran cantidad de datos, por lo que probablemente pueda usar la base de datos para almacenarlos y no tenga grandes problemas, pero, por supuesto, es mejor usar el sistema de archivos en términos de rendimiento y, en cuanto a la gestión de la seguridad, es mejor usar la base de datos. (copias de seguridad y consistencia).

Felizmente, Sql Server 2008 le permite tener su pastel y comérselo también, con:

El atributo FILESTREAM

En SQL Server 2008, puede aplicar el atributo FILESTREAM a una columna varbinary y luego SQL Server almacena los datos de esa columna en el sistema de archivos NTFS local. Almacenar los datos en el sistema de archivos trae dos beneficios clave:

  • El rendimiento coincide con el rendimiento de transmisión del sistema de archivos.
  • El tamaño de BLOB está limitado únicamente por el tamaño del volumen del sistema de archivos.

Sin embargo, la columna se puede administrar como cualquier otra columna BLOB en SQL Server, por lo que los administradores pueden usar las capacidades de administración y seguridad de SQL Server para integrar la administración de datos BLOB con el resto de los datos en la base de datos relacional, sin necesidad de administrar el datos del sistema de archivo por separado.

La definición de los datos como una columna de FILESTREAM en SQL Server también garantiza la coherencia a nivel de datos entre los datos relacionales de la base de datos y los datos no estructurados que se almacenan físicamente en el sistema de archivos. Una columna FILESTREAM se comporta exactamente igual que una columna BLOB, lo que significa una integración completa de las operaciones de mantenimiento, como copia de seguridad y restauración, integración completa con el modelo de seguridad de SQL Server y compatibilidad con transacciones completas.

Los desarrolladores de aplicaciones pueden trabajar con datos de FILESTREAM a través de uno de dos modelos de programación; pueden usar Transact-SQL para acceder y manipular los datos al igual que las columnas BLOB estándar, o pueden usar las API de transmisión de Win32 con la semántica transaccional de Transact-SQL para garantizar la coherencia, lo que significa que pueden usar llamadas estándar de lectura/escritura de Win32 a FILESTREAM BLOB como lo harían si interactuaran con archivos en el sistema de archivos.

En SQL Server 2008, las columnas de FILESTREAM solo pueden almacenar datos en volúmenes de disco locales y algunas funciones, como el cifrado transparente y los parámetros con valores de tabla, no son compatibles con las columnas de FILESTREAM. Además, no puede usar tablas que contengan columnas FILESTREAM en instantáneas de bases de datos o sesiones de creación de reflejo de bases de datos, aunque se admite el trasvase de registros.