Quelle est la meilleure façon de stocker des données binarys (images, pdf, mp3, videos 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?
Merci d'avance 😉
Pour stocker des données binarys dans MySQL Blob peut être utilisé: MySQL Manuel: 10.4.3. Les types BLOB et TEXT
Bien que ce ne soit pas vraiment nécessaire, je ne stockerai pas de données binarys dans une database, car les raisons centrales pour stocker des données dans MySQL (comme Join, Index, …) peuvent difficilement être utilisées avec ces types de données. Blob dégrade également les performances globales de la database.
Peut-être construisez-vous une table séparée pour les files où vous stockez plusieurs aspects et un path de système de files …
Dans Oracle, j'utiliserais une colonne BLOB pour stocker de tels objects. De cette façon, l'intégrité et la security 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 file sur le système de files externe – un file qui peut avoir été déplacé, supprimé, modifié ou même perdu lorsque vous essayez d'y accéder.
Eh bien, je garde des images sur disque, j'en ai beaucoup, et je ne veux pas imaginer le cauchemar de la maintenance. Ma database (mysql) jusqu'à présent est inférieure à 5 Go, et je suis bien avec les ~ 50 Go de files jpeg (chaque image a plusieurs tailles enregistrées). Stocker des images dans une database séparée (avec un controller 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.
J'utiliserais la database uniquement pour stocker des métadonnées de files (taille, type MIME, tags, etc.). Pour le bien de l'intégrité et de la security des données, je ferais mieux de décharger la gestion des données binarys vers un service spécialisé tel que le S3 d'Amazon .
En ce qui concerne l'intégrité des données: je éviterais de surcharger le server DB en effectuant des transactions impliquant de gros blobs. Au lieu de cela, je suggère de stocker les files d'abord et d'effectuer une «collecte de place» asynchronous périodique.
Je n'ai jamais utilisé le moteur de stockage PBMS, mais cela ressemble à une façon de procéder:
Blob en streaming