最佳实践 - 目录结构

时间:2011-11-09 18:27:18

标签: performance file-io directory

在分组到子目录之前,是否有最佳数量的目录可以在驱动器上保存图像。

示例,我有大约600,0000个图像文件的集合 我可以逻辑地将这些子组分成几个层,但我不确定最快的检索速度。我不需要搜索磁盘,因为我总是知道它的绝对路径。

我的基本选择是:

1个目录,包含600,000个文件(我的直觉告诉我这不好!) 要么 1个目录,包含1500个子目录,每个目录平均有400个文件(最小200个最大600个) 要么 1个目录,包含75个子目录,每个目录平均有20个子目录,每个目录平均有400个文件。

第二种情况是我理想的选择,但我担心这个子目录的数量会影响性能。

请讨论!

罗杰

2 个答案:

答案 0 :(得分:0)

根据我的经验,这是文件系统(甚至存储供应商)依赖...除了选择#1(“只是将所有东西都放在一个地方”)几乎肯定会是一个表现不佳的人。

我们遇到了类似的问题,并采用了#2的变体。在我们的例子中,我们有数千万用户,每个用户有10到1000个文件。我们最终得到了一个看起来像这样的结构:

AB \ CD \ EF \ all_the_files

ab部分指定了挂载点,cd \ ef是下面的两个子文件夹级别。

如果您将看到重要的IO负载,我建议您在硬件和网络上测试我们的配置,您将大规模使用。当然,如果需要,请考虑如何备份和恢复部分数据。

答案 1 :(得分:0)

previous question在实验后支持NTFS上的平面文件。这是有道理的,因为现代文件系统将目录内容存储在具有对数搜索时间的结构中,因此您可以在log(n)和> = 2 log(sqrt(n))之间进行选择 - 或者至多相等