Cómo almacenar imágenes en bases de datos MySQL

MySQL se encuentra entre los sistemas de gestión de bases de datos populares. Se puede utilizar para almacenar y recuperar datos diseñados de acuerdo con las aplicaciones. La mayoría de las aplicaciones son necesarias para gestionar las imágenes. Este tutorial proporciona las opciones para almacenar imágenes en una tabla MySQL.

Notas: Los profesionales pueden ayudarlo con el desarrollo de bases de datos de imágenes para su empresa o proyecto.

Almacenar la ruta de acceso de la imagen

El enfoque más sencillo es almacenar imágenes en directorios del sistema de archivos y almacenar referencias a las fotos en la base de datos como SQL & MySQL, por ejemplo, la ruta de acceso a la imagen, el nombre de la imagen, etc. Alternativamente, puede incluso mantener imágenes en una CDN o en numerosos hosts en una gran extensión de territorio sustancial y mantener sus referencias para acceder a esos recursos en esa base de datos.

De esta manera, no estamos obligados a mantener la imagen completa en la base de datos, sino a almacenar solo la ruta de acceso a la imagen almacenada en una carpeta. Almacenar imágenes es bueno si las imágenes siempre estarán en la misma carpeta, es decir, si cada imagen tendrá su ruta única que siempre será la misma. Sin embargo, en algunos casos, las imágenes deben transferirse de una carpeta a otra. En ese caso, la mejor solución es crear una ruta dinámica al archivo de imagen, por lo que si la imagen tiene que ser movida, no habría obligación de modificar la base de datos.

Podemos actualizar una tabla existente para agregar un campo de ruta de imagen como se muestra a continuación.

// Add column to store image path
ALTER TABLE `my_table`
ADD COLUMN `image_pathLocation` varchar(1024)

Otro enfoque es crear una tabla separada para las imágenes y agregar una referencia en tablas utilizando la tabla de imágenes. De esta manera, varias tablas pueden almacenar las imágenes en una sola tabla. Puede utilizar la tabla mencionada a continuación para almacenar sus imágenes.

// Create the Image table
CREATE TABLE image (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(1024) NOT NULL,
`title` VARCHAR(2048) NULL,
`description` VARCHAR(4096) NULL,
`extension` VARCHAR(160) NULL,
`directory` VARCHAR(512) NULL,
`size` FLOAT NOT NULL,
`type` VARCHAR(50) NOT NULL,
`url` VARCHAR(2048) NULL,
`medium` VARCHAR(1024) NULL,
`small` VARCHAR(1024) NULL,
`thumb` VARCHAR(1024) NULL,
`caption` VARCHAR(1024) NULL,
`altText` VARCHAR(512) NULL,
`createdAt` DATETIME NULL,
`modifiedAt` DATETIME NULL,
PRIMARY KEY (`id`),
INDEX `idx_image_name` (`name` ASC),
INDEX `idx_image_type` (`type` ASC)
) ENGINE = InnoDB;

En la tabla mencionada anteriormente, el nombre es el nombre real de la imagen que se almacena, y el título es opcional para obtener información de los usuarios que suben la imagen. Además, la columna tipo puede decidir si la imagen se almacena localmente o en una CDN. Si se almacena localmente, podemos usar el directorio de columnas para especificar la ruta donde se almacena la imagen. En el caso de CDN, podemos usar la URL de columna para obtener la ruta base de la imagen. Además de tipo, directorio y URL, también podemos usar small, medium y large para almacenar la misma imagen en varios tamaños.

Cuando necesite usar las imágenes, recupérelas del disco utilizando la ruta especificada. La ventaja de este enfoque es que las imágenes no necesariamente tienen que almacenarse en un disco; podemos mantener una URL en lugar de una ruta de imagen y recuperar imágenes de cualquier ubicación accesible por Internet.

Almacenar imagen en la tabla MySQL

Otra forma de almacenar una imagen en la base de datos MySQL es almacenarla en la propia tabla. El tamaño de las imágenes puede ser bastante grande, a veces superior a 1 o 2 MB. Por lo tanto, almacenar imágenes en una base de datos puede suponer una carga adicional para la base de datos y la red entre la base de datos y el servidor web si se encuentran en hosts separados.

En este enfoque, los archivos de imagen pueden ser difíciles de administrar. Primero debe restaurarlos desde la base de datos antes de que se realicen otras operaciones.

Hay algunas excepciones en las que toda la base de datos se almacena en RAM. Las bases de datos MySQL se almacenan secuencialmente en un disco. Esto significa que los archivos de imagen de la base de datos se convierten en blobs, se incrustan en una base de datos y luego se guardan en un disco. Podemos evitar muchos problemas simplemente almacenándolos en un disco como se mencionó en el primer enfoque.

Ahora cree la imagen de tabla para almacenar las imágenes en la base de datos. He utilizado id para identificar cada imagen y leyenda para almacenar el nombre de la imagen con fines de visualización. La columna imagen almacena la imagen en la tabla utilizando el tipo de datos LONGBLOB.

// Create the Image table
CREATE TABLE image (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(1024) NOT NULL,
`title` VARCHAR(2048) NULL,
`description` VARCHAR(4096) NULL,
`extension` VARCHAR(160) NULL,
`size` FLOAT NOT NULL,
`caption` VARCHAR(1024) NULL,
`altText` VARCHAR(512) NULL,
`picture` LONGBLOB NOT NULL,
`createdAt` DATETIME NULL,
`modifiedAt` DATETIME NULL,
PRIMARY KEY (`id`),
INDEX `idx_image_name` (`name` ASC),
INDEX `idx_image_type` (`type` ASC)
) ENGINE = InnoDB;

Resumen

Este tutorial proporcionó las opciones para almacenar imágenes utilizando la base de datos MySQL. El mismo enfoque se puede seguir para otras bases de datos.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.