2009-09-12 8 views
0

quelle taille (binaire (xy)) dois-je faire ma colonne de la table dans la base de données SQL si je veux y stocker des photos prises par caméra - ce qui signifie taille variable jusqu'à .. Je ne sais pas .. 7 Mo? Mais si je devrais plutôt limiter la taille jusqu'à 2 Mo ou quelque chose, je le ferais. Qu'en penses-tu?Photos dans SQL DB

EDIT

Ou où dois-je les conserver? Je construis une galerie web en utilisant asp.net mvc.

+1

Quel serveur de base de données utilisez-vous? –

+0

Actuellement VS2008. J'ai l'intention d'utiliser SQL Server 2008 Express. – Trimack

+3

Je sais que ce n'est pas ce que vous avez demandé, mais je me sentirais mal si je ne mentionnais pas cela. C'est un sujet très subjectif mais je trouve horrible le stockage d'images dans la base de données. Le seul avantage est que vous pouvez sauvegarder et déplacer les données dans la base de données et les images ensemble, mais d'autres que j'ai l'impression que cela complique les choses. Vous avez besoin d'un code personnalisé pour jouer et récupérer, il est difficile de faire manuellement une modification, souvent l'espace db est cher, etc ... vous pourriez avoir une bonne raison de le vouloir mais y réfléchir. – olle

Répondre

3

Ce dont vous parlez est une colonne varbinary. Bien sûr, si vous rendez varbinary supérieur à 8000, il le convertit immédiatement en colonne varbinary(max), ce qui signifie qu'il peut stocker jusqu'à 2Go. Cela a à voir avec la façon dont SQL Server stocke les lignes (8 Ko par page).

Par conséquent, chaque ligne stocke la colonne comme un pointeur vers les bits, de toute façon. Donc, ce que je ferais, si j'étais moi, serait de stocker les images sur le système de fichiers, et de stocker l'emplacement de ces fichiers dans la base de données.

0

Si vous souhaitez stocker des images dans SQL Server, utilisez le type de colonne varbinary (max). Il permet jusqu'à 2 Go (si je me souviens bien).

En outre, comme vous utilisez SQL Server 2008 (je ne sais pas sur l'édition express tho '), vous pouvez utiliser le nouveau type de données filestream.

Bien sûr, le gros avantage de stocker ceci dans la base de données est que vous n'avez qu'une seule chose à sauvegarder et que vous n'avez pas de problème de désynchronisation du système de fichiers et de la base de données. Le nouveau type de flux de fichiers est un développement intéressant car il peut aider à résoudre ces problèmes. L'inconvénient de stocker ces données dans la base de données est que vous mettez une pression supplémentaire sur la base de données, surtout si la bande passante entre votre base de données et votre serveur web est déjà tendue.

+0

Alors que ce FILESTREAM est vraiment cool, il fait des ravages avec des choses comme des sauvegardes et spécialement restaurer: vous Je ne reviendrai jamais à un moment précis si vous l'utilisez. –

+0

Donc, il s'avère que c'est plus un obstacle qu'une aide? Cependant, le simple stockage manuel des fichiers dans le système de fichiers pose des problèmes de synchronisation des données, en particulier avec la sauvegarde/restauration. –

0

Comme d'autres l'ont déjà indiqué dans les commentaires (ce qui, bien que vous auriez dû être des réponses malgré la police pendentif), vous devez vraiment avoir des raisons de tuer des images dans la base de données. Sinon, placez-les simplement dans le système de fichiers.

Ceci est particulièrement vrai dans le cas où les images sont fournies par un serveur Web. Le serveur Web est beaucoup plus efficace pour fournir des images à partir du système de fichiers que votre code les extraira d'une base de données.