Ma question est assez générique et je sais qu'il n'y aura peut-être pas de réponse à 100%. Je construis une solution Web ASP .NET qui comprendra beaucoup d'images et, espérons-le, une bonne quantité de trafic. Je veux vraiment atteindre la performance.
Dois-je enregistrer les images dans la base de données ou sur le système de fichiers? Et quelle que soit la réponse, je suis plus intéressé par pourquoi choisir une manière spécifique.
Merci beaucoup, Stefan
DUPLICATE : Stockage d'images dans DB - Oui ou non? , Comment stocker des images dans votre système de fichiers , Stocker un petit nombre d'images: blob ou fs? et probablement quelques autres.
COMMENTAIRE: Merci pour beaucoup de bonnes réponses. Je vais opter pour une solution basée sur des fichiers même si j'aime l'idée d'avoir une solution 100% basée sur une base de données. Il semble qu'il existe aujourd'hui de bonnes solutions pour faire ce que je veux avec les bases de données, etc. mais j'ai quelques raisons pour ne pas le faire.
Je serai sur une solution hébergée, j'ai une énorme quantité de stockage (10 Go) mais seulement 300 Mo pour la base de données. Le stockage supplémentaire dans la base de données coûtera cher.
Je ne suis pas un expert de la base de données et je ne contrôle pas non plus les paramètres de la base de données. Une solution basée sur la base de données peut nécessiter une configuration personnalisée telle qu'elle ressemble.
Si nous allons passer à exécuter le site sur notre propre serveur, je pourrais envisager une solution basée sur la base de données. merci, Stefan
la source
Réponses:
Stockez les images sur le système de fichiers et les emplacements des images dans la base de données.
Pourquoi? Car...
la source
Dans mes projets récemment développés, j'ai stocké des images (et toutes sortes de documents binaires) sous forme de colonnes d'images dans des tables de base de données.
L'avantage d'avoir des fichiers stockés dans la base de données est évidemment que vous ne vous retrouvez pas avec des fichiers non référencés sur le disque dur si un enregistrement est supprimé, car la synchronisation entre la base de données (= méta-données) et le disque dur (= stockage de fichiers) n'est pas intégrée et doit être programmé manuellement.
En utilisant la technologie actuelle, je vous suggère de stocker des images dans des colonnes FILESTREAM de SQL Server 2008 (du moins c'est ce que je vais faire avec mon prochain projet), car elles combinent l'avantage de stocker des données dans une base de données ET d'avoir de gros binaires dans des fichiers séparés (à moins selon la publicité;))
la source
L'adage a toujours été "Fichiers dans le système de fichiers, métadonnées de fichier dans la base de données"
la source
Mieux vaut stocker les fichiers sous forme de fichiers. Différentes bases de données traitent les données Blob différemment, donc si vous devez migrer votre back-end, vous risquez d'avoir des problèmes.
Lors du service des impages, un <img src = vers un fichier qui existe déjà sur le serveur sera probablement plus rapide que de créer un fichier temporaire à partir du champ de la base de données et de pointer la balise <img vers celui-ci.
J'ai trouvé cette réponse en recherchant votre question sur Google et en lisant les commentaires sur http://databases.aspfaq.com/database/should-i-store-images-in-the-database-or-the-filesystem.html
la source
J'aime généralement avoir des fichiers binaires dans la base de données parce que:
la source
Le stockage d'images dans la base de données ajoute une surcharge de base de données pour servir des images uniques et rend difficile le déchargement vers un stockage alternatif (S3, Akami) si vous atteignez ce niveau. En les stockant dans la base de données, il est beaucoup plus facile de déplacer votre application vers un autre serveur, car seule la base de données doit être déplacée maintenant.
Le stockage d'images sur le disque facilite le déchargement vers un stockage alternatif, rend les éléments statiques pour que vous n'ayez pas à vous soucier des en-têtes HTTP dans votre application Web pour rendre les images mises en cache. L'inconvénient est que si jamais vous déplacez votre application vers un autre serveur, vous devez également vous rappeler de déplacer les images; quelque chose qui est facilement oublié.
la source
Pour les applications Web, vous obtiendrez de meilleures performances en utilisant le système de fichiers pour stocker vos images. Cela vous permettra de mettre en œuvre facilement la mise en cache des images à plusieurs niveaux au sein de votre application. Le stockage d'images dans une base de données présente certains avantages, mais la plupart du temps, ces avantages sont associés aux applications client.
la source
Juste pour ajouter un peu plus aux réponses déjà bonnes jusqu'à présent. Vous pouvez toujours obtenir les avantages de la mise en cache à la fois au niveau du Web peut - être et le niveau de base de données si vous allez l'itinéraire que vous garder des images dans la base de données.
Je pense que pour la base de données, vous pouvez y parvenir en stockant les images par rapport aux données textuelles qui leur sont associées et si vous pouvez accéder aux images dans une requête particulière afin que la base de données puisse mettre en cache la requête (juste de la théorie n'hésitez pas à me bombarder sur cette partie).
Avec le côté web, je suppose que puisque votre question est balisée avec asp.net que vous iriez dans la voie de l'utilisation d'un gestionnaire http pour servir les images. Ensuite, vous avez tous les avantages du framework à votre disposition et vous pouvez garder votre logique de domaine plus propre en n'ayant qu'à passer la clé de votre image au gestionnaire http.
la source
Pourquoi ne pas choisir une base de données NoSql individuelle pour stocker vos fichiers.
Il vous apporte l'intégrité des données, la cohérence des données comme @chburd l'a mentionné.
Alors que vous rdbms, restez petit.
la source
Eclipse
) de stockage d'images dans un système de fichiers et de conservation de leurs métadonnées dans DB - http://www.devmanuals.com/tutorials/java/spring/spring3/mvc /Spring3MVCImageUpload.htmlla source