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

Comment stocker des images dans la base de données MySQL

MySQL fait partie des systèmes de gestion de bases de données populaires. Il peut être utilisé pour stocker et récupérer des données conçues en fonction des applications. La plupart des applications sont nécessaires pour gérer les images. Ce tutoriel fournit les options pour stocker des images dans une table MySQL.

Remarques :Des professionnels peuvent vous aider à développer une base de données d'images pour votre entreprise ou votre projet.

Stocker le chemin de l'image

L'approche la plus simple consiste à stocker les images dans des répertoires du système de fichiers et à stocker les références aux photos dans la base de données comme SQL et MySQL, par exemple, le chemin d'accès à l'image, le nom de l'image, etc. Alternativement, vous pouvez même conserver des images sur un CDN ou sur de nombreux hôtes sur une grande étendue de territoire substantiel et conserver leurs références pour accéder à ces ressources dans cette base de données.

De cette manière, nous ne sommes pas obligés de conserver l'image entière dans la base de données mais de stocker uniquement le chemin d'accès à l'image stockée dans un dossier. Le stockage des images est bon si les images seront toujours dans le même dossier, c'est-à-dire si chaque image aura son chemin unique qui sera toujours le même. Cependant, dans certains cas, les images doivent être transférées d'un dossier à un autre. Dans ce cas, la meilleure solution est de créer un chemin dynamique vers le fichier image, ainsi si l'image doit être déplacée, il n'y aura aucune obligation de modifier la base de données.

Nous pouvons mettre à jour une table existante pour ajouter un champ de chemin d'image comme indiqué ci-dessous.

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

Une autre approche consiste à créer une table séparée pour les images et à ajouter une référence dans les tables à l'aide de la table d'images. De cette façon, plusieurs tables peuvent stocker les images dans une seule table. Vous pouvez utiliser le tableau ci-dessous pour stocker vos images.

// 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;

Dans le tableau mentionné ci-dessus, le nom est le nom réel de l'image stockée et le titre est facultatif pour obtenir les commentaires des utilisateurs qui téléchargent l'image. De plus, la colonne de type peut décider si l'image est stockée localement ou sur un CDN. S'il est stocké localement, nous pouvons utiliser le répertoire de la colonne pour spécifier le chemin où l'image est stockée. Dans le cas de CDN, nous pouvons utiliser l'URL de la colonne pour obtenir le chemin de base de l'image. Outre le type, le répertoire et l'URL, nous pouvons également utiliser petit, moyen et grand pour stocker la même image dans plusieurs tailles.

Lorsque vous avez besoin d'utiliser les images, récupérez-les du disque en utilisant le chemin spécifié. L'avantage de cette approche est que les images n'ont pas nécessairement besoin d'être stockées sur un disque; nous pouvons conserver une URL au lieu d'un chemin d'image et récupérer des images à partir de n'importe quel emplacement accessible par Internet.

Stocker l'image dans la table MySQL

Une autre façon de stocker une image dans la base de données MySQL consiste à la stocker dans la table elle-même. La taille des images peut être assez grande, parfois supérieure à 1 ou 2 Mo. Ainsi, le stockage d'images dans une base de données peut imposer une charge supplémentaire à votre base de données et au réseau entre votre base de données et votre serveur Web s'ils se trouvent sur des hôtes distincts.


Dans cette approche, les fichiers image peuvent être difficiles à gérer. Vous devez d'abord les restaurer à partir de la base de données avant d'effectuer d'autres opérations.


Il existe quelques exceptions où la totalité de la base de données est stockée dans la RAM. Les bases de données MySQL sont séquentiellement stockées sur un disque. Cela signifie que vos fichiers image de base de données sont convertis en blobs, intégrés dans une base de données, puis conservés sur un disque. Nous pouvons éviter beaucoup de problèmes en les stockant simplement sur un disque comme mentionné dans la première approche.

Créez maintenant la table Image pour stocker les images dans la base de données. J'ai utilisé id pour identifier chaque image et légende pour stocker le nom de l'image à des fins d'affichage. La colonne d'images stocke l'image dans la table en utilisant le type de données comme 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;

Résumé

Ce tutoriel a fourni les options pour stocker des images à l'aide de la base de données MySQL. La même approche peut être suivie pour d'autres bases de données.