Sto creando un'applicazione asp.net mvc in cui gli utenti possono allegare un'immagine al proprio profilo, ma anche in altre aree del sistema come un gadget di messaggistica sul dashboard che visualizza messaggi recenti ecc.Memorizza le immagini del profilo utente sul disco o nel database?
Quando l'utente carica questi mi chiedo se sarebbe meglio memorizzarli nel database o su disco.
vantaggi Databse
semplice per il backup dell'intero database e tenere aggiornati i contenuti del profilo/immagini con associate le tabelle profilo/utente
quando costruire servizi web più avanti lungo la pista, si può solo estrarre tutti i dati relativi profiile da un posto (il database)
Filesystem vantaggi
caricamento dei file dal disco è probabilmente più veloce
altri vantaggi?
Dove altri siti memorizzano questo tipo di informazioni. Ho ragione di essere un po 'preoccupato per le prestazioni del database per qualcosa di simile?
Forse ci sarebbe un modo per memorizzare le immagini estratte dal database per un periodo di tempo?
In alternativa, che dire dell'idea di archiviare queste immagini nel database, ma shadow copiandole su disco in modo che il web server possa caricarle da lì? Ciò sembrerebbe dare sia il backup che la convenienza di un Db, pur offrendo i vantaggi di velocità dei file su disco.
dell'infrastruttura in questione
- Il sito sarà distribuito a IIS in Windows Server 2003 che esegue il file system NTFS.
- Il database sarà SQL Server 2008
Sommario
leggendo in giro su un sacco di fili collegati qui su SO, molte persone sono ora trend verso il tipo di SQL Server Filestream. Tuttavia, da quello che potrei raccogliere (potrei sbagliarmi), non c'è molto vantaggio quando i file sono piuttosto piccoli. Tuttavia, Filestreaming sembra migliorare notevolmente le prestazioni quando i file sono multipli o più di un MB.
Poiché le immagini del mio profilo tendono a circa 5kb, ho deciso di lasciarle memorizzate nel filestore nel database come varbinary (max).
In ASP.NET MVC ho visto un po 'di un problema di prestazioni restituendo FileContentResults per le immagini estratte dal database come questo. Così ho finito con la cache del file su disco quando viene letto se la posizione di questo file non si trova nella cache dell'applicazione.
Quindi immagino di essere stato un ibrido;
- archiviazione database per rendere la cottura da dati più facili e file sono collegati direttamente ai profili
- Ombra copia su disco per consentire una migliore caching
In qualsiasi momento posso cancellare la cartella della cache su disco e siccome le immagini vengono richieste nuovamente, saranno copiate nuovamente al primo colpo e servite dalla cache lì dopo.
Si dovrebbe leggere questo: http://stackoverflow.com/questions/3748/storing-images-in-db-yea-or-nay – Anders
Spiacente ci sono alcuni errori di battitura con la mia domanda. Digitando questo dal mio iPhone. Modificherà quando arriverò su un pc. –
Grazie anders, era esattamente quello che stavo cercando. Un sacco di punti di vista e opinioni in quel thread che hai collegato. –