如何有效的存储大批量小文件,并支持未来批量的读取这些文件内容? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
melonux
V2EX    Python

如何有效的存储大批量小文件,并支持未来批量的读取这些文件内容?

  •  
  •   melonux 2019 年 3 月 6 日 3221 次点击
    这是一个创建于 2513 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如我有一个爬虫,会下载很多新闻页面的原始 html。我目前是把他们保存在 mongodb 里了。但是当我要重新解析这些 html 文件的内容时,我用下述代码来执行解析时,发现从 mongodb 读取成为了瓶颈。每次只能返回 100-200 个 item,之后就要等个几秒再返回下一波。
    for i in db.collection.find({}):
    parse(i['html'])

    我想知道有什么系统,可以方便的存储这些小文件(一般都小于 1MB ),而又能提供较高的批量读取吞吐量。

    非常感谢。
    17 条回复    2019-03-07 10:52:44 +08:00
    mingtiny11
        1
    mingtiny11  
       2019 年 3 月 6 日
    随便啥 blob store 都可以呀
    ShangAliyun
        2
    ShangAliyun  
       2019 年 3 月 6 日
    为啥不选择对象存储?
    lihongjie0209
        3
    lihongjie0209  
       2019 年 3 月 6 日
    你这么写当然会卡了, 所有的时间话费在数据库 IO 上了, 用多线程
    melonux
        4
    melonux  
    OP
       2019 年 3 月 6 日
    @lihongjie0209 我知道时间都是在 io 上的。问题在于,mongodb 返回数据太慢了。因为我把文件内容作为 json 的一个字段进行存储的。我要解决的就是如何更有效的存储,以便能快速大批量读取。
    melonux
        5
    melonux  
    OP
       2019 年 3 月 6 日
    @mingtiny11 您指的 blob store 是什么? mysql 的 blob 字段吗?
    melonux
        6
    melonux  
    OP
       2019 年 3 月 6 日
    @ShangAliyun 对象存储指的是什么?
    mingtiny11
        7
    mingtiny11  
       2019 年 3 月 6 日
    @melonux 对象存储呀。
    mingtiny11
        8
    mingtiny11  
       2019 年 3 月 6 日
    @melonux 各大云厂商的对象存储了解下
    melonux
        9
    melonux  
    OP
       2019 年 3 月 6 日
    @mingtiny11 谢谢,我学习一下
    lihongjie0209
        10
    lihongjie0209  
       2019 年 3 月 6 日
    @melonux IO 慢你就多线程啊,mogo 不至于就给一个线程就卡死了
    ShangAliyun
        11
    ShangAliyun  
       2019 年 3 月 6 日
    @melonux 阿里云的叫 OSS,腾讯云的叫 COS,本质都是 Object Storage
    melonux
        12
    melonux  
    OP
       2019 年 3 月 6 日
    @ShangAliyun 3Q,我刚看了阿里云的 OSS。存储好便宜啊,而且通过 ECS 访问还不收流量费。我明天试试看这个的读取速度有多快。
    melonux
        13
    melonux  
    OP
       2019 年 3 月 6 日
    @lihongjie0209 好的。我也去试试多线程的读 mongodb。
    sunnyadamm
        14
    sunnyadamm  
       2019 年 3 月 6 日 via Android
    楼上正解,我就不多说了
    billlee
        15
    billlee  
       2019 年 3 月 6 日
    太小的文件也不适合对象存储吧,印象中腾讯云 object storage 的分块大小是 1MB. 如果访问的 pattern 允许,还是应该把小文件打包成大一点的
    julyclyde
        16
    julyclyde  
       2019 年 3 月 7 日
    早几年大家都是套 XML
    现在改 JSON 了
    mingtiny11
        17
    mingtiny11  
       2019 年 3 月 7 日
    @billlee 一般 object 存储底层都是把小文件拼成大文件的,不然怎么高性能。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5518 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 35ms UTC 06:59 PVG 14:59 LAX 22:59 JFK 01:59
    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