J'ai déjà expérimenté différents projets avec les deux méthodes et nous avons finalement décidé qu'il était également plus facile d'utiliser le système de fichiers. Après tout, le système de fichiers est déjà optimisé pour stocker, récupérer et indexer des fichiers. Le conseil que je voudrais à ce sujet est de stocker seulement un chemin "racine relative" au fichier dans la base de données, puis avoir votre programme ou vos requêtes/procédures stockées/middleware utiliser un paramètre racine spécifique à l'installation récupérer le fichier.
Par exemple, si vous stockez XYZ.Wav dans C: \ MyProgram \ Data \ sounds \ X \ le chemin complet serait
C:\MyProgram\Data\Sounds\X\XYZ.Wav
Mais vous stockerait le chemin et le nom de fichier ou dans la base de données :
X\XYZ.Wav
Ailleurs, dans la base de données ou dans votre fichiers de configuration du programme, mémoriser un chemin racine comme SoundFilePath égale à
C: \ MyProgram \ Data \ Sounds \
Bien sûr, vous devez séparer la racine du chemin de la base de données. De cette façon, si vous déplacez l'installation de votre programme, vous n'avez pas besoin de mettre à jour la base de données.
De plus, s'il va y avoir beaucoup de fichiers, trouver un moyen de hachant les chemins de sorte que vous ne liquidez pas avec un répertoire contenant des centaines ou des milliers de fichiers (dans mon petit exemple, il y a des sous-répertoires basé sur le premier caractère du nom de fichier, mais vous pouvez aller plus loin ou utiliser des hachages aléatoires). Cela rend les indexeurs de recherche heureux aussi.
Bon message! Je ne vous copiais pas, je tapais ma réponse pendant que vous étiez en poste :-) – CMPalmer
Cette mise en œuvre a des problèmes d'évolutivité, lorsque vous obtenez 2+ serveurs web votre toast. – DreamWerx
La solution d'évolutivité dans notre cas était un serveur dédié pour stocker les fichiers avec un service Web fonctionnant sur lui pour l'archivage et la récupération. Vous lui donnez un fichier, il le stocke et vous dit où il l'a mis. N'importe quel nombre de serveurs d'application frontaux peut stocker et récupérer des fichiers. – CMPalmer