Linux 服务器上文件夹,放了几十万张图片,请求一张图片,检索图片文件名会不会很慢?

2017-10-26 08:29:17 +08:00
 iConnect
每张图片的文件名都是 hash 过的 16 位随机文件名,web 请求一张图片:

https://xxx.com/api/img/***.png

要在一个有大量的图片文件夹中找出 ***.png 会不会很慢?有什么检索的索引方式吗?
4099 次点击
所在节点    问与答
14 条回复
chenset
2017-10-26 08:34:10 +08:00
目录分层一下就好了. 按时间什么的.
whileFalse
2017-10-26 08:38:23 +08:00
会。
建议将 123456789abcdef.png
存储为 12345/6789a/bcdef.png
或者是 12345/6789a/123456789abcdef.png
ksupertu
2017-10-26 08:46:06 +08:00
装个 ceph 集群就行了
asdf123101
2017-10-26 08:48:38 +08:00
图片路径存数据库或者哈希表,文件名:路径,通过文件名搜索。
Izual_Yang
2017-10-26 09:04:52 +08:00
@whileFalse 分太多文件夹了吧,一般不都是 12/ab/这样的么
zhujunsan
2017-10-26 09:18:05 +08:00
@whileFalse  如果是 ext4 文件系统的话,对文件夹内文件对数量基本上没啥限制,不过对子目录有限制,所以 5 位哈希感觉太长了

@Izual_Yang 嗯我也觉得。。。一层或者两层就够了
msg7086
2017-10-26 09:44:22 +08:00
在知道文件名的情况下直接访问文件不会很慢。列表的时候才会慢。
为了便于管理,一般建议哈希分子目录。
12/34/123456789xxyyzz.png
这已经把规模降到 6 万分之一了。
zmj1316
2017-10-26 14:07:30 +08:00
ext4 的目录应该是可以用 Btree 存的吧,默认不开的话看一下文档手动开启就行了,应该没必要手动分层
xvx
2017-10-26 14:15:06 +08:00
我见过 windows 服务器放大量的文件,连文件夹都打不开。
很多博客默认按照年月来分文件夹存储是非常合理的。
hugee
2017-10-26 14:22:00 +08:00
指定了图片路径不会慢,但别去目录 ls
northisland
2017-10-26 14:25:49 +08:00
召唤数位 linux 文件系统大神的到来~~
dalibaxiaoliba
2017-10-26 14:35:56 +08:00
楼主试一下 weed-fs
ququzone
2017-10-26 14:42:12 +08:00
https://github.com/ququzone/image-server
可以试试这个项目,专门的图片服务器,基于 seaweedfs
pubby
2017-10-26 14:44:24 +08:00
@dalibaxiaoliba 这个不错,一直用它存图片和各种文件

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/400798

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX