2012-02-06 54 views
0

如果您正在设计一个像pinterest或smugmug这样的网站,并且您将每个图像存储在不同的维度中,那么会在您的数据库中存储2个URL还是只有1个,并根据文件名进行修改?图像存储系统设计

E.g.

  1. http://www.example.com/images/bucket1/file1_original.jpg
  2. http://www.example.com/images/bucket1/file1_800x600.jpg
  3. http://www.example.com/images/bucket1/file1_400x200.jpg

请问在这种情况下,你3个不同的网址,在数据库或只是存储

  1. http://www.example.com/images/bucket1/file1_的.jpg

从数据库中获取URL后,用实际维度替换INSERT_SIZE。

为什么我这样想?如果您有10亿张图片,每张图片有5种尺寸,那么您必须在第一种情况下存储50亿个网址,在第二种情况下只存储10亿个网址。

第二个选项似乎节省空间,但它有其他设计缺点吗?

回答

0

只需存储文件的名称,然后为原始图像和缩略图构建网址。

例如

$URL = "http://site.com/i/".$imageName 

$URLthumb = "http://site.com/i/thumb/".$imageName 

这意味着,你救了你原来和拇指都使用相同的文件名,但在各自的文件夹中。

+0

所以,你也没有看到这种方法的任何缺点吗? – user855 2012-02-06 04:43:54

+0

我认为这是最好的方式。您将减少每个文件夹的节点数量,通过在FTS中使用相同的名称,可以使用一个查询搜索相关图像。减少到你的数据库queires。节省数据库空间。对于你的小中大的方法,只需做:/i/pic.jpg ::: /i/m/pic.jpg ::: /i/s/pic.jpg – 2012-02-06 04:46:09

+0

很酷。谢谢。 ... – user855 2012-02-06 04:52:44