我建立一个asp.net MVC应用程序,用户可以附上图片,以他们的个人资料,而且在系统,如仪表盘上的小工具消息的其他区域,显示最近的邮件等等将用户个人资料图片存储在磁盘或数据库中?
当用户上传这些我想知道是否将它们存储在数据库或磁盘更好。
DATABSE优势
轻松备份整个数据库,并保持个人资料的内容/图像与关联的配置文件/用户表
当我构建Web服务后走下赛场,他们可以只从一个点(数据库)中提取所有profiile相关数据
分文件系统的优势从磁盘
加载文件可能更快
任何其他优势?
其他网站在哪里存储这类信息。对于像这样的数据库性能,我有点担心吗?
也许有一种方法可以缓存从数据库中取出一段时间的图像?
或者,将这些图像存储在数据库中的想法如何,但将它们复制到磁盘上以便Web服务器可以从那里加载它们?这似乎既提供了备份和方便的Db,同时提供了磁盘上文件的速度优势。
有关基础设施
- 该网站将被部署到IIS运行NTFS文件系统的Windows Server 2003上。
- 该数据库将SQL Server 2008的
摘要
围绕阅读了很多相关的线程这里SO,现在许多人都朝着趋势在SQL Server文件流类型。然而,从我可以收集的信息来看(我可能是错的),当文件很小时没有太大的好处。然而,Filestreaming在文件为多个MB或更大时看起来会大大提高性能。
由于我的个人资料图片倾向于坐在〜5kb左右,我决定将它们作为varbinary(max)保存在数据库的文件存储中。
在ASP.NET MVC中,我确实看到了一些性能问题,返回FileContentResults像这样从数据库中抽出的图像。因此,如果在我的应用程序缓存中未找到此文件的位置,我最终将在磁盘上缓存文件。
所以我想我去了一个混合;
- 数据库存储,以使烘烤起来更简单的数据和文件被直接链接到资料
- 的卷影拷贝到磁盘,以便更好的缓存
在任何时候,我可以删除磁盘上的缓存文件夹,并且当图像被重新请求时,它们将在第一次击中时被重新复制,并在之后的缓存中被重新复制。
您应该阅读此:http://stackoverflow.com/questions/3748/storing-images-in-db-yea-or-nay – Anders 2010-07-21 23:10:23
对不起,有我的问题几个拼写错误。从我的iPhone输入这个。当我到达一台电脑时会编辑。 – 2010-07-21 23:17:54
谢谢安德斯,那正是我正在寻找的东西。您链接的该主题中有许多观点和意见。 – 2010-07-21 23:55:24