sql >> Base de Datos >  >> RDS >> Mysql

¿Almacenar la imagen en la base de datos directamente o como datos base64?

Sostengo que las imágenes (archivos) generalmente NO se almacenan en una base de datos codificada en base64. En su lugar, se almacenan en su forma binaria sin procesar en una columna o archivo binario (blob).

Base64 solo se usa como mecanismo de transporte, no para almacenamiento. Por ejemplo, puede incrustar una imagen codificada en base64 en un documento XML o en un mensaje de correo electrónico.

Base64 también es compatible con la transmisión. Puede codificar y decodificar sobre la marcha (sin saber el tamaño total de los datos).

Si bien base64 está bien para el transporte, no almacene sus imágenes codificadas en base64 .

Base64 no proporciona ninguna suma de comprobación ni nada de valor para el almacenamiento.

La codificación Base64 aumenta el requisito de almacenamiento en un 33 % en comparación con un formato binario sin formato. También aumenta la cantidad de datos que deben leerse del almacenamiento persistente, que sigue siendo, en general, el mayor cuello de botella en la informática. Por lo general, es más rápido leer menos bytes y codificarlos sobre la marcha. Solo si su sistema está vinculado a la CPU en lugar de a la E/S y genera regularmente la imagen en base64, entonces considere almacenarla en base64.

Las imágenes en línea (imágenes codificadas en base64 incrustadas en HTML) son un cuello de botella en sí mismas:está enviando un 33 % más de datos por cable y haciéndolo en serie (el navegador web tiene que esperar en las imágenes en línea antes de que pueda terminar de descargar la página). HTML).

Si aún desea almacenar imágenes codificadas en base64, haga lo que haga, asegúrese de no almacenar datos codificados en base64 en una columna UTF8 y luego indexarlos.