Saltar al contenido

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

Haz todo lo posible por interpretar el código de forma correcta previamente a usarlo a tu trabajo si ttienes algo que aportar puedes dejarlo en los comentarios.

Solución:

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 formato en una columna (o archivo) binaria (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 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 IO, y está generando la imagen regularmente en base64, 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.

  • profesional base64: la representación codificada que maneja es bastante segura string. No contiene caracteres de control ni comillas. El último punto ayuda contra los intentos de inyección de SQL. No esperaría ningún problema para simplemente agregar el valor a una consulta SQL “codificada a mano” string.

  • Blob profesional: el software del administrador de la base de datos sabe qué tipo de datos debe esperar. Puede optimizar para eso. Si almacenara base64 en un campo de TEXTO, podría intentar crear algún índice u otra estructura de datos para él, lo que sería realmente bueno y útil para datos de texto “reales”, pero sin sentido y una pérdida de tiempo y espacio para datos de imagen. Y es la representación más pequeña, en número de bytes.

Solo quiero dar un ejemplo de por qué decidimos almacenar la imagen en DB, no en archivos o CDN, está almacenando imágenes de firmas.

Hemos intentado hacerlo a través de CDN, almacenamiento en la nube, archivos, y finalmente decidimos almacenar en base de datos y estamos contentos con la decisión, ya que se demostró que teníamos razón en nuestros eventos posteriores cuando nos mudamos, actualizamos nuestros scripts y migramos los sitios varias veces.

Para mi caso, queríamos que las firmas estuvieran con los registros que pertenecen al autor de los documentos.

El almacenamiento en formato de archivos corre el riesgo de perderlos o eliminarlos por accidente.

Lo almacenamos como un formato binario blob en MySQL y luego como una imagen codificada en base a 64 en un campo de texto. La decisión de cambiar a based64 se debió a un tamaño más pequeño como resultado por alguna razón y una carga más rápida. Blob estaba ralentizando la carga de la página por algún motivo.

En nuestro caso, esta solución para almacenar imágenes de firma en DB (ya sea como blob o based64) fue impulsada por:

  1. La mayoría de las imágenes de la firma son muy pequeñas.
  2. No necesitamos indexar las imágenes de firma almacenadas en DB.
  3. El índice se realiza en el primario. key.
  4. Es posible que tengamos que mover o cambiar de servidor, mover archivos de imágenes físicas a diferentes servidores, puede causar que las imágenes no se encuentren debido al cambio de enlaces.
  5. da vergüenza pedirle al autor que vuelva a firmar sus firmas.
  6. es más seguro guardarlo en la base de datos en comparación con exponerlo como archivos que se pueden descargar si la seguridad se ve comprometida. El almacenamiento en DB nos permite un mejor control sobre su acceso.
  7. cualquier migración futura, cambio de diseño web, alojamiento, servidores, no tenemos preocupaciones sobre la conciliación de los nombres de los archivos de firma con los archivos físicos, ¡todo está en la base de datos!

C.A.

Si te gusta el proyecto, tienes la habilidad dejar una noticia acerca de qué te ha impresionado de esta sección.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *