我的问题相当通用,我知道可能没有100%的答案.我正在构建一个ASP .NET Web解决方案,其中包含大量图片,并希望有相当多的流量.我确实想要达到性能.
我应该将图片保存在数据库或文件系统中吗?无论答案如何,我都更感兴趣为什么选择一种特定的方式.
非常感谢,Stefan
DUPLICATE:在DB中存储图像 - 是或否?,如何在文件系统中存储图像,存储少量图像:blob还是fs?可能还有其他一些.
评论:感谢许多好的答案.即使我喜欢使用100%数据库驱动的解决方案,我也会选择基于文件的解决方案.似乎今天有很好的解决方案来做我想要的数据库等,但我有一些理由不这样做.
我将使用托管解决方案,我有大量的存储空间(10gb)但数据库只有300mb.在DB中额外存储会花费很多.
我不是数据库专家,也不能控制数据库的设置.基于数据库的解决方案可能需要自定义配置.
如果我们将在我们自己的服务器上运行该站点,我可能会考虑基于数据库的解决方案.谢谢,斯蒂芬
将图片存储在文件系统和数据库中的图片位置.
为什么?因为...
您将能够将图片作为静态文件提供.
获取图片不需要数据库访问或应用程序代码.
可以从不同的服务器提供图像以提高性能.
它将减少数据库瓶颈.
数据库最终将其数据存储在文件系统中.
存储在文件系统上时,可以轻松缓存图像.
在我最近开发的项目中,我将图像(和各种二进制文档)存储为数据库表中的图像列.
将文件存储在数据库中的好处显然是,如果删除了记录,则不会在硬盘上找到未引用的文件,因为数据库(=元数据)和硬盘(=文件存储)之间的同步不是内置的并且必须手动编程.
使用今天的技术,我建议您将图像存储在SQL Server 2008 FILESTREAM列中(至少这是我将要对下一个项目执行的操作),因为它们结合了在数据库中存储数据和在单独文件中具有大型二进制文件的优点(在至少根据广告;))
格言一直是"文件系统中的文件,数据库中的文件元数据"
最好将文件存储为文件.不同的数据库以不同的方式处理Blob数据,因此如果您必须迁移后端,则可能会遇到麻烦.
当提供impage时,
我通过Google搜索您的问题找到了这个答案,并在http://databases.aspfaq.com/database/should-i-store-images-in-the-database-or-the-filesystem.html上阅读了评论.
我通常喜欢在数据库中使用二进制文件,因为:
数据完整性:没有未引用的文件,没有任何文件关联的数据库中没有路径
数据一致性:采取数据库转储,这就是全部.不,"我忘记了这个数据目录."