• Super User

    immagini su disco o nel database?

    Ho un progetto che prevede di archiviare su un sito qualche decina di migliaia di immagini (da una decina di kb).
    il dubbio amletico ora è: archivio questi file su disco usando il nome del file rinominandolo con l'id del record oppure creo un campo blob e memorizzo l'immagine direttamente nel database.

    quale delle due soluzioni è meno gravosa per le risorse del server secondo voi? :mmm:


  • Super User

    direi di salvarle su file system


  • User Attivo

    direi che entrambe le possibilità hanno pro e contro

    • col db non devi preoccuparti del file fisico (e di eventuali directory) e ti semplifica la gestione, inoltre se vai a cancellare un record non hai bisogno di andare a cancellare anche il file. Di negativo c'è che dovrai fare una pagina "immagine" che prende l'id va a leggere il campo blob e fa l'output. In questo caso forse (e dico forse) il server è un po + occupato (me secondo me cambia poco)

    • col filesys è tutto l'opposto 😎

    mi sa che forse non ti sono stato di molto aiuto... 🙂


  • Super User

    queste immagini vengono caricate da altre persone con un'interfaccia web che ho creato quindi fare tutto lo script per la gestione del file fisico o lo script per la gestione in db per me è assolutamente indifferente tanto più che ho verificato essere semplici entrambe le soluzioni da sviluppare.

    il db ha di comodo che l'inserimento, l'aggiornamento e la cancellazione sono molto più pratici (il file di immagine resta sempre e per forza allineato ai dati del record) mentre con il file fisico devo preoccuparmi io di fare tutti i controlli.

    quello che mi serve sapere è se il carico di lavoro usando il db è notevolmente superiore o meno. se le differenze sono minime la scelta è già fatta -> DB 🙂

    c'è, cosa non da poco, anche il discorso dei backup. con i file nel database, una volta fatto il dump del db immagini sono tranquillo di avere tutto, con i file fisici... dovrei collegarmi via ftp e scaricare tutti i file sperando che la connessione non cada, facendo i confronti sperando che abbia scaricato tutti i file etc etc.


  • User Attivo

    secondo me le differenze in termini di carico del server non dovrebbero essere molto rilevanti, infondo si tratta di qualche query in +...

    l'unica cosa che mi viene in mente per ottimizzare è la gestione della cache (in modo che le stesse immagini non vengano ricaricate ad ogni passaggio)


  • Super User

    mi dovrò studiare per bene il manuale di mysql 😞

    ogni volta che guardo i manuali che ho sulla scrivania ... il numero non cala mai anzi, aumenta!!!

    😢

    qualche consiglio su un bel manuale di mysql? (manuale non ... for dummies) 🙂


  • Super User

    Non ero molto ferrato sull'argomento e ho voluto documentarmi 🙂
    Ho trovato qualcosa di interessante, i risultati sperimentali ottenuti facendo test:

    • usando solo il disco
    • mettendo l'url sul database e l'immagine sul disco
    • mettendo l'immgine nel database

    http://www.phpro.org/benchmark/image_in_database/

    Inoltre c'e' un bel tutorial su come gestire il tutto
    http://www.phpriot.com/d/articles/database/images-in-mysql/

    :ciauz:


  • Super User

    @claudioweb said:

    • mettendo l'url sul database e l'immagine sul disco

    io utilizzo questa soluzione, la trovo comoda 🙂