90 votes

Le stockage d'un fichier dans une base de données, par opposition au système de fichiers?

En général, comment le mauvais de performances est de stocker un fichier dans une base de données (plus précisément mssql), par opposition au système de fichiers? Je ne peux pas venu avec une raison à l'extérieur de la portabilité de l'application que je veux stocker mes fichiers comme varbinaries dans SQL Server.

83voto

Michael Stum Points 72046

Jetez un oeil à cette réponse:

Le stockage des Images dans la bd - Oui ou Non?

Essentiellement, l'espace et les performances peuvent être assez grand, en fonction du nombre d'utilisateurs. Aussi, gardez à l'esprit que les serveurs Web sont bon marché et vous pouvez facilement ajouter d'autres pour équilibrer la charge, tandis que la base de données est la plus chère et la plus difficile à l'échelle de la partie de l'architecture du web en général.

Il y a quelques exemples opposés (par exemple, Microsoft Sharepoint), mais généralement, le stockage des fichiers dans la base de données n'est pas une bonne idée.

Sauf si éventuellement vous écrire des applications de bureau et/ou de savoir à peu près combien d'utilisateurs que vous aurez jamais, mais sur quelque chose d'aussi aléatoire et unexpectable comme un site web public, vous pouvez payer un prix élevé pour le stockage de fichiers dans la base de données.

37voto

Jon Galloway Points 28243

Si vous pouvez vous déplacer vers SQL Server 2008, vous pouvez bénéficier de la prise en charge de FILESTREAM qui vous donne le meilleur des deux, les fichiers sont stockés dans le système de fichiers, mais l'intégration de base de données est beaucoup mieux que de simplement stocker un chemin dans un champ de type varchar. Votre requête peut renvoyer un standard .NET flux de fichier, ce qui rend l'intégration beaucoup plus simple.

Prise en main du Stockage FILESTREAM

22voto

Lance Fisher Points 13547

Je dirais, tout dépend de votre situation. Par exemple, je travaille dans le gouvernement local, et nous avons beaucoup d'images comme les mugshots, etc. Nous n'avons pas un grand nombre d'utilisateurs, mais nous avons besoin d'avoir de bons d'audit et de sécurité autour de la data. La base de données est une meilleure solution pour nous, car il rend cela plus facile et nous n'allons pas courir dans des problèmes d'évolutivité.

7voto

Will Dean Points 25866

Quelle est la question?

Moderne SGBD SQL2008 ont une variété de façons de traiter avec des Gouttes qui ne sont pas seulement coller dans un tableau. Il y a des avantages et des inconvénients, bien sûr, et vous pourriez avoir besoin d'y réfléchir un peu plus.

C'est un document intéressant, par la fin (?) Jim Gray

De BLOB ou De ne Pas GOUTTE: Grand Objet de Stockage dans une Base de données ou un système de fichiers

5voto

ZombieSheep Points 18967

Dans ma propre expérience, il est toujours préférable de stocker des fichiers en tant que fichiers. La raison en est que le système de fichier est optimisé pour le fichier storeage, alors qu'une base de données n'est pas. Bien sûr, il y a quelques exceptions (par exemple, le tant annoncée next-gen MS système de fichiers est censé être construit sur SQL server), mais en général, c'est ma règle.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X