Immagini dell’utente: archiviazione del database o del filesystem

Sto scrivendo una funzione di caricamento in .NET per le immagini di presentazione sui profili utente. Sto scegliendo tra due diversi modi di farlo e vorrei chiedere consigli e opinioni sui pro e contro.

  1. Memorizza le immagini direttamente sul file system

  2. Salva le immagini nel database

Finora sono stato principalmente pro la prima opzione: nominare le immagini dopo i nomi utente, poiché ogni utente può avere solo un’immagine di presentazione. Quindi eseguo un controllo nel percorso designato se l’utente ha un’immagine, se non mostra un’immagine di default “nessuna immagine”.

Un’altra cosa che mi piace di questo è che risparmia spazio nel DB: il DB sarà piuttosto pesante senza il carico binario extra.

Sono sicuro che ci sono altri aspetti a cui non ho pensato, quindi mi piacerebbe sentire le tue opinioni su questo. Se qualcuno ha una soluzione radicalmente diversa al problema, condividilo pure!

La tua domanda ha ricevuto una risposta prima su StackOverflow:

Memorizza le immagini come file o nel database per un’app Web

Comprese molte altre domande duplicate!

In generale, è meglio memorizzare i file sul file system. I file system sono già ottimizzati per la memorizzazione dei file. Tuttavia, questo ha i suoi svantaggi, in particolare in termini di gestione, backup, ripristino ed è un po ‘un legame debole tra un campo del percorso file varchar nel database e un file nel file system. Quale sistema di database stai usando? Penso che se stai usando SQL Server 2008, il nuovo tipo FileStream dia un ottimo metodo per archiviare i file in quel database.

Modifica: Nota Sto parlando in generale di archiviare i file nel database. C’è un po ‘di complessità in più nel tentativo di memorizzare le immagini che si intende visualizzare su pagine HTML nel database.

Il filesystem è buono, ma non è pratico con più di 3000 immagini per cartella. È meglio scrivere la creazione automatica di cartelle per ogni 3000 blocchi di immagini.

ridondanza dei dati e difficoltà di incoerenza nell’accesso dei dati dati limiti di integrità dell’isolamento problema di atomicità accesso e anomalie concorrenti (problema di sicurezza dell’aggiornamento

Per i contenuti fissi (che non cambiano) come foto, video, ecc. I file system non saranno in grado di ridimensionare in particolare se ci sono molti file in una directory e le prestazioni ne risentiranno davvero. Un’opzione migliore consiste nell’utilizzare la tecnologia di archiviazione degli oggetti che archivia l’immagine come object e inserisce automaticamente i metadati associati nel database.

Che ne dici di memorizzare doc, pdf, xls, file jpg? Quale raccomandato?

Ho intenzione di lavorare su un sistema di gestione dei documenti che potrebbe memorizzare 10000 file, ma il problema è che sono molto preoccupato per la diffusione dei virus se usiamo la tecnica del file system.