Saltar al contenido

Almacenamiento de archivos en SQL Server

Necesitamos tu apoyo para difundir nuestros ensayos referente a las ciencias informáticas.

Solución:

Hay un artículo muy bueno de Microsoft Research llamado To Blob or Not To Blob.

Su conclusión después de una gran cantidad de pruebas y análisis de rendimiento es la siguiente:

  • si sus imágenes o documentos suelen tener un tamaño inferior a 256 K, almacenarlos en una columna VARBINARY de la base de datos es más eficiente

  • si sus imágenes o documentos suelen tener más de 1 MB de tamaño, almacenarlos en el sistema de archivos es más eficiente (y con FILESTREAM de SQL Server 2008 attributetodavía están bajo control transaccional y forman parte de la base de datos)

  • entre esos dos, es un poco confuso dependiendo de su uso

Si decide colocar sus imágenes en una tabla de SQL Server, le recomiendo enfáticamente que use una tabla separada para almacenar esas imágenes; no almacene la foto del empleado en la tabla de empleados; guárdelas en una tabla separada. De esa manera, la tabla de empleados puede mantenerse simple, mezquina y muy eficiente, suponiendo que no siempre necesite seleccionar la foto del empleado también, como parte de sus consultas.

Para grupos de archivos, consulte Archivos y arquitectura de grupos de archivos para obtener una introducción. Básicamente, crearía su base de datos con un grupo de archivos separado para estructuras de datos grandes desde el principio, o agregaría un grupo de archivos adicional más adelante. Llamémoslo “LARGE_DATA”.

Ahora, cada vez que tenga que crear una nueva tabla que necesite almacenar columnas VARCHAR(MAX) o VARBINARY(MAX), puede especificar este grupo de archivos para los datos grandes:

 CREATE TABLE dbo.YourTable
     (....... define the fields here ......)
     ON Data                   -- the basic "Data" filegroup for the regular data
     TEXTIMAGE_ON LARGE_DATA   -- the filegroup for large chunks of data

¡Vea la introducción de MSDN sobre grupos de archivos y juegue con ella!

hay todavía ninguna respuesta sencilla. Depende de tu escenario. MSDN tiene documentación para ayudarlo a decidir.

Hay otras opciones cubiertas aquí. En lugar de almacenar en el sistema de archivos directamente o en un BLOB, puede usar FileStream o File Table en SQL Server 2012. Las ventajas de File Table parecen obvias (pero admito que no tengo experiencia personal de primera mano con ellos). .)

Definitivamente vale la pena leer el artículo.

Puede leer sobre FILESTREAM. Aquí hay información de los documentos que deberían ayudarlo a decidir:

Si se dan las siguientes condiciones truedebería considerar usar FILESTREAM:

  • Los objetos que se almacenan tienen, en promedio, más de 1 MB.
  • El acceso de lectura rápido es importante.
  • Está desarrollando aplicaciones que utilizan un nivel intermedio para la lógica de la aplicación.

Para objetos más pequeños, el almacenamiento de BLOB varbinary(max) en la base de datos a menudo proporciona un mejor rendimiento de transmisión.

Te invitamos a confirmar nuestro quehacer añadiendo un comentario y dejando una puntuación te damos la bienvenida.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *