我目前正在设计一个使用文件系统存储文档的简单存储库。数百万个文件的未来潜力,我想用来将ID映射到磁盘上的位置的策略是一种散列ID并使用部分散列来确定它应该存在的目录的方法。
一个常见的操作是读取每个文件夹及其任何嵌套文件夹中的所有文件。
我的问题是:每个目录的文件比例是否理想?我有 通过ID控制这个比率的方法 - >定位算法。任何 回复答案的数据会很棒。
答案 0 :(得分:1)
如果表现是你所担心的,那将取决于 您正在使用的文件系统类型。较旧的文件系统 ext2保留 线性列表中的目录条目。在a中查找特定文件 目录可能非常昂贵。
现代文件系统,如ext4, btrfs, xfs 和其他人通常有索引目录,a的访问时间 巨大目录中的单个文件并不明显 与访问小目录中的单个文件不同。事实上, 在许多子目录上传播数百万个文件可能会给你 查找性能比将它们全部放在一个目录中要慢!
如果你正在编写自己的软件,它会做很多线性的 扫描整个文件集或按名称访问单个文件, 你走哪条路可能并不重要(只要你 access it the right way
我会更担心管理文件系统 应用。典型的系统实用程序(如ls)可能使用readdir()或 目录的线性扫描。防止系统管理员拥有 诊断目录中的问题时可怕的头痛 结构,我选择了一些非常浓密的东西和10k-20k的条目 每个目录(假设索引目录)都可以。
选择布局时,您可能需要注意限制 每个目录允许的子目录数(即ext4上的64000)。