Sviluppo software

Come organizzare i file multimediali nella propria web application

Nel contesto in cui dovessimo sviluppare una web application che utilizzi un database come MySQL dovremmo decidere come organizzare i file multimediali.

La domanda cioè che potremmo porci sarebbe più o meno la seguente:

Immagini, PDF, filmati e file audio dove li metto, nel database sotto forma di BLOB o li tengo su filesystem?

Come sempre, entrambe le soluzioni hanno pregi e difetti che elencherò a breve; conoscerli equivale a prendere la decisione giusta in base al contesto in cui ci troviamo.

File multimediali nel database come BLOB#

Pregi

  • il loro backup è facilitato in quanto è incluso nel backup del database;
  • non è necessario organizzarli né dare loro un nome;
  • sono direttamente collegati ai dati dell'applicazione;

Difetti

  • andranno ad occupare spazio su database e in genere questo è sconveniente dal momento che i servizi di hosting tendono a far pagare lo spazio occupato dal database piuttosto che lo spazio web, in genere illimitato anche nei pacchetti più economici;
  • il database tratta immagini, PDF, filmati e file audio allo stesso modo, cioè come larghi oggetti binari, BLOB appunto e quindi, a meno di software apposito, non avremo nessun tipo di supporto da parte del database per vedere e manipolare questi contenuti;
  • ad un certo punto questi file andranno probabilmente letti dal database per poter essere mostrati all'utente impedendo al web server di attuare alcuna forma di caching verso il client. Questo aumenterà banda e tempi di caricamento anche per immagini immutate;

File multimediali su filesystem#

Pregi

  • non occupano spazio su database e quindi risultano più economici per i servizi di hosting a pagamento;
  • il filesystem dei moderni S.O. abbinato al FileManager e a un lettore multimediale offrono un supporto di base ai vari formati multimediali (anteprima, visualizzazione, ricerca), per di più ne consentono un'organizzazione gerarchica e una gestione di massa attraverso console e tools a riga di comando (es. ridimensionare tutte le immagini alla tal dimensione utilizzando mogrify di ImageMagick );
  • il web server è in grado di attuare del caching diminuendo la banda occupata e velocizzando il processo di caricamento delle pagine da parte degli utenti;

Difetti

  • rispetto ai dati contenuti nel database, ne va fatto un backup a parte;
  • va decisa un'organizzazione in cartelle e va scelta una policy per i nomi;
  • non sono immediatamente collegati al resto dei dati: andrà scritto del codice per collegare i record ai file attraverso la policy scelta per organizzarli e nominarli;

In definitiva a meno che non abbiate necessità particolari di backup o mirroring dei contenuti multimediali quasi sempre sarà più conveniente tenerli su filesystem.

Autore: Lorenzo Chiodi
Senior software developer con più di 16 anni di esperienza nello sviluppo di soluzioni web based, enterprise, su misura. Dal 2011 socio fondatore di Garda Informatica Snc condivide questa avventura col fratello Giovanni.

Che soluzione cerchi?#

Read more!

Newsletter

Ti è piaciuto questo articolo? Iscriviti alla newsletter

Di tanto in tanto pubblichiamo nuovi articoli come questo. Se vuoi essere avvisato lascia il tuo indirizzo e-mail di seguito.

Non invieremo mai SPAM e non condivideremo la tua e-mail con altri. Per maggiori informazioni consulta la privacy policy.

Attendere prego...

closeIcona closesearchIcona searchmore vertIcona more vertmenuIcona menushareIcona sharelinkIcona linkarrow upwardIcona arrow upward