V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
iConnect
V2EX  ›  问与答

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

  •  
  •   iConnect · 2017-10-26 08:29:17 +08:00 via Android · 4262 次点击
    这是一个创建于 2611 天前的主题,其中的信息可能已经有所发展或是发生改变。
    每张图片的文件名都是 hash 过的 16 位随机文件名,web 请求一张图片:

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

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

    @Izual_Yang 嗯我也觉得。。。一层或者两层就够了
    msg7086
        7
    msg7086  
       2017-10-26 09:44:22 +08:00   ❤️ 1
    在知道文件名的情况下直接访问文件不会很慢。列表的时候才会慢。
    为了便于管理,一般建议哈希分子目录。
    12/34/123456789xxyyzz.png
    这已经把规模降到 6 万分之一了。
    zmj1316
        8
    zmj1316  
       2017-10-26 14:07:30 +08:00
    ext4 的目录应该是可以用 Btree 存的吧,默认不开的话看一下文档手动开启就行了,应该没必要手动分层
    xvx
        9
    xvx  
       2017-10-26 14:15:06 +08:00 via iPhone
    我见过 windows 服务器放大量的文件,连文件夹都打不开。
    很多博客默认按照年月来分文件夹存储是非常合理的。
    hugee
        10
    hugee  
       2017-10-26 14:22:00 +08:00 via Android
    指定了图片路径不会慢,但别去目录 ls
    northisland
        11
    northisland  
       2017-10-26 14:25:49 +08:00
    召唤数位 linux 文件系统大神的到来~~
    dalibaxiaoliba
        12
    dalibaxiaoliba  
       2017-10-26 14:35:56 +08:00
    楼主试一下 weed-fs
    ququzone
        13
    ququzone  
       2017-10-26 14:42:12 +08:00
    https://github.com/ququzone/image-server
    可以试试这个项目,专门的图片服务器,基于 seaweedfs
    pubby
        14
    pubby  
       2017-10-26 14:44:24 +08:00 via Android
    @dalibaxiaoliba 这个不错,一直用它存图片和各种文件
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3118 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 12:51 · PVG 20:51 · LAX 04:51 · JFK 07:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.