使用hash散列目录优化文件存储路径

文件路径的生成方式有很多

比如year/month/day/timestamp.jpg

但是这种方式的缺点是,每个目录下的文件数量都很不均匀,造成空间和性能上的浪费,还可能会出现重复文件的存在。

注:所有文件系统的每个目录下所能容纳的文件数量是有限的。当项目数量过大的时候,会降低文件索引速度,所以权衡一个目录下应该保存多少文件是很必要的。保存得多了会影响性能,保存得少了会造成目录太多和空间浪费。

而类似这种形式,a4/h3/a4h31191622119e32f5f3dl.jpg

其实是通过hash来创建的目录,可以对[当前时间+文件名]进行hash运算,hash结果的前2位作为一级目录,第3、4位作为二级目录,hash同时也作为文件名。

这样每级目录最多有16x16=256个子目录

不过还有个小问题,就是有极小的几率两个文件的hash相同,文件数量不是特别大的话可以忽略不计。

实在不放心可以通过更改目录的hash来改进,比如只用文件名的hash作为目录名

发表评论

[/0o0] [..^v^..] [0_0] [T.T] [=3-❤] [❤.❤] [^v^] [-.0] [!- -] [=x=] [→_→] [><] 更多 »
昵称

抢沙发~