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

MySQL est parmi les systèmes de gestion de base 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: Les professionnels peuvent vous aider dans le développement de bases de données d’images pour votre entreprise ou votre projet.

Stocker le chemin d’image

L’approche la plus simple consiste à stocker des images dans des répertoires du système de fichiers et à stocker des références aux photos dans la base de données comme SQL & 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 de nombreux hôtes sur une grande étendue de territoire considérable et conserver leurs références pour accéder à ces ressources dans cette base de données.

De cette façon, nous ne sommes pas tenus 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. Stocker 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, donc si l’image doit être déplacée, il n’y aurait 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 en cours de stockage, et le titre est facultatif pour obtenir l’entrée des utilisateurs téléchargeant l’image. En outre, la colonne type peut décider si l’image est stockée localement ou sur un CDN. Si elle est stockée localement, nous pouvons utiliser le répertoire de colonnes pour spécifier le chemin d’accès où l’image est stockée. Dans le cas du 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 small, medium et large pour stocker la même image dans plusieurs tailles.

Lorsque vous devez utiliser les images, récupérez-les à partir 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 contenir une URL au lieu d’un chemin d’image et récupérer des images à partir de n’importe quel emplacement accessible sur 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 charger davantage votre base de données et le 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 y a quelques exceptions où la base de données entière est stockée dans la RAM. Les bases de données MySQL sont stockées séquentiellement sur un disque. Cela signifie que vos fichiers d’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 l’image de table 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 image stocke l’image dans le tableau en utilisant le type de données as 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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.