通常,性能损失有多糟糕的是将文件存储在数据库(特别是mssql)而不是文件系统中?我无法想出在应用程序可移植性之外的一个原因,我想将我的文件存储为SQL Server中的varbinaries.
看看这个答案:
在DB中存储图像 - 是还是不?
从本质上讲,空间和性能可能会非常大,具体取决于用户数量.此外,请记住,Web服务器很便宜,您可以轻松添加更多以平衡负载,而数据库通常是最昂贵且最难扩展的Web体系结构的一部分.
有一些相反的例子(例如,Microsoft Sharepoint),但通常,将文件存储在数据库中并不是一个好主意.
除非您可能编写桌面应用程序和/或大致知道您将拥有多少用户,但对于像公共网站那样随机且无法预料的内容,您可能需要为在数据库中存储文件付出高昂代价.
如果您可以迁移到SQL Server 2008,您可以利用FILESTREAM支持,它可以为您提供最好的 - 文件存储在文件系统中,但数据库集成比仅在varchar字段中存储文件路径要好得多.您的查询可以返回标准的.NET文件流,这使得集成更加简单.
FILESTREAM存储入门
我会说,这取决于你的情况.例如,我在当地政府工作,我们有很多图像像面部照片等.我们没有大量的用户,但我们需要有良好的安全性和审计数据.数据库对我们来说是一个更好的解决方案,因为它使这更容易,我们不会遇到扩展问题.
这是什么问题?
现代DBMS SQL2008有多种处理BLOB的方法,这些方法不仅仅是在表格中.当然,有利有弊,您可能需要更深入地考虑它.
这是一篇有趣的论文,由已故的(?)Jim Gray撰写
BLOB或不BLOB:数据库或文件系统中的大对象存储