FileStream vs FileTable

Je veux stocker des images dans une database SQL. La taille de l'image est comprise entre 50kb et 1mb. Je lisais sur un FileStream et un FileTable mais je ne sais pas lequel choisir. Chaque rangée aura 2 images et quelques autres champs.

Les images ne seront jamais mises à jour / supprimées et environ 3000 lignes seront insérées par jour.

Quel est recommandé dans cette situation?

    A l'origine, c'était toujours une mauvaise idée de stocker des files (= données binarys) dans une database. La solution de contournement habituelle consiste à stocker le path de file dans la database et à vérifier qu'un file existe réellement sur ce path. Il est cependant possible de stocker des files dans la database, avec le type de données varbinary(MAX) .

    sqlfilestream a été introduit dans sql-server-2008 et gère la colonne varbinary en ne stockant pas datatables dans les files de database (seulement un pointeur), mais dans un file différent sur le système de files, améliorant considérablement les performances.

    le fileable a été introduit avec sql-server-2012 et est une amélioration par rapport au stream de files, car il fournit des métadonnées directement à SQL et permet l'access aux files en dehors de SQL (vous pouvez naviguer vers les files).

    Conseil: Utilisez indéniablement FileStream, et ce n'est peut-être pas une mauvaise idée d'utiliser FileTable.

    Plus de lecture (court): http://www.databasejournal.com/features/mssql/filestream-and-filetable-in-sql-server-2012.html

    Ça dépend. Personnellement, je préfèrerai un lien vers l'image à l'intérieur de la table. C'est plus simple et les files du directory peuvent être sauvegardés séparément.

    Vous devez prendre en count plusieurs choses:

    1. Comment allez-vous traiter les images. Avoir seulement un lien vous permet d'incorporer facilement des imges dans les pages web (avec la configuration de propper du server Web).

    2. Combien sont les images – si elles sont stockées dans la database et elles sont nombreuses – cela augmentera la taille de la database et des sauvegardes.

    3. Les images changent souvent – dans ce cas, il peut être préférable de les avoir à l'intérieur de la database pour avoir l'état réel de la sauvegarde dans la database.