微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Linux上用户私人文件夹的最佳文件夹分布是什么?

在我们的网站中,用户可以有许多私人文件。 我们正在考虑什么是最好的发行版本,以避免破坏服务器的性能。这些文件通过Apache提供,每当用户需要pipe理时都应该列出。

我们现在的第一个方法是:

var first_level = (int) $user_id/100; var files_folder = /uf/$first_level/$user_id

这给了我们第一级的100个文件夹和许多二级文件夹。 由于不是所有的用户都有文件,现在我们大约有8万个用户,这意味着大约每秒800个文件夹级别的文件夹 。

你对这种方法有什么看法?

编写一个服务来保持两个文件夹同步?

压缩zip文件本身以外的所有文件

shell脚本循环通配符匹配的目录

文件夹大小的Linux

批/蝙蝠一次复制文件夹和内容

如何recursion更改WAMP服务器上的文件夹权限

XAMPP正在寻找在htdocs而不是域文件夹的图像

创buildWindows 8batch file以recursion方式复制,重命名和保存子目录中的文件

Bash脚本:查找所有文件types和path

Windows命令行 – 确定文件内容大小并保存为数值

如果你的用户ID值是相当均匀分布的,而且这个数字还会继续增加,那么你可能应该多一些平衡树。 什么是最好的,部分取决于你认为你最终会在数字方面。 大的目录比小的目录搜索速度慢。 虽然800文件不是很糟糕,但也不是很好。 如果你想坚持2层,你有N个用户(作为你的目标人群),那么你应该在第一层的目标为sqrt(N)文件夹,在每个第二层目录的sqrt(N)文件夹。 对于N = 80,000,这意味着每个级别大约300个文件夹。 如果您想考虑三层安排,请将平方根替换为立方体根。 你也可能会发现使用模数运算可以使你的分布更平滑。 也就是说,第一级可能更好地计算为:

var first_level = (int) ($user_id % 300);

假设您的未识别语言使用%作为模运算符。

CPAN使用基于3层的系统:第一层是用户登录ID的第一个字母; 第二层是前两个字母,第三层是完整的登录ID。

我读了一些网站(大学,IIRC)发现名字的第一个和最后一个字母给了一个很好的系统。

一个流行的可扩展文件夹命名方案,如果你不关心可读性,就像squid使用: <4-bit>/<8-bit>/<remaining-116-bit-of-md5-of-whatever-lookup-key>或<whatever-unique-key-you-have> ,所以对于user-id 1,文件夹路径可以是/ c4 / ca42 / 1。

在这种情况下,第一层是最多16个目录,第二层最多256个目录。

这种方法的一大优点是文件夹的分布在统计上是统一的,无论你的用户名/用户名是否有空洞或簇(小用户ID因为摩擦而趋向于未被使用)。

你没有说什么文件系统用来存储文件。 您应该很容易创建一个随机目录树,其中包含您期望的实际负载的特征。 然后你可以运行实验 ,告诉你正在考虑的各种策略的表现。

我无法轻松找到有关哪些文件系统使用有效的数据结构(如大型目录的B树)的信息。 我确实发现了MacOS HFS的说法。 我会研究XFS或其他高性能日志文件系统。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐