Mysql
 sql >> Database >  >> RDS >> Mysql

Come memorizzare le immagini nel database MySQL

MySQL è tra i più diffusi sistemi di gestione di database. Può essere utilizzato per archiviare e recuperare 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 è archiviare le immagini nelle directory del file system e memorizzare i riferimenti alle foto nel database come SQL e MySQL, ad esempio, il percorso dell'immagine, il nome dell'immagine e così via. In alternativa, puoi anche conservare le immagini su una CDN o su numerosi host in una vasta distesa di territorio sostanziale e mantenere i loro riferimenti per accedere a tali risorse in quel database.

In questo modo, non ci viene richiesto di conservare l'intera immagine nel database ma di memorizzare solo il percorso dell'immagine memorizzata in una cartella. La memorizzazione delle immagini è utile se le immagini saranno sempre nella stessa cartella, ovvero se ogni immagine avrà il suo percorso univoco 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 al file immagine, quindi se l'immagine deve essere spostata, non ci sarebbe l'obbligo di modificare il database.

Possiamo aggiornare una tabella esistente per aggiungere un campo del percorso dell'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 delle immagini. In questo modo, più tabelle possono memorizzare le immagini in un'unica tabella. Puoi utilizzare la tabella sotto indicata per memorizzare le tue 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 archiviata e il titolo è facoltativo per ottenere input dagli utenti che caricano l'immagine. Inoltre, la colonna del tipo può decidere se l'immagine è archiviata localmente o su una CDN. Se è archiviato localmente, possiamo utilizzare la directory della colonna per specificare il percorso in cui è archiviata l'immagine. Nel caso della CDN, possiamo utilizzare l'URL della colonna per ottenere il percorso di base dell'immagine. Oltre a tipo, directory e URL, possiamo anche utilizzare Small, Medium e Large per archiviare 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 archiviate su un disco; possiamo contenere un URL invece di un percorso immagine e recuperare immagini da qualsiasi posizione accessibile a Internet.

Memorizza immagine nella tabella MySQL

Un altro modo per archiviare un'immagine nel database MySQL è archiviarla nella tabella stessa. Le dimensioni delle immagini possono essere piuttosto grandi, a volte superiori a 1 o 2 MB. Pertanto, l'archiviazione di immagini in un database può aumentare il carico sul database e sulla 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. Devi prima ripristinarli dal database prima di eseguire altre operazioni.


Ci sono alcune eccezioni in cui l'intero database è archiviato nella RAM. I database MySQL vengono archiviati 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 la tabella Immagine 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 delle immagini 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;

Riepilogo

Questo tutorial ha fornito le opzioni per archiviare le immagini utilizzando il database MySQL. Lo stesso approccio può essere seguito per altri database.