Quel emplacement de stockage, SQL Server ou système de fichiers, améliorerait les performances d'enregistrement des images tiff?

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

Question

Notre système doit stocker des images tiff de taille ~ 3k. Nous recevons environ 300 images à un moment donné et devons les traiter rapidement. Une fois que 100 000 images environ ont été reçues, elles sont transférées de notre système vers un autre système d’archivage ou purgées.

Je recherche les meilleures performances en ce qui concerne la sauvegarde initiale des fichiers image. Le transfert des images à des fins d’archivage est moins critique en termes de performances.

Quel emplacement de stockage, SQL Server ou système de fichiers, améliorerait les performances d'enregistrement des images tiff?

Y a-t-il d'autres considérations ou problèmes à connaître?

Était-ce utile?

La solution

Le stockage des images dans le système de fichiers vous donnera de meilleures performances. Vous devez simplement entrer une entrée dans une table de base de données pertinente pour les pièces jointes de l’image tiff - et l’utiliser pour obtenir le chemin de l’image sur le système de fichiers.

Vous pouvez augmenter encore les performances en hébergeant les images sur un serveur Web - IIS (le cas échéant) et laisser vos applications clientes (à nouveau, le cas échéant) les récupérer directement à partir de là.

Autres conseils

D'après mon expérience, SQL Server stocke correctement les blobs dans la base de données. Tant que je respecte les meilleures pratiques relatives aux requêtes, à la normalisation, etc., je les ai trouvées efficaces.

Pour une raison quelconque, je ne souhaite personnellement pas stocker d'énormes fichiers PDF, DOC et JPG dans ma base de données, mais c'est exactement ce que Microsoft SharePoint fait et fait bien.

Je songerais certainement à mettre des gouttes dans ma base de données.

La version de SQL Server 2008 comporte une nouvelle fonctionnalité appelée FILESTREAM. Une partie de leur documentation comporte également une section sur les meilleures pratiques , dans laquelle les gens de MS déclarent que FILESTREAM devrait entrer en jeu si les objets BLOB sont généralement plus grands que 1 Mo.

Cette page MSDN indique:

  

Quand utiliser FILESTREAM Si le   les conditions suivantes sont vraies, vous   devrait envisager d'utiliser FILESTREAM:    - Les objets stockés dépassent en moyenne 1 Mo. Pour   objets plus petits, stocker   varbinary (max) BLOB dans la base de données   fournit souvent un meilleur streaming   performances.

Donc, je suppose qu'avec un fichier TIFF de 3 Ko, vous pouvez le stocker facilement dans un champ VARBINARY (MAX) de votre table SQL Server 2005. Comme sa taille est encore inférieure à la taille de page de 8 Ko pour SQL Server, tout ira bien!

Vous pouvez également envisager de placer vos BLOB dans leur propre table et de référencer votre "base". ligne de données à partir de là. De cette façon, si vous avez seulement besoin d'interroger les données de base (vos ints, vos varchars, etc.), votre requête ne sera pas gênée par le fait que des BLOB sont stockés en étant mélangés à d'autres éléments.

Marc

Le système de catalogue de satellites de l’INPE / Brésil stocke une référence d’images tiff stockées dans un système de fichiers. Mais les images sont un peu plus grandes - +/- 100 MB. Si le fichier doit être affiché sur le navigateur, le code php lit le contenu du fichier tiff sur le disque et le dessine.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top