我目前有一个名为"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/