Escenario: la
base de datos SQL Server 2005 que da servicio a una aplicación ASP.NET (en servidores web separados).
Base de datos:
DB contiene aproximadamente 5 GB de datos "normales" y aproximadamente 15 GB de "archivos" (por ejemplo: un PDF de 200k almacenado como una imagen (BLOB), ese tipo de cosas). Los usuarios están cargando más archivos y están consumiendo rápidamente más espacio en disco (la base de datos podría crecer a 50 GB en los próximos meses, principalmente archivos).
Preocupaciones:
Almacenar tantos archivos en la base de datos ya está causando problemas (por ejemplo: el gran tamaño total de la base de datos hace que las copias de seguridad e implementaciones ocasionales de la base de datos completa sean difíciles).
Y nos preocupa que haya más problemas . (por ejemplo: problemas de rendimiento, ¿tal vez causados por no poder mantener todo el DB en la RAM, tal vez?)
Pregunta:
¿Qué solución técnica sugeriría para este problema? Almacenar los archivos en el sistema de archivos? ¿Divide la base de datos en dos y tiene una más grande y más lenta para los archivos?
Más detalles si es necesario:
estos archivos no son súper importantes y no necesitan tiempos de acceso muy rápidos: un par de segundos estaría bien, y tal vez haya una docena de selecciones por hora como máximo, actualmente. Los otros datos "normales" en la base de datos incluyen información necesaria muchas veces por segundo.
Respuestas:
Cuido una base de datos muy similar, actualmente de 3 TB y creciendo 5 GB por día.
Evalúe los pros y los contras de Filestream y vea si encaja en su caso. En nuestro caso, hemos tomado una ruta diferente y optamos por particionar la base de datos para que podamos hacer uso de la disponibilidad parcial / restauración parcial .
Una opción que no estaba disponible para nosotros, que es posible que tenga, es marcar grupos de archivos antiguos / archivados como de solo lectura. Los grupos de archivos de solo lectura se pueden respaldar con poca frecuencia.
Si está atascado en el estándar 2005 (la partición es una característica de la edición Enterprise) y tiene la opción de solo lectura para el historial, puede abordar esto a la antigua usanza.
Una última opción (que estamos considerando para nuestro blobber de 3TB) es mover los datos del archivo a una base de datos de documentos o almacenamiento en la nube (por ejemplo , AmazonS3 , Azure BLOB Storage ). Esto introduce el problema de consistencia transaccional que mencioné anteriormente, pero quita la carga de esos servidores SQL muy caros.
fuente
pruebe la función FILESTREAM en el servidor SQL,
FILESTREAM integra el Motor de base de datos de SQL Server con un sistema de archivos NTFS mediante el almacenamiento de datos varbinary (max) binary large object (BLOB) como archivos en el sistema de archivos
buenos artículos al respecto
fuente