MySQL è tra i sistemi di gestione di database popolari. Può essere utilizzato per memorizzare e recuperare i dati progettati in base alle applicazioni. La maggior parte delle applicazioni sono necessarie per gestire le immagini. Questo tutorial fornisce le opzioni per memorizzare le immagini in una tabella MySQL.
Note: I professionisti possono aiutarti con lo sviluppo di database di immagini per la tua azienda o il tuo progetto.
Memorizza il percorso dell’immagine
L’approccio più semplice consiste nel memorizzare le immagini nelle directory sul file system e memorizzare i riferimenti alle foto nel database come SQL & MySQL, ad esempio, il percorso dell’immagine, il nome dell’immagine e così via. In alternativa, si può anche mantenere le immagini su un CDN o numerosi host in una grande distesa di territorio sostanziale e mantenere i loro riferimenti per accedere a tali risorse in quel database.
In questo modo, non siamo tenuti a tenere l’intera immagine nel database ma a memorizzare solo il percorso dell’immagine memorizzata in una cartella. Memorizzare le immagini è buono se le immagini saranno sempre nella stessa cartella, cioè se ogni immagine avrà il suo percorso unico che sarà sempre lo stesso. Tuttavia, in alcuni casi, le immagini devono essere trasferite da una cartella all’altra. In tal caso, la soluzione migliore è creare un percorso dinamico del file immagine, quindi se l’immagine deve essere spostata, non ci sarebbe alcun obbligo di modificare il database.
Possiamo aggiornare una tabella esistente per aggiungere un campo percorso immagine come mostrato di seguito.
// Add column to store image path
ALTER TABLE `my_table`
ADD COLUMN `image_pathLocation` varchar(1024)
Un altro approccio consiste nel creare una tabella separata per le immagini e aggiungere un riferimento nelle tabelle utilizzando la tabella immagine. In questo modo, più tabelle possono memorizzare le immagini in un’unica tabella. È possibile utilizzare la tabella sottostante per memorizzare le immagini.
// 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;
Nella tabella sopra menzionata, il nome è il nome effettivo dell’immagine memorizzata e il titolo è facoltativo per ottenere input dagli utenti che caricano l’immagine. Inoltre, la colonna tipo può decidere se l’immagine è memorizzata localmente o su una CDN. Se è memorizzato localmente, possiamo utilizzare la directory delle colonne per specificare il percorso in cui è memorizzata l’immagine. Nel caso di CDN, possiamo usare l’URL della colonna per ottenere il percorso di base dell’immagine. Oltre a tipo, directory e URL, possiamo anche usare small, medium e large per memorizzare la stessa immagine in più dimensioni.
Quando è necessario utilizzare le immagini, recuperarle dal disco utilizzando il percorso specificato. Il vantaggio di questo approccio è che le immagini non devono necessariamente essere memorizzate su un disco; possiamo contenere un URL invece di un percorso di immagine e recuperare le immagini da qualsiasi posizione accessibile a Internet.
Memorizza l’immagine nella tabella MySQL
Un altro modo per memorizzare un’immagine nel database MySQL è memorizzarla nella tabella stessa. Le dimensioni delle immagini possono essere abbastanza grandi, a volte più grandi di 1 o 2 MB. Pertanto, la memorizzazione delle immagini in un database può caricare ulteriormente il database e la rete tra il database e il server Web se si trovano su host separati.
In questo approccio, i file di immagine possono essere difficili da gestire. È necessario innanzitutto ripristinarli dal database prima di eseguire altre operazioni.
Ci sono alcune eccezioni in cui l’intero database è memorizzato nella RAM. I database MySQL sono memorizzati in sequenza su un disco. Ciò significa che i file di immagine del database vengono convertiti in blob, incorporati in un database e quindi conservati su un disco. Possiamo evitare molti problemi semplicemente memorizzandoli su un disco come menzionato nel primo approccio.
Ora crea l’immagine della tabella per memorizzare le immagini nel database. Ho usato id per identificare ogni immagine e didascalia per memorizzare il nome dell’immagine a scopo di visualizzazione. La colonna immagine memorizza l’immagine nella tabella utilizzando il tipo di dati come 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;
Sommario
Questo tutorial ha fornito le opzioni per memorizzare le immagini utilizzando il database MySQL. Lo stesso approccio può essere seguito per altri database.