用于存储图像的目录结构ASP.NET - 需要建议

时间:2010-11-15 23:27:17

标签: asp.net performance filesystems structure

我正在开发一个应用程序,它将在第一年内存储大约50,000张图像,在第二年内再存储75,000张图像。图像可以来自画廊,新闻图像,文章图像和个人资料图像。所以我想给每个图像一个GUID并将GUID存储在数据库中。

至于目录结构我正在考虑这样的事情:

~/Upload/Images/F2/50/F2504E0-4F89-11D3-9A0C-0305E82C3301.jpg

所以我使用GUID的前4个字符作为我的目录结构,以在目录之间更均匀地传播图像。

现在我对这种方法有一些疑问:

  • 将所有不同类型的图像存储在一起,而不是使用~/Images/Upload/Profiles~/Images/Upload/Articles等,这是一种良好的做法。
  • 我也存储了缩略图,但它们显然有不同的GUID,所以拇指不会与原始文件夹在同一个文件夹中,不知何故,这并没有给我一个好感觉,但我想这应该不重要但是。
  • 同样适用于画廊,我习惯在像~/Images/Upload/Galleries/12这样的文件夹中存储画廊,现在画廊中的所有图像都会散布在不同的子文件夹中,这是一个很大的性能影响吗?
  • 你们对目录结构还有其他想法吗?

你可能会看到我有点害怕使用这种方法但是因为会有很多图像可能更多,所以我给的数字我必须让控制权去我认为:)

请非常感谢你对我的看法。

亲切的问候, 标记

修改
忘记提及,图像也会经常被删除

3 个答案:

答案 0 :(得分:0)

我唯一的评论是建议您不按计划进行目录;相反,看看你是否可以将某种逻辑组织放到文件夹结构中。我愿意打赌你可能最终会用这个基本上随机的目录结构拉出一两个头发。

请记住暴露私人信息的可能性;例如,如果用户名尚未公开,您可能不应该有显示用户名的目录结构。

一种可能性;让它们基于时间... ~/Images/Upload/2010/11/15例如。如果这看起来不错,那就更进一步,如果你愿意,可以走得更远。 (例如,只去月份;或者做周数而不是白天)。我还建议使用这样的方案保持领先0,以便于分类。

然后再说;取决于你如何使用它们,这样的结构也可能不好。只是想到了我的脑袋:)

答案 1 :(得分:0)

我根据将所有这些图像存储在数据库中来设计我的数据模型。忘记乱搞目录。然后只需创建有效的HttpHandler来回传图像。

如果要将数据库中的路径和目录中的图像存储起来,我的目标是尽可能简化路径。最佳性能平衡可能取决于图像的大小;你可能想看FileStream班。

一些资源:

http://www.homeoftester.com/viewtopic.php?t=2648&sid=2f86787a27a5690db35df9b61f9e8247

Storing Images in DB - Yea or Nay?

http://www.sqlskills.com/BLOGS/PAUL/post/High-performance-FILESTREAM-tips-and-tricks.aspx

答案 2 :(得分:0)

我认为您还可以使用sql server 2008文件流功能来存储图像并更好地管理它们。

因为在文件流功能中,您可以物理存储图像并通过SQL Server管理它们。所以你可以利用这两个优势。

以下是很好的链接 http://www.simple-talk.com/sql/learn-sql-server/an-introduction-to-sql-server-filestream/

http://weblogs.asp.net/aghausman/archive/2009/03/16/saving-and-retrieving-file-using-filestream-sql-server-2008.aspx