2010-11-15 40 views
1

我正在制作一个应用程序,该应用程序将在其第一年存储大约50,000个图像,而另一个存储75.000个应用程序。图片可以来自画廊,新闻图片,文章图片和个人资料图片。所以我想给每个图像一个GUID并将GUID存储在数据库中。用于存储图像的目录结构ASP.NET - 需要的建议

至于目录结构我就是这样想的东西:

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

所以我使用了前4个字符的GUID为我的目录结构目录之间更均匀地分布图像的位。

现在我对这种做法的一些问题:

  • 它是好习惯存储所有不同类型的图像一起而不是使用~/Images/Upload/Profiles~/Images/Upload/Articles
  • 我还保存缩略图和他们有一个不同的GUID,所以拇指不会与原始文件夹在同一个文件夹中,并且不知何故,这不会给我一个好的感觉,但我想这应该不重要。
  • 同去的画廊,我用来存储在文件夹中的画廊一样~/Images/Upload/Galleries/12,现在都在图库中的图像将在不同的子文件夹中散落,这是一个很大的性能损失?
  • 你们对目录结构有什么其他想法吗?

正如你可能会看到我有点害怕使用这种方法,但因为会有大量的图片甚至更多的话,我给了我必须让控制的数字去,我觉得:)

请给我你的意见,非常感谢你。

亲切的问候, 马克

编辑
忘了提,图像将被相当删除也经常

回答

0

我唯一的评论是建议你计划你不这样做的目录;相反,看看你是否可以把某种逻辑组织放到文件夹结构中。我敢打赌,你可能最终会用一种基本上随机的目录结构拉一两根头发。

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

一种可能性;让他们根据时间...例如~/Images/Upload/2010/11/15。如果这样看起来不错,或者如果你愿意的话,你可以走得更远。 (例如,只能到月份;或者是周数而不是一天)。我还建议保持领先0的这种方案,以便于排序。

然后再次;取决于你如何使用它们,这样的结构可能也不好。这是只是突然出现在我的脑海:)

+0

嗨良好的联系,感谢您的评论。问题在于GUID的随机性中存在一些逻辑组织。由于GUID会生成随机字符串,因此它会确保它通过图像在子文件夹中均匀传播(很好,相当均匀),这就是我想要的。另一个优点是我可以在不同位置分配目录而不必担心路径。我曾考虑您的可能性也和它似乎是一个博客一个很好的选择,但不适合我,因为这将是混乱的,当所有这些不同类型的图像在那里(画廊等)去。感谢您的建议伴侣。 – Mark 2010-11-15 23:48:32

+0

我可能只是在选择为以下初始设计: /Upload/Images/Galleries/randomfolder/randomstring.jpg,/Upload/Images/Profiles/randomstring.jpg,/Upload/Images/Articles/randomstring.jpg。看起来更适合我,但可能不是最好的事情哈哈 – Mark 2010-11-15 23:49:22

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