Quand est-ce l'utilisation de MySQL BLOB recommandé?
Je suis codage d'une application qui sera le téléchargement et la suppression de plusieurs fichiers, j'ai l'habitude de simplement déplacer les fichiers vers un dossier dans le serveur de nommage avec la ligne unique id
. Mais ce que je comprends MySQL me permet aussi de stocker des données binaires (fichiers) quand cela serait-il un meilleur choix?.
Veuillez utiliser des arguments solides, comme Quand
n'utilisant BLOB de performance moyenne
amélioration?.
P. S: je suis en utilisant MyISAM si ce qui compte.
Grâce.
Mise à JOUR:
Questions liées:
- Le stockage des Images dans la bd - Oui ou Non?
- À faire ou Ne Pas faire: Stocker des Images dans une Base de données (merci à Sébastien)
Mise à JOUR 2
Stocker les fichiers dans la base de données est
pas besoin j'essaie de savoir quand
est-ce une meilleure idée que de stocker
dans les dossiers.
Vous devez vous connecter pour publier un commentaire.
Lire:
qui conclut
Si vous utilisez MyISAM db moteur de champs BLOB peut être indexé ainsi, vous pouvez effectuer des recherches rapides sur vos fichiers à l'aide de la base de données.
Aussi un autre avantage de stocker les fichiers dans les champs BLOB, c'est qu'ils peuvent être consultées de manière plus efficace que les fichiers sur le disque (il n'est pas nécessaire pour la traversée de répertoire, ouvrir, lire, fermer).
Si vous prévoyez de stocker beaucoup de fichiers dans le serveur MYSQL, il est généralement une bonne pratique d'avoir les fichiers stockés dans un tableau distinct. Cela vous permet de scanner les méta-informations sans trébucher sur les gouttes. Ensuite, lorsque vous avez réellement besoin de récupérer une goutte, la JOINTURE est suffisamment efficace.
Bien, c'est un peu vieux, mais cet article fait un peu décente arguments pour le stockage BLOB: http://www.dreamwerx.net/site/article01.
Alors que pas un gain de performance en soi, d'avoir vos images et autres joyeusetés dans une DB plutôt que dans un répertoire doit également éliminer les problèmes avec le hotlinking (en supposant que c'est une application web qui est publiquement disponible).
Êtes-vous lié à l'utilisation de MySQL? Si pas, essayez un ODBMS ou PostgreSQL pour stocker des fichiers, ou vous pouvez stocker seulement les chemins d'accès aux fichiers. Voir cette par exemple.
Memcache est pas une solution de rechange que vous avez besoin pour gérer la redondance et de la TTL distribués à travers les serveurs qui le rendent plus difficile à maintenir.
La meilleure solution à mon avis est de mettre le public à des données statiques sur CA qui est distribué par la conception et privés de données statiques sur la base de données pour en faciliter la distribution à travers de multiples serveurs.
Chaque serveur peut mettre en œuvre son propre Memcache sur chaque coup.
Si vous avez déjà des données stockées dans le système de fichiers et que vous souhaitez migrer dans la base de données, le plus simple est de créer une clé,valeur le tableau suivant:
KEY='/image/filename' (chaîne de la localisation du système de fichiers), valeur=BLOB (le fichier) et de créer un wrapper qui va obtenir ce à partir de la base de données avec l'aide de la règle de réécriture et de l'application de la manipulation. De cette façon, vous pouvez utiliser la pleine transparence avec votre code existant.