2010-12-15 41 views
13

No soy un administrador de bases de datos, así que no sé las ventajas y desventajas de utilizar varios métodos para almacenar datos binarios en un servidor SQL.SQL Server: cómo almacenar datos binarios (por ejemplo, archivo de Word)?

  • varbinary(n) tiendas sólo 8000 bytes
  • varbinary(max) tiendas de 2 GB
  • BLOB s son para archivos de gran tamaño, pero vienen con una sobrecarga "administrativa" (los archivos sólo se hace referencia en la base de datos, pero en realidad sentado en el disco duro local)

básicamente tengo alrededor de 1.000 documentos (por año), que quiero almacenar en una base de datos SQL Server 2008 R2 (se llena de una forma simple carga ASPX, siendo visto por un simple Gridview con descarga) Todos los documentos probablemente serán alrededor de 2MB - 8MB (Word, archivos de Excel). Mi conjetura es que que debería usar una tabla MyDocuments con la siguiente distribución:

MyDocuments 
    Data  varbinary(max) 
    Title  varchar(255) 
    ModifiedOn datetime() 
    ModifiedBy varchar(100) 

¿Estoy en la pista con varbinary(max)? ¿O voy en la dirección incorrecta (por ejemplo, en cuanto a rendimiento)?

+0

mejor sería para comprimirlos y luego ir por un solo guardar. –

+0

No es una opción, ya que son documentos únicos a los que se hace referencia como documentos únicos en GridView. Piensa en el sistema de gestión de documentos. –

+0

Bien, comprima cada uno antes de insertar. Los archivos de Excel y de Word obtienen una relación de compresión bastante alta. Esto también reduciría el tamaño de la base de datos. –

Respuesta

16

Hay almacenamiento 'FILESTREAM' en SQL Server 2008. Permite el almacenamiento y el acceso eficiente a los datos BLOB utilizando una combinación de SQL Server 2008 y el sistema de archivos NTFS.

Puede comprobar estos:

FILESTREAM Storage in SQL Server 2008
Saving and Retrieving File Using FileStream SQL Server 2008

EDIT:
objetos más pequeños que 256 K se conservan mejor en una base de datos mientras que los objetos más grandes que 1 M se conservan mejor en el sistema de archivos.

Rendimiento: Varbinary vs FILESTREAM

http://www.sqlskills.com/BLOGS/PAUL/post/SQL-Server-2008-FILESTREAM-performance.aspx
To BLOB or Not To BLOB: Large Object Storage in a Database or a Filesystem
SQL Server 2008 FILESTREAM performance

+0

He oído hablar de 'FILESTREAM' - ¿por qué no usar' varbinary (max) '? –

+0

Si los archivos miden menos de 1mb, use varbinary else use FILESTREAM. Verifica la edición. –

+0

Me parece bien. Gracias Asseem! –

Cuestiones relacionadas