Mysql
 sql >> Base de données >  >> RDS >> Mysql

Stocker l'image dans la base de données directement ou en tant que données base64 ?

Je soutiens que les images (fichiers) ne sont généralement PAS stockées dans une base de données encodée en base64. Au lieu de cela, ils sont stockés sous leur forme binaire brute dans une colonne ou un fichier binaire (blob).

Base64 n'est utilisé que comme mécanisme de transport, pas pour le stockage. Par exemple, vous pouvez intégrer une image encodée en base64 dans un document XML ou un message électronique.

Base64 est également compatible avec les flux. Vous pouvez encoder et décoder à la volée (sans connaître la taille totale des données).

Bien que base64 soit adapté au transport, ne stockez pas vos images encodées en base64 .

Base64 ne fournit aucune somme de contrôle ou quoi que ce soit de valeur pour le stockage.

L'encodage Base64 augmente les besoins en stockage de 33 % par rapport à un format binaire brut. Cela augmente également la quantité de données qui doivent être lues à partir du stockage persistant, qui reste généralement le plus gros goulot d'étranglement de l'informatique. Il est généralement plus rapide de lire moins d'octets et de les encoder à la volée. Uniquement si votre système est lié au processeur au lieu d'être lié aux E/S et que vous produisez régulièrement l'image en base64, envisagez de stocker en base64.

Les images en ligne (images encodées en base64 intégrées dans HTML) sont elles-mêmes un goulot d'étranglement :vous envoyez 33 % de données en plus sur le réseau et le faites en série (le navigateur Web doit attendre les images en ligne avant de pouvoir terminer le téléchargement de la page HTML).

Si vous souhaitez toujours stocker des images encodées en base64, s'il vous plaît, quoi que vous fassiez, assurez-vous de ne pas stocker de données encodées en base64 dans une colonne UTF8 puis indexez-les.