linux - 页面上显示大量文件的最佳目录结构

标签 linux file optimization directory structure

我目前有一个名为"file"的目录,其中包含来自大约 100,000 名成员的 200,000 张照片。当成员数量增加到数百万时,我预计"file"目录中的文件数量会变得非常大。文件的名称都是随机的,因为用户命名了它们。我唯一能做的就是按照创建这些文件的用户名对它们进行排序。本质上,每个用户都有自己的子目录。

我运行的服务器在 Linux 上,文件系统为 ext3。我想知道我是否应该将文件拆分到"file"目录中的子目录中?将文件分成许多子目录有什么好处吗?我看到一些争论认为这无关紧要。

如果我确实需要拆分,我正在考虑基于用户 ID 的前两个字符创建目录,然后使用用户 ID 创建第三级子目录,如下所示:

files/0/0/00024userid/  (so all user ids started with 00 will go in files/0/0/...)
files/0/1/01auser/
files/0/2/0242myuserid/
.
files/0/a/0auser/
files/0/b/0bsomeuser/
files/0/c/0comeuser/
.
files/0/z/0zero/
files/1/0/10293832/
files/1/1/11029user/
.
files/9/z/9zl34/
files/a/0/a023user2/
..
files/z/z/zztopuser/

我将一次显示 50 张照片。服务器获取静态显示文件的最有效(快速)方式是什么?全部来自同一目录还是来自 50 个不同的子目录?任何意见或想法表示赞赏。谢谢。

最佳答案

根据文件系统,一个目录可以容纳的文件数可能有上限。这一点,以及在一个目录中存储多个文件的性能影响,也在 another question 中进行了一定程度的讨论。 .

另请记住,您的文件名可能不是真正随机的 - 很多可能以“DSC”、“IMG”等开头。同样,不同的用户(或者实际上是同一用户)可能会尝试存储两个具有相同名称的图像,无论如何都需要对文件名进行一定程度的抽象。

关于linux - 页面上显示大量文件的最佳目录结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30720819/

相关文章:

linux - 按权限过滤文件的命令

linux - 有没有办法在 bash 脚本中的 awk 语句中定义用户定义的函数?

java - 无法生成文件 java.io.IOException : No such file or directory

python - 如何比较目录以确定哪些文件已更改?

java - 如何在不使用数组且仅使用三个比较器或比较的情况下从 4 个输入中找到第三大数字

python - 如果在不需要边界的 scipy (Python) 中使用带有最小化器的边界,我可以忽略来自 scipy 的警告吗?

linux - 在将文件发送到管道之前在文件的顶部和底部添加行

linux - NUMA 感知缓存对齐内存分配

file - 将文件20140914_foo.pdf重命名为2014-09-14 Sunday.pdf

sql - 如何将此子查询优化为连接?