我正在开发一个应用程序,它将在第一年内存储大约50,000张图像,在第二年内再存储75,000张图像。图像可以来自画廊,新闻图像,文章图像和个人资料图像。所以我想给每个图像一个GUID并将GUID存储在数据库中。
至于目录结构我正在考虑这样的事情:
~/Upload/Images/F2/50/F2504E0-4F89-11D3-9A0C-0305E82C3301.jpg
所以我使用GUID的前4个字符作为我的目录结构,以在目录之间更均匀地传播图像。
现在我对这种方法有一些疑问:
~/Images/Upload/Profiles
,~/Images/Upload/Articles
等,这是一种良好的做法。~/Images/Upload/Galleries/12
这样的文件夹中存储画廊,现在画廊中的所有图像都会散布在不同的子文件夹中,这是一个很大的性能影响吗?你可能会看到我有点害怕使用这种方法但是因为会有很多图像可能更多,所以我给的数字我必须让控制权去我认为:)
请非常感谢你对我的看法。
亲切的问候, 标记
修改:
忘记提及,图像也会经常被删除
答案 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/