fichier de disque sur le serveur ou binaire pour les fichiers image et du son dans SQL avec une application ASP.Net

StackOverflow https://stackoverflow.com/questions/710976

Question

Je construis une application web ASP.Net C # qui utilisera un bon nombre de fichiers audio et des fichiers image. Considérant la performance, serait-il préférable de stocker tous les fichiers dans SQL en tant que type de données d'image et récupérer à partir de la base de données ou stocker / archiver le fichier disque sur le serveur et stocker le chemin dans sql? Im curieux de connaître les avantages et les inconvénients -. Autre que l'évidence de l'espace et de gestion de stockage

Pas de solution correcte

Autres conseils

Mon client actuel étudie actuellement les mêmes options. Il y a quelques compromis à considérer:

Stockage que l'image type de données:

  • Il vous suffit de sauvegarder votre base de données plutôt que sur la base de données et de mise sur le système de fichiers
  • Vous n'avez pas à vous soucier des fichiers être déplacés sans DB étant mis à jour avec le nouvel emplacement ou tout autre problème avec des pointeurs suspendus à des fichiers non existants

Le stockage sous forme de fichier avec un chemin d'accès dans la base de données:

  • Accès peu plus rapide (nous allons quantifions dans les prochains jours)

Au départ, je pensais qu'il y aurait aussi un problème avec la mise en cache côté client des images. Par exemple, lorsque .NET obtient l'image de la DB le navigateur client ne peut pas le mettre en cache - il ressemble à une nouvelle image à chaque fois. J'ai alors appris que si vous donnez accès au niveau des fichiers utilisateurs (un titre non-non) vous rencontrez le même problème en utilisant un accès direct aux fichiers.

Du point de vue de la performance, vous devriez être mieux stocker les sons / images sous forme de fichiers et juste garder une référence à l'emplacement dans la base de données. Cela vous évitera d'avoir à transférer les données de la base de données sur le serveur Web et reconstituer le « fichier » via un gestionnaire chaque fois qu'il est référencé. Bien sûr, la mise en cache pourrait aider à cela, mais vous auriez encore payer la pénalité pour chaque défaut de cache. Cette solution est aussi, pour mon argent, un peu moins compliqué en termes du code qui doit être développé si vous avez des problèmes avec des collisions et une configuration de sécurité supplémentaire (potentiellement) à faire si vous activez le téléchargement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top