back to top

MySQL: utilizzare BLOB per archiviare immagini ed altri tipi di file

In MySQL, esiste un particolare tipo di dato che si presta a ospitare grandi volumi di dati, stiamo parlando di BLOB (Binary Large Object). All’interno di un campo di tipo BLOB, รจ possibile archiviare oggetti come immagini, PDF o video. Questa funzionalitร  puรฒ rivelarsi molto vantaggiosa per applicazioni che richiedono la gestione di file di grandi dimensioni, specialmente in contesti in cui la coesione dei dati e l’accesso tramite query sono prioritari.

La comoditร  di archiviare questo tipo di oggetti all’interno di un database puรฒ essere notevole. Tuttavia, รจ bene considerare che l’utilizzo di campi BLOB porta a un aumento esponenziale delle dimensioni del database, con potenziali criticitร , ad esempio, in caso di migrazione. Ad esempio, durante un backup o una ripristino, operazioni sui database di grandi dimensioni possono richiedere tempi significativamente maggiori.

Pubblicitร 

Utilizzare BLOB per archiviare immagini

Come accennato, un campo BLOB puรฒ essere utilizzato per archiviare immagini all’interno di un database MySQL. Questa operazione puรฒ risultare utile in numerosi scenari, come nel caso di piattaforme di e-commerce che devono gestire gallerie di immagini assistite da query efficaci.

Caricare immagini all’interno di un database

Per prima cosa, vediamo come caricare un’immagine all’interno di una ipotetica tabella “immagini”. Utilizzando la seguente query SQL:

INSERT INTO immagini (dati_immagine) VALUES (LOAD_FILE('/var/www/html/img/immagine.jpg'));

Come potete notare, si tratta di una comune operazione di INSERT in cui il valore da inserire nel campo “dati_immagine” รจ restituito dal comando LOAD_FILE, al quale viene passato come argomento il percorso del file da importare. รˆ importante assicurarsi che il server MySQL abbia i permessi per accedere al percorso in cui si trova l’immagine, altrimenti l’operazione fallirร .

Esportare un’immagine salvata in un database

Vediamo ora come sia possibile esportare il contenuto di un campo di tipo BLOB e salvarlo sotto forma di immagine. Di seguito รจ riportata la query che consente di esportare questi dati e ricreare l’immagine originale:

SELECT dati_immagine FROM immagini WHERE id = 123 INTO DUMPFILE '/var/www/html/img/immagine.jpg';

Il valore utilizzato per la selezione del record mediante ID – in questo caso “123” – รจ ovviamente arbitrario; potete utilizzare i criteri di selezione che preferite. Quello che conta รจ l’introduzione del costrutto INTO DUMPFILE, che permette di esportare il contenuto di un campo in un file di cui viene specificato il percorso fisico. Questa operazione รจ utile per recuperare facilmente i dati archiviati nel database e per l’analisi successiva.

Gestione del percorso del file

รˆ fondamentale prestare attenzione alla gestione del percorso del file. Se il percorso fornito non รจ corretto, l’operazione di esportazione fallirร . Inoltre, assicuratevi che la directory in cui si intende esportare il file abbia i permessi adeguati per consentire al server MySQL di scrivere il file. รˆ buona prassi testare i percorsi e i permessi in anticipo.

Campi BLOB e prestazioni

Naturalmente, maggiori saranno le dimensioni del file che si desidera archiviare, maggiori saranno i tempi di esecuzione necessari per il completamento dell’INSERT; lo stesso discorso vale anche per quanto riguarda la grandezza dei dati da esportare tramite la SELECT. L’aumento delle dimensioni del database puรฒ portare anche a operazioni di manutenzione piรน lunghe e complesse.

Come giร  detto all’inizio di questo articolo, l’utilizzo di campi BLOB, nonostante l’indiscussa utilitร , deve essere valutato attentamente. Puรฒ avere ricadute in termini di prestazioni e di “maneggevolezza” dei dati. Inoltre, in scenari di alto traffico, l’accesso a file di grandi dimensioni puรฒ rallentare le performance generali del database, rendendo opportuno il monitoraggio delle query eseguite.

Alternative ai campi BLOB

In alcuni casi, potrebbe essere piรน vantaggioso archiviare i file al di fuori del database e memorizzare nel database solo il percorso del file. Questa pratica, conosciuta come “file streaming”, puรฒ migliorare le prestazioni e semplificare il backup e il ripristino. In questo modo, i dati rimangono facilmente accessibili senza aumentare drasticamente le dimensioni del database. Ad esempio, si possono utilizzare sistemi di gestione file o server di archiviazione dedicati.

Altri contenuti interessanti

Pubblicitร 

Potrebbero interessarti queste guide

Claudio Garau
Claudio Garau
Web developer, programmatore, Database Administrator, Linux Admin, docente e copywriter specializzato in contenuti sulle tecnologie orientate a Web, mobile, Cybersecurity e Digital Marketing per sviluppatori, PA e imprese.

Leggi anche...

Come ottenere l’ID dell’ultimo record inserito in MySQL, PostgreSQL, SQL Server e Oracle?

Ottenere l'ID dell'ultimo record inserito in una tabella, dopo...

Database completo regioni, province e comuni italiani (in formato SQL)

Quando si sviluppa un sito web o un'applicazione in...

File CSV: cosa sono, come si aprono e come crearli

In questo articolo cercheremo di capire cos'รจ il formato...

Confrontare due tabelle e trovare i record senza corrispondenza

all'interno di un database relazionale può essere utile poter...

Eseguire comandi SQL online con SQL Fiddle

Sì. E' possibile testare codice SQL senza aver installato...

SQL: Calcolare la media dei valori di più campi

Attraverso una semplice query SQL รจ possibile calcolare dinamicamente...
Pubblicitร