2010-06-22 5 views
6

Quelle est la meilleure façon de stocker des données binaires (images, pdf, mp3, vidéos ect) dans mysql et pourquoi? Ce que j'aimerais savoir, c'est comment vous le faites (en tant que développeurs) et pourquoi? Aussi comment les grands sites le font-ils?Quelle est la meilleure façon de stocker des données binaires (images, pdf, mp3, vidéos ect) dans mysql et pourquoi?

Merci d'avance ;-)

+1

Pourquoi est-ce marqué pour Oracle? –

+0

Je pensais que c'était une question rdbms en général – Imran

+2

Mais votre question dit "dans mysql" pas "dans une base de données"! En fait, c'est le genre de choses que les différents SGBD ont tendance à faire différemment. –

Répondre

4

Pour stocker des données binaires dans MySQL Blob peut être utilisé: MySQL Manuel: 10.4.3. The BLOB and TEXT Types

Bien que si ce n'est pas vraiment nécessaire, je ne stocker des données binaires dans un base de données, car les raisons centrales pour stocker des données dans MySQL, etc. (comme Join, Index, ...) peuvent difficilement être utilisées avec ces types de données. Blob dégrade également les performances globales de la base de données.

Peut-être que vous construisez une table séparée pour les fichiers où vous stockez plusieurs aspects et un chemin de système de fichiers ...

+2

Je ne sais pas, j'ai vu des téraoctets de données binaires stockées dans des bases de données Oracle, puis diffusées à partir de celui-ci. Ce n'est pas nécessairement une mauvaise idée. – Artefacto

+0

Je n'ai pas écrit que c'est généralement une mauvaise idée - il y a des exemples et des cas d'utilisation pour et contre Blobs. Néanmoins, il devrait y avoir - à mon avis - de bonnes raisons et le bon réglage (par exemple, tablespaces séparées, ...) quand quelqu'un veut utiliser de telles techniques. – FloE

+0

Un BLOB est le chemin à parcourir. Stocker le chemin a des problèmes certains. Si les fichiers sont déplacés, vos pointeurs sont corrompus. La sauvegarde de la base de données devient relativement inutile. Les opérations disponibles sur les données ne déterminent pas les caractéristiques de stockage. –

3

Dans Oracle j'utiliser une colonne BLOB pour stocker ces objets. De cette façon, l'intégrité et la sécurité des données sont assurées de la même manière que toutes les autres données. L'alternative est d'utiliser un BFILE qui est un pointeur vers un fichier sur le système de fichiers externe - un fichier qui peut avoir été déplacé, supprimé, modifié ou même perdu lorsque vous essayez d'y accéder.

+0

+1 Ayant dû gérer à la fois les magasins BLOB et les pointeurs de système de fichiers lors de la création de sites Web, je préfère de loin le stockage BLOB avec un cache de système de fichiers avant de servir. –

0

Je n'ai jamais utilisé le moteur de stockage SGPA, mais il ressemble à un chemin à parcourir:

Blob streaming

1

Eh bien, je garde des images sur le disque, j'ai beaucoup et beaucoup d'entre eux et je ne Je veux imaginer le cauchemar de l'entretien que cela pourrait être. Ma base de données (mysql) jusqu'à présent est inférieure à 5 Go, et je suis bien avec les ~ 50 Go de fichiers jpeg (chaque image a plusieurs tailles enregistrées). Stocker des images dans une base de données séparée (avec un contrôleur de raid séparé peut-être) peut être une bonne chose si c'est bien fait, mais je crois que le système est plus rapide de les stocker sur le disque.

1

J'utiliserais la base de données uniquement pour stocker des métadonnées de fichiers (taille, type MIME, balises, etc.). Par souci d'intégrité et de sécurité des données, je ferais mieux de transférer la gestion des données binaires à un service spécialisé tel que Amazon's S3. En ce qui concerne l'intégrité des données: Je éviterais de surcharger le serveur de base de données en effectuant des transactions qui impliquent des gros objets blob. Au lieu de cela, je suggère de stocker les fichiers d'abord et d'effectuer une «collecte de place» asynchrone périodique.

Questions connexes