2015-02-09 23 views
0

我目前正在设计使用文件系统存储文档的简单存储库。数百万个文件具有未来潜力,我想用ID将一个ID映射到磁盘上的一个位置的策略是散列ID并使用部分散列来确定它应该存在的目录。适用于大型文件集的每个文件夹的理想文件数

一个常见操作是读取每个文件夹及其任何嵌套文件夹中的所有文件。

我的问题是:是否有理想的每个目录的文件比例?我有 的手段,通过ID - >位置算法来控制这个比例。任何 数据回复答案会很好。

回答

1

如果性能是您所担心的,这将取决于您正在使用的文件系统的 类型。旧的文件系统如 ext2保持 目录条目在一个线性列表中。在 目录中查找特定文件可能非常昂贵。

现代文件系统,如EXT4, btrfsxfs 和其他人通常都编入索引的目录,一个 单个文件的一个巨大的目录的访问时间不会是在访问一个文件明显 不同一个小目录。实际上, 在多个子目录中传播数百万个文件可能会使您的查询性能比将它们全部放在单个目录中时慢!

如果您正在编写自己的软件,它将对整个文件集进行大量线性 扫描或按名称访问单个文件,您可以采用哪种方式访问​​它(只要你 access it the right way

我会更担心管理 应用程序之外的文件系统。典型的系统工具(如ls)可以使用READDIR()或目录的 线性扫描。为防止系统管理员不必 可怕当诊断目录 结构中的问题时遇到头痛,我会用agr eeably丛生,并且每个目录10k-20k条目 (假定索引目录)将工作。

选择布局时,您可能希望注意限制每个目录允许的子目录数量(即ext4上的64000) 。

相关问题