2010-07-21 194 views
16

我建立一个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像这样从数据库中抽出的图像。因此,如果在我的应用程序缓存中未找到此文件的位置,我最终将在磁盘上缓存文件。

所以我想我去了一个混合;

  • 数据库存储,以使烘烤起来更简单的数据和文件被直接链接到资料
  • 的卷影拷贝到磁盘,以便更好的缓存

在任何时候,我可以删除磁盘上的缓存文件夹,并且当图像被重新请求时,它们将在第一次击中时被重新复制,并在之后的缓存中被重新复制。

+3

您应该阅读此:http://stackoverflow.com/questions/3748/storing-images-in-db-yea-or-nay – Anders 2010-07-21 23:10:23

+0

对不起,有我的问题几个拼写错误。从我的iPhone输入这个。当我到达一台电脑时会编辑。 – 2010-07-21 23:17:54

+0

谢谢安德斯,那正是我正在寻找的东西。您链接的该主题中有许多观点和意见。 – 2010-07-21 23:55:24

回答

4

实际上,数据库查找数据库实际上可能会更快,具体取决于您拥有的映像数量,除非您使用高度优化的文件系统引擎。数据库专为快速查找而设计,并使用比文件系统更多的有趣技术。

reiserfs(过时)对查找,zfs,xfs和NTFS来说真的很棒,它们都有非常出色的散列算法,linux ext4看起来也很有前途。

系统命中在块读取方面不会有任何不同。问题是查询返回的文件名(可能是散列?)的查询速度更快,然后使用单独的open,filesend close来访问它?或者只是把blob扔掉?

有几件事情需要考虑,包括网络命中,处理命中,分布式等。如果你存储的东西在数据库中,那么你可以移动它。再次,如果您将图像存储在内容传送服务上,可能会更快,因为您没有在yrouself上进行任何网络点击。

想想吧,记得标杆位从不伤害任何人:-)因此与典型的数据集的大小对其进行测试,并考虑之类的东西同步查询等上一到文件

+0

嗨精灵王。你在基础设施方面做得很好,我已经更新了我的问题。虽然我意识到有很多因素需要考虑(正如您所指出的那样),但我正在寻找一些知情的意见/可能对尝试某种方式的人以及如何解决问题的人有一些经验。 – 2010-07-21 23:51:06

+0

嗯,我已经在大型项目的生产环境中成功完成了这两项任务。 在一个项目中,系统每天每秒钟产生约10 x 10MB的图像,并且所有这些图像都必须进行排序并与多个用户关联。 (在那里使用FS和DB的组合)。这里由于生产率很高,不得不使用分布式FS。 在其他图像大但静态,在那里使用的数据库blob。 我认为你的应用程序,你可能会更好只有DB。您可能必须考虑谁拥有数字图像的合法性。 – 2010-07-22 02:16:51

4

商店引用数据库并将这些文件本身存储在磁盘上。

这种方法更灵活,更容易扩展。

您可以拥有一个数据库和多个服务器来提供静态内容。有几个数据库做这件事情会更棘手。

Flickr以这种方式工作。

希望它有帮助。

+1

太棒了。我试图找到一个很好的方式来存储个人资料图片在我的网站,我也要去这个解决方案太 – 2015-08-06 17:23:10

+0

@JonKoivula我有另一个答案,住在进一步的细节。这可能会有所帮助。 http://stackoverflow.com/questions/8922056/what-is-the-best-way-to-upload-and-store-pictures-on-the-site/8922090#8922090 – Frankie 2015-08-06 21:19:53

+1

非常感谢弗兰基,你真的给了我一个有用的答案。我非常感激。 – 2015-08-07 08:14:54

相关问题