几百万张缩略图硬盘存储方案? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
hardwork

几百万张缩略图硬盘存储方案?

  •  
  •   hardwork 2019 年 6 月 3 日 4919 次点击
    这是一个创建于 2516 天前的主题,其中的信息可能已经有所发展或是发生改变。

    怎么存储才能较高效读写,每张图片也就几 k 到几十 k,之前存在一个文件夹下,inode 太大,rm -rf 都要删很久很久,就像卡死了一样.

    c++的小服务,有什么存储库可用吗,或者如何分散合并到硬盘?

    30 条回复    2019-06-04 15:05:27 +08:00
    keepeye
        1
    keepeye  
       2019 年 6 月 3 日
    上 hdfs 之类的文件系统?小文件合并存储,当然读取的话要走接口了
    also24
        2
    also24  
       2019 年 6 月 3 日
    噗嗤,之前存过几十万张,每张 0.5~1MB 左右的,即使丢进 SSD,读写的时候还是想死,关注一下大家有什么好方案
    hardwork
        3
    hardwork  
    OP
       2019 年 6 月 3 日
    @keepeye 只是个小服务,而且这个量级好像也没必要使用第三方云服务,linux 自带文件系统搞定搞定最好
    aquariumm
        4
    aquariumm  
       2019 年 6 月 3 日 via Android
    最方便的就是生成然后上传到 oss
    Jirajine
        5
    Jirajine  
       2019 年 6 月 3 日 via Android
    用私有格式直接合并存储合并读写
    andyzhshg
        6
    andyzhshg  
       2019 年 6 月 3 日
    leveldb 之类的 kv 应该可以吧?
    keepeye
        7
    keepeye  
       2019 年 6 月 3 日
    要不 直接丢到 mongodb 里?
    Livid
        8
    Livid  
    MOD
    PRO
       2019 年 6 月 3 日 via iPhone   3
    早点习惯用云解决这类问题,就可以早点从这类问题背后的性能、备份、CDN 等等更细节的问题里解脱出来。
    goreliu
        9
    goreliu  
       2019 年 6 月 3 日 via Android
    这个还要看具体是怎么读写的。比如读、新增、删除文件都是什么频率的。

    如果图片的大小相差不大,可以这样简单实现。把图片按大小分成几类,比如小于 10k、10k - 30k、30k、50k 等等。然后为每类图片分配一个大文件和索引文件。像 10k 文件按 10k 的块来使用,在索引文件记录文件名和对应文件偏移。

    这样虽然会浪费一些空间。但写入读取(因为省去打开关闭过程,比单文件读要快)、删除(只需要写索引文件)图片都非常快。

    如果不想费事,可以找个 kv 数据库,但性能会差些。
    swulling
        10
    swulling  
       2019 年 6 月 3 日 via iPhone
    本地的话建议用 LevelDB 或者 rocksdb 这种本地 kv 存储
    Klingon
        11
    Klingon  
       2019 年 6 月 3 日
    图片量不小了。可以用阿里云腾讯云,不放心的话可以用 minio 搭建个私有存储。
    dsnake1984
        12
    dsnake1984  
       2019 年 6 月 3 日
    腾讯 cos 便宜好用~ 不烦神。
    mYYnSmiTEQWcCwAr
        13
    mYYnSmiTEQWcCwAr  
       2019 年 6 月 3 日 via Android
    seaweedfs
    snappyone
        14
    snappyone  
       2019 年 6 月 3 日 via Android   1
    一定自己存的话肯定不能丢一个文件夹,文件名 hash 之后取 hash 前缀分文件夹存试试
    xuddk727
        15
    xuddk727  
       2019 年 6 月 3 日
    了解一下 mr4c, google earth engine?
    aec4d
        16
    aec4d  
       2019 年 6 月 3 日
    直接用 ext4 存了千万级缩略图的表示,没什么性能问题,跑的很欢,不需要特别做优化
    原图是存在了 S3 上,本地缩略图再不济可以获得原图再生成一次缩略图

    https://www.kernel.org/doc/html/latest/filesystems/ext4/index.html
    opengps
        17
    opengps  
       2019 年 6 月 3 日 via Android
    必须用单机环境的话,你得知道目录下最多 500 张
    justou
        18
    justou  
       2019 年 6 月 3 日
    HDF5 可以了解一下
    https://www.hdfgroup.org/
    6j1A6v70lEv5n2U2
        19
    6j1A6v70lEv5n2U2  
       2019 年 6 月 3 日 via iPhone
    @opengps 为啥最多 500 张?
    winglight2016
        20
    winglight2016  
       2019 年 6 月 3 日
    百万级的文件,单机不好搞了吧,不想上专门的文件系统,也可以导入 RMDB 里面
    loading
        21
    loading  
       2019 年 6 月 3 日 via Android
    minio
    可以做分布式了,都说是开源的 aws s3
        22
    luozic  
       2019 年 6 月 3 日 via iPhone
    小图 不上 DB 那种存文件的,读取不是想死?
    opengps
        23
    opengps  
       2019 年 6 月 3 日 via Android
    @dog 只是个概念,单个文件夹之下的数量不宜过多
    wbrobot
        24
    wbrobot  
       2019 年 6 月 3 日
    豆瓣是自己造轮子解决的:beansdb
    zzl22100048
        25
    zzl22100048  
       2019 年 6 月 4 日   1
    两个亿的图片怎么比较好?频繁读,少量写
    FrankHB
        26
    FrankHB  
       2019 年 6 月 4 日
    @Livid 单机呢?
    然后不管多出来的网络成本,确定把问题转换为风险管控和砍价上兜得住么。
    二次开发成本呢?
    (怕是要和抠脚皮大汉打一架:Who does that server really serve?)
    我现在要在本机索引万以上的大小 1M 左右的截图,要求能任意两图之间快速预览加注标签近似比较自动去重,持久存储效率平均不低于 FLIF 的 30%;暂且先不管价钱,有什么 IaaS 方案能救吗?
    tenwx
        27
    tenwx  
       2019 年 6 月 4 日
    @FrankHB zfs 可以做到自动去重,但可能有点耗内存
    FrankHB
        28
    FrankHB  
       2019 年 6 月 4 日
    @tenwx 不是基于直接二进制比较或者 hash 的去重,跟内容特征相关,基本上肯定是要二次开发的。
    不过这个是没支持手动标注分类的优先级高……考虑到我的输入数据中大部分特征相似分类也不太复杂,但是各种奇形怪状,不容易自动提取,短时间内弃疗了,实在不行等标记完一并手动凑数吧。
    个别情况有损压缩和无损图源会在同一个地方倒是适合自动,不过数量不多也算了……
    yanzixuan
        29
    yanzixuan  
       2019 年 6 月 4 日
    @keepeye hbase 吧。还挺好用的。
    yanzixuan
        30
    yanzixuan  
       2019 年 6 月 4 日
    @winglight2016 riak 吧。分布式的。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5280 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 106ms UTC 06:00 PVG 14:00 LAX 23:00 JFK 02:00
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86