为什么要根据哈希自动生成文件?

时间:2010-07-21 19:23:05

标签: file-storage

这是我在网站上看到的一种模式,允许用户以前上传图像等内容。

例如,为什么http://upload.wikimedia.org/wikipedia/commons/7/70/Example.png而不仅仅是http://upload.wikimedia.org/wikipedia/commons/Example.png

这是否存在实际原因,还是只是货物崇拜?

2 个答案:

答案 0 :(得分:3)

当同一目录中有数十万个文件时,许多文件系统的性能都不是很好 - 在目录中查找文件需要很长时间。

要避免此问题,请将文件分发到文件夹层次结构中。为了获得均匀分布,您可以对文件名或内容进行散列(标识文件的内容),并使用该散列的一部分来确定文件应该放在哪个文件夹中。这就是7/70来自的地方:它来源于哈希的前缀分为两步,创建一个两级层次结构。因此,文件分布在256个不同的文件夹中,这意味着每个文件夹中的文件更少,从而提供更好的文件系统性能。

答案 1 :(得分:0)

有两个明显的原因:

  • 避免将太多文件加载到单个目录中
  • 在不重命名原始文件的情况下,可以轻松避免文件名冲突