Domanda

In generale, come il male di un calo di prestazioni è la memorizzazione di un file in un database (in particolare mssql) rispetto al file system?Non riesco a trovare una ragione al di fuori della portabilità delle applicazioni che vorrei conservare il mio file come varbinaries in SQL Server.

È stato utile?

Soluzione

Date un'occhiata a questa risposta:

La memorizzazione delle Immagini nel DB - Sì o No?

Essenzialmente, lo spazio e prestazioni può essere abbastanza grande, a seconda del numero di utenti.Inoltre, tenete a mente che i server Web sono a buon mercato e si può facilmente aggiungere di più per bilanciare il carico, mentre il database è il più costoso e più difficile da scala parte di un'architettura web di solito.

Ci sono alcuni esempi opposti (ad esempio, Microsoft Sharepoint), ma in genere, la memorizzazione di file nel database non è una buona idea.

A meno che, eventualmente, la scrittura di applicazioni desktop e/o sapere quanti utenti si potrà mai avere, ma su qualcosa di casuale e standard forse non all'altezza come un sito web pubblico, si può pagare un prezzo elevato per la memorizzazione di file nel database.

Altri suggerimenti

Se si può passare a SQL Server 2008, è possibile usufruire del supporto di FILESTREAM che offre il meglio di entrambi i file sono memorizzati nel file system, ma l'integrazione del database è molto più di un semplice memorizzazione di un percorso in un campo varchar.La query può restituire uno standard .NETTO flusso di file, il che rende l'integrazione molto più semplice.

Introduzione all'Archiviazione FILESTREAM

Direi, dipende dalla vostra situazione.Per esempio, io lavoro nel governo locale, e abbiamo un sacco di immagini come foto segnaletiche, etc.Non abbiamo un alto numero di utenti, ma abbiamo bisogno di avere una buona sicurezza e di controllo dei dati.Il database è una soluzione migliore per noi, dal momento che rende questo più facile e non stiamo andando a correre in problemi di scaling.

Qual è la domanda?

Moderni DBMS SQL2008 hanno una varietà di modi di trattare con i Blob che non sono solo attaccare in una tabella.Ci sono pro e contro, ovviamente, e potrebbe essere necessario pensare un po ' di più.

Questa è una carta interessante, alla fine (?) Jim Gray

A BLOB o Non BLOB:Oggetto di grandi dimensioni di Archiviazione in un Database o in un file system

Nella mia esperienza, è sempre meglio per l'archiviazione di file, come i file.Il motivo è che il filesystem è ottimizzata per il file storeage, considerando che un database non è.Naturalmente, ci sono alcune eccezioni (ad es.il tanto annunciato next-gen di MS filesystem dovrebbe essere costruito sulla cima di SQL server), ma in generale questa è la mia regola.

Mentre le prestazioni è un problema, penso che i moderni database design, che hanno reso molto meno di un problema per file di piccole dimensioni.

Prestazioni a parte, dipende anche da solo come strettamente dati.Se il file contiene i dati che sono strettamente correlati ai campi del database, quindi è concettualmente appartiene vicino ad esso e possono essere conservati in un blob.Se contiene informazioni che possono riguardare più di un record o può avere qualche utilità al di fuori del contesto del database, allora è fuori.Per esempio, un'immagine in una pagina web viene caricata su una richiesta separata dalla pagina che si collega ad esso, quindi è possibile che appartengono all'esterno (a seconda delle specifiche di progettazione e le considerazioni di sicurezza).

Il nostro compromesso, e non prometto è il migliore, è stato per memorizzare piccole file XML nel database, ma le immagini e altri file al di fuori di essa.

Abbiamo preso la decisione di archiviare come varbinary per http://www.freshlogicstudios.com/Products/Folders/ a metà strada in attesa di problemi di prestazioni.Posso dire che siamo stati piacevolmente sorpresi di quanto bene funziona.

Sono d'accordo con @ZombieSheep.Solo una cosa in più - io di solito non credo che i database in realtà bisogno di essere portatile in quanto è la mancanza di tutte le funzioni del DBMS fornitore fornisce.Penso che la migrazione a un altro database dovrebbe essere l'ultima cosa che si potrebbe prendere in considerazione.Solo il mio $.02

Il sovraccarico di dover analizzare un blob (immagine) in una matrice di byte e poi scrivere su disco con il corretto nome del file e quindi la lettura è abbastanza di un sovraccarico di colpire a scoraggiare da questo fatto, troppo spesso, soprattutto se i file sono piuttosto grandi.

Non essere vago o nulla, ma penso che il tipo di file verranno archiviati è uno dei maggiori fattori determinanti.Se ci si limita a parlare di un grande campo di testo che possono essere memorizzati come file la mia preferenza sarebbe per il db di archiviazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top