高效的目录结构

时间:2011-06-09 15:31:20

标签: php algorithm directory

大量文件的最佳目录结构是什么。 考虑到我有超过2000万个使用number_id作为文件名的文件(例如13842985.xml)。

如果会像

那样
filename : 13842985.xml
directory :  1/3/8/13842985.xml

如何正确执行此操作,其中所有文件均匀分布在每个目录和子目录中。

3 个答案:

答案 0 :(得分:2)

您可以像trie一样创建目录结构。

答案 1 :(得分:0)

进行一些基准测试,以确定必须扫描多个directorie之间的权衡变得比在单个目录中扫描“many”文件更便宜。

在某些时候,您添加的每个目录层上的打开/扫描/安全检查/等等的文件系统开销将高于必须解析目录以查找所需单个文件所节省的成本。这就是你进行分割/分层截止的水平。

答案 2 :(得分:0)

稍微改变您的方法:

filename  : 13842985.xml
directory : 842/985/13842985.xml    # use the 6 last to create the directory name

我假设文件名有点随机。此方案将创建1000个顶级文件夹,每个文件夹包含1000个子文件夹。从最后一个数字而不是第一个数字开始,您将受到长文件名的保护:

filename  : 138429851234.xml
directory : 851/234/138429851234.xml

希望这有帮助!

编辑:首先通过对文件名进行哈希处理并使用此编号,您将避免退化的情况(例如,仅在开头变化)。