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

Cómo almacenar imágenes en la base de datos MySQL

MySQL es uno de los sistemas de administració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 una base de datos de imágenes para su empresa o su proyecto.

Almacenar la ruta de la imagen

El enfoque más simple es almacenar imágenes en directorios en el sistema de archivos y almacenar referencias a las fotos en la base de datos como SQL y MySQL, por ejemplo, la ruta a la imagen, el nombre de la imagen, etc. Alternativamente, puede incluso mantener imágenes en un CDN o 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 forma, no estamos obligados a mantener la imagen completa en la base de datos sino a almacenar solo la ruta 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 las tablas usando la tabla de imágenes. De esta forma, varias tablas pueden almacenar las imágenes en una sola tabla. Puede usar 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 cargan la imagen. Además, la columna de tipo puede decidir si la imagen se almacena localmente o en un 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 la columna para obtener la ruta base de la imagen. Además del tipo, el directorio y la URL, también podemos usar pequeño, mediano y grande para almacenar la misma imagen en varios tamaños.

Cuando necesite usar las imágenes, recupérelas del disco usando 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 desde cualquier ubicación con acceso a Internet.

Almacenar imagen en 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, el almacenamiento de imágenes en una base de datos puede generar una carga adicional en su base de datos y en la red entre su base de datos y su servidor web si están en hosts separados.


En este enfoque, los archivos de imágenes pueden ser difíciles de administrar. Primero debe restaurarlos desde la base de datos antes de realizar otras operaciones.


Existen 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 su 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 tabla Imagen para almacenar las imágenes en la base de datos. He usado id para identificar cada imagen y título para almacenar el nombre de la imagen con fines de visualización. La columna de imágenes almacena la imagen en la tabla usando el tipo de datos como 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. Se puede seguir el mismo enfoque para otras bases de datos.