Quale posizione di archiviazione, SQL Server o file system, si tradurrebbe in prestazioni migliori nel salvataggio di immagini tiff?

StackOverflow https://stackoverflow.com/questions/1234551

Domanda

Il nostro sistema deve archiviare immagini tiff di dimensioni ~ 3k. Riceviamo ~ 300 immagini in un determinato momento e dobbiamo elaborarle rapidamente. Una volta ricevute ~ 100.000 immagini, le immagini vengono trasferite dal nostro sistema a un altro sistema di archiviazione o eliminate.

Sto cercando le migliori prestazioni per quanto riguarda il salvataggio iniziale dei file di immagine. Il compito di trasferire le immagini per l'archiviazione è meno critico in termini di prestazioni.

Quale posizione di archiviazione, SQL Server o file system, comporterebbe migliori prestazioni nel salvataggio delle immagini tiff?

Ci sono altre considerazioni o aspetti da conoscere?

È stato utile?

Soluzione

La memorizzazione delle immagini nel filesystem offre prestazioni migliori. Devi solo inserire una voce in una tabella di database pertinente per gli allegati di immagini tiff e usarla per ottenere il percorso dell'immagine sul filesystem.

Potresti voler migliorare ulteriormente le prestazioni ospitando le immagini su un server Web - IIS (se pertinente) e far sì che le tue applicazioni client (anche se pertinenti) le recuperino direttamente lì invece.

Altri suggerimenti

Nella mia esperienza SQL Server è stato decente con l'archiviazione dei BLOB nel database. Finché seguo le migliori pratiche relative alle query, alla normalizzazione, ecc., Le ho trovate che funzionano bene.

Per qualche ragione, personalmente non voglio archiviare enormi file PDF, DOC e JPG nel mio database, ma è esattamente quello che fa Microsoft SharePoint e fa bene.

Prenderei sicuramente in considerazione l'inserimento di BLOB nel mio db.

La versione di SQL Server 2008 ha una nuova funzionalità chiamata FILESTREAM. Parte della loro documentazione contiene anche una sezione sulle best practice , in cui la gente di MS afferma che FILESTREAM dovrebbe entrare in gioco se gli oggetti BLOB sono generalmente più grandi di 1 MB.

La pagina MSDN indica:

  

Quando utilizzare FILESTREAM Se il   le seguenti condizioni sono vere, tu   dovrebbe considerare l'utilizzo di FILESTREAM:    - Gli oggetti che vengono memorizzati sono, in media, più grandi di 1 MB. Per   oggetti più piccoli, memorizzazione   BLOB varbinary (max) nel database   spesso fornisce uno streaming migliore   prestazioni.

Quindi suppongo che con un TIFF da 3 KB, potresti memorizzarlo bene all'interno di un campo VARBINARY (MAX) nella tabella di SQL Server 2005. Dal momento che è persino più piccolo della dimensione della pagina 8k per SQL Server, si adatterà perfettamente!

Potresti anche prendere in considerazione l'idea di mettere i tuoi BLOB nella loro tabella e fare riferimento alla tua " base " riga di dati da lì. In questo modo, se hai solo bisogno di interrogare i dati di base (i tuoi ints, varchars ecc.), La tua query non sarà bloccata dai BLOB che verranno archiviati mescolati con altre cose.

Marc

Il sistema di catalogo satellitare di INPE / Brasile memorizza un riferimento di immagini tiff memorizzate nel filesystem. Ma le immagini sono un po 'più grandi - +/- 100 MB. Se il file deve essere visualizzato sul browser, il codice php legge il contenuto tiff sul disco e lo disegna.

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