Diegazo,
Si vas a probar con filesystem, como comentas te vas a encontrar con el
problema del acceso lento en carpetas con muchos archivos
para evitar eso,
podes crear una estructura que te agrupe archivos de 100 por ejemplo:
En lugar de guardar E:\Archivos\file0001.txt
E:\Archivos\file9999.txt
podes guardar
E:\Archivos\0\0\file0001.txt
E:\Archivos\9\9\file9999.txt
Es una técnica rustica pero ganas en performance.
También, podes ganar algo de performance con algún toqueteo de parámetros
más fino del filesystem:
- Tamaño del MFT
- Deshabilitar la opción de guardar nombres de archivos 8.3
- Deshabilitar la opción de guardar el timestamp del archivo
- Estudiar el block size que le das al formatear
- Alinear la partición al crearla
La baja desfragmentación te va a ayudar.
Y a esto sumale, las opciones de tunneo que puedas encontrar por hardware:
- Tipo de discos y velocidades
- Tipo de RAID
- Cantidad de discos en el RAID
- El cache de discos y controladoras
- La opción de un storage externo y el cache que te pueda proveer
Algo más, si los archivos los vas a acceder desde un share
una opción que
te va a dar mayor tiempo de respuesta seria usar win2008.
Un abrazo
De: [email protected] [mailto:[email protected]] En nombre de Diego Cepero
Enviado el: Wednesday, October 07, 2009 4:45 PM
Para: [email protected]
Asunto: [dbms] Almacenamiento de BLOBs
Ok, seguiremos haciendo pruebas. Muchas gracias, Maxi.
_____
De: [email protected] [mailto:[email protected]] En nombre de Maxi Accotto
Enviado el: Miércoles, 07 de Octubre de 2009 04:31 p.m.
Para: Diego Cepero
Asunto: [dbms] Almacenamiento de BLOBs
Hola, con el filesystem pasa lo que vos decís, en algunos casos se puede
poner lento si accedes vos a la carpeta desde Windows por eso yo te decía
que a mí me gusta mucho mas la idea de poner eso dentro de la base de datos.
Uno de mis clientes tiene un storage ibm 4700 y el otro un 3200, el del 3200
tienen filestream pero no lo aplicaron para todo todo.
Maximiliano Damian Accotto
Microsoft MVP en SQL Server
http://Blog.Maxiaccotto.com
De: [email protected] [mailto:[email protected]] En nombre de Diego Cepero
Enviado el: miércoles, 07 de octubre de 2009 04:04 p.m.
Para: Maxi
Asunto: [dbms] Almacenamiento de BLOBs
Hola Maxi,
Nos queda una duda con la característica de Filestream de SQL.
En nuestra experiencia, cuando una carpeta del file system tiene muchos
archivos, el acceso a esa carpeta se vuelve lento. En pruebas básicas de
filestream que hicimos, pudimos comprobar que SQL crea una estructura:
/contenedor (filegroup)/tabla/columna. El almacenamiento de los blobs se
realiza en esta última carpeta, con lo cual la cantidad de archivos de esta
carpeta vá a ser muuuuy grande. Si bien hay optimizaciones posibles a nivel
file system (por ejemplo desactivar la compatibilidad con nombres cortos y
el mantenimiento de la fecha de último acceso) y además optimizaciones a
nivel SQL (por ejemplo particionamiento), nos quedan dudas. Podrías darnos
más detalles acerca de cómo implementaron con y sin filestream?
(dispositivos de almacenamiento, particionamiento, etc.)
Gracias, un abrazo.
_____
De: [email protected] [mailto:[email protected]] En nombre de Maxi Accotto
Enviado el: Miércoles, 07 de Octubre de 2009 11:54 a.m.
Para: Diego Cepero
Asunto: [dbms] Almacenamiento de BLOBs
Hola, yo tengo experiencia en el uso de ambas, tengo dos clientes que
guardan miles de documentos e imágenes en SQL Server.
Uno lo hace con Filestream y el otro directo en la base.
La verdad que no te podría decir una comparación , en los dos clientes los
métodos funcionan muy bien y sus bases hoy casi ocupan 400GB,
Yo prefiero usar varbinary(max) en la base y olvidarme del filesystem
Maximiliano Damian Accotto
Microsoft MVP en SQL Server
http://Blog.Maxiaccotto.com
De: [email protected] [mailto:[email protected]] En nombre de Diego Cepero
Enviado el: miércoles, 07 de octubre de 2009 11:22 a.m.
Para: Maxi
Asunto: [dbms] Almacenamiento de BLOBs
Buen día,
Les mando esta consulta en nombre de un compañero, que está con
problemas para suscribirse a las listas.
Tenemos que desarrollar una aplicación que debe almacenar unas 500.000
imágenes por mes, normalmente de entre 300 KB y 1 MB, aunque puede haber
algunas más grandes. La aplicación hará uso intensivo de esas
imágenes almacenadas, tanto para visualizarlas como para editarlas
(rotarlas, recortarlas, etc.).
Esta aplicación podría usar SQL Server 2008, así que estamos analizando el
uso de VarBinary(Max) FILESTREAM para que se guarden las imágenes fuera de
la DB, pero tenemos dudas de su uso y aún no tenemos referencias (buenas ni
malas) de esta nueva característica. Hemos tenido malas experiencias con el
file system, cuando se almacena un número muy grande de archivos en la misma
carpeta.
También encontramos SQL Remote Blob Storage (RBS) . Según pudimos leer, los
fabricantes de hardware de almacenamiento masivo proveen una API para que se
pueda usar RBS mediante SQL Server. ¿Alguien tuvo experiencia en el uso de
esta tecnología con SQL Server?
Obviamente, apreviamos cualquier recomendación de tecnología o de buenas
prácticas.
Muchas gracias, saludos.
<http://www.ksoft.com.ar/>
Diego Cepero
Desarrollo
[email protected]
Rioja 2747 PB (S2000OJK)
Rosario - Argentina
(0341) 440-3181
<<image001.jpg>>
