2008-10-09 5 views
4

A un moment je devais développer un site de musique qui permettait de télécharger des fichiers audio sur un site puis de les convertir dans différents formats en utilisant ffmpeg, les fichiers audio téléchargés après leur achat et un fichier tmp seraient créés et placés à l'emplacement de téléchargement et n'étaient valides que pour chaque instance de téléchargement et le fichier tmp serait alors supprimé.Où stocker les fichiers téléchargés (son, images et vidéo)

Maintenant que je revisite le projet, je dois aussi ajouter des images et des vidéos en téléchargement.

Je veux trouver la meilleure méthode pour stocker les fichiers,

option 1: stocker les fichiers dans un dossier et les référencer dans la base de données

option 2: le stockage du fichier réel dans la base de données (mysql) comme blob. Je suis en train de jouer avec cette idée pour considérer les implications de sécurité de chaque méthode, et d'autres problèmes pour lesquels je n'aurais pas pu calculer.

Répondre

12

Voir cette question StackOverflow antérieure Storing images in a database, Yea or nay?.

Je sais que vous avez mentionné des images et des vidéos, mais cette question concerne tous les fichiers multimédias à contenu binaire volumineux.

Le consensus semble être que le stockage des chemins de fichiers vers les images sur le système de fichiers, plutôt que les images réelles est la voie à suivre.

3

Je voudrais aller pour stocker des fichiers directement sur le disque, et la base de données ne détient que leur ID/URL.

De cette façon, l'accès à ces fichiers (qui peuvent être volumineux, les fichiers binaires) ne nécessite aucune opération PHP/base de données, et il est fait directement par le serveur web.
Il sera également plus facile de déplacer ces fichiers vers un autre serveur si vous le souhaitez. En fait, une seule chose que je peux voir, c'est de les sauvegarder dans la base de données est plus facile à sauvegarder - vous voulez sauvegarder votre base de données, vous aurez toutes les données au même endroit et vous serez sûr que chaque sauvegarde est complète (c'est-à-dire que vous n'avez pas de fichiers sur le disque qui ne sont pas utilisés par les entrées de base de données et que vous n'avez pas d'ID d'image dans votre base de données)

1

J'ai demandé un similar question using Oracle comme backend pour une application Windows Forms .

La réponse se résume à vos besoins pour la sauvegarde et la restauration des fichiers. Si cette exigence est importante, utilisez la base de données car elle sera plus facile (puisque vous sauvegardez la base de données, non?)

4

Je vous recommande de stocker en tant que fichiers et de stocker leurs emplacements dans la base de données.

Stocker les fichiers dans une base de données nécessite plus de ressources et rend la sauvegarde/restauration des bases de données plus lente. Voulez-vous vraiment transférer beaucoup de vidéos chaque fois que vous faites un vidage de la base de données? Les systèmes de fichiers fonctionnent très bien pour distribuer des fichiers, et vous pouvez les sauvegarder/synchroniser très facilement.

4

Je voudrais aller à l'option de base de données. Je l'ai utilisé sur un certain nombre de projets, certains très gros 100 + GB. L'implémentation du stockage est la clé, la conçoit mal et vos performances seront sanctionnées.Voir this exemple pour de bonnes idées d'implémentation:
Le stockage de base de données offre plus d'évolutivité et de sécurité.

+0

et est plus simple, donc moins sujet à la corruption ou aux erreurs. – Rolf

Questions connexes