Scénario:
base de données SQL Server 2005 desservant une application ASP.NET (sur des serveurs Web distincts).
Base de données:
DB contient environ 5 Go de données «normales» et environ 15 Go de «fichiers» (par exemple: un PDF de 200 Ko stocké sous forme d'image (BLOB), ce genre de chose). Les utilisateurs téléchargent davantage de fichiers et consomment rapidement plus d'espace disque (la base de données pourrait atteindre 50 Go au cours des prochains mois, principalement des fichiers).
Préoccupations: Le fait de
stocker autant de fichiers dans la base de données pose déjà des problèmes (par exemple: la grande taille totale de la base de données rend les sauvegardes et les déploiements occasionnels de toute la base de données difficiles).
Et nous craignons qu'il n'y ait plus de problèmes . (par exemple: problèmes de performances - peut-être causés par le fait de ne pas pouvoir conserver la base de données entière dans la RAM, peut-être?)
Question:
Quelle solution technique proposeriez-vous à ce problème? Stocker les fichiers dans le système de fichiers? Fractionner la base de données en deux et en avoir une plus grande et plus lente pour les fichiers?
Plus de détails si nécessaire:
ces fichiers ne sont pas super importants et n'ont pas besoin de temps d'accès très rapides - quelques secondes seraient bien, et il y a peut-être une douzaine de sélections par heure au plus, actuellement. Les autres données "normales" de la base de données incluent les informations nécessaires plusieurs fois par seconde.
Réponses:
Je m'occupe d'une base de données très similaire, actuellement 3 To et augmentant de 5 Go par jour.
Pesez les avantages et les inconvénients de Filestream et voyez si cela convient à votre cas. Dans notre cas, nous avons choisi une voie différente et opté pour le partitionnement de la base de données afin de pouvoir utiliser la disponibilité partielle / restauration fragmentaire .
Une option qui ne nous était pas disponible, que vous pourriez avoir, consiste à marquer les groupes de fichiers plus anciens / d'archivage comme étant en lecture seule. Les groupes de fichiers en lecture seule peuvent ensuite être sauvegardés rarement.
Si vous êtes bloqué sur 2005 Standard (le partitionnement est une fonctionnalité de l'édition Enterprise) et que vous avez la possibilité de lire uniquement pour l'historique, vous pouvez résoudre ce problème à l'ancienne.
Une dernière option (que nous envisageons pour notre blobber de 3 To) consiste à déplacer les données du fichier vers une base de données de documents ou un stockage cloud (par exemple AmazonS3 , Azure BLOB Storage ). Cela introduit le problème de cohérence transactionnelle que j'ai mentionné plus tôt, mais il supprime la charge de ces serveurs SQL très chers.
la source
essayez la fonctionnalité FILESTREAM dans SQL Server,
FILESTREAM intègre le moteur de base de données SQL Server à un système de fichiers NTFS en stockant des données de gros objets binaires (BLOB) varbinary (max) sous forme de fichiers sur le système de fichiers
beaux articles à ce sujet
la source