推荐学习书目
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
Stitch
V2EX  ›  Python

请教高手:公司内网基于 Flask 做的 CMS 系统,对于上传文件的管理,使用什么方案比较好

  •  
  •   Stitch · Jun 30, 2016 · 6897 views
    This topic created in 3610 days ago, the information mentioned may be changed or developed.

    公司现在部署一个内部使用 Web 形式的 CMS 系统,有附件的需求,现在基于 Flask 框架开发。

    • 系统规模:预计每个月会产生 2k 左右的文件,包括图片、 office 文档、压缩文件、日志等
    • 系统要求:维护简单,不要经常去备份文件,不能随着文件的增长速度变慢
    • 文档操作:文件上传,下载(图片直接浏览),文件内容不更新,文件删除
    • 文件重要性:重要性一般,文件丢失也不要紧。
    • 文件大小:几十 k~16M (最大)

    经过尝试,有下面两个技术方案可行

    方案一:直接存放在 linux 的文件夹下,按照月份分割

       方案优点:简单,不依赖其他数据库
       方案缺点:文件规模大,系统会变慢,数据管理困难
    

    方案二:使用 mongoDB

      方案有点:这个不必陈述,很多
      方案缺点:基本没有
    

    使用 mongodb 有一个疑问,是使用二进制格式存储文件,还是使用 Gridfs 存储文件。

    有没有其他更合适的方案,请多多指点

    15 replies    2016-06-30 22:20:44 +08:00
    tomz
        1
    tomz  
       Jun 30, 2016
    我是外行。随便说说。 cms 不能用 flask 吧,起码用 django 。 cms 有现成的开源方案吧,不用自己实现。有 plone 和不维护了的 zope2.还有 java 的方案。以及付费的广州易度的方案。
    tomz
        2
    tomz  
       Jun 30, 2016
    内网用 zope 这样的耗费资源的方案就行。
    realpg
        3
    realpg  
    PRO
       Jun 30, 2016
    内网啊 这年头电脑这么便宜 尤其是存储根本不吃 CPU 内存就吃稳定的文件系统

    弄个小破文件服务器, SOFTRAID 1 就行 然后每组再配一个淘汰 PC 用来 rsync 做灾难应急备份,破 PC 就行
    然后用 NFS 挂载到 webserver 上,直接按照年月日处理目录就行

    如果时间长了比如 2026 年容量不太够了 再弄一组 把 2016 2017 2018 挂这个 NFS , 2026 2027 啥的挂另外一个

    读取操作直接访问 NFS 机器自带静态 webserver 写操作通过 python webserver 往上面传

    勤盯着 RAID 健康度就行了
    eric6356
        4
    eric6356  
       Jun 30, 2016
    不是大文件的话,就不用 Gridfs 了。
    haozhang
        5
    haozhang  
       Jun 30, 2016 via iPhone
    我觉得你这玩意像是一个文件网盘,你买个 nas 就完了啊
    qqmishi
        6
    qqmishi  
       Jun 30, 2016
    内网搭个直链网盘, CMS 直接链接过去就好了吧
    tvallday
        7
    tvallday  
       Jun 30, 2016 via iPhone
    为什么要把简单问题复杂化?时间太多了?
    Stitch
        8
    Stitch  
    OP
       Jun 30, 2016
    @eric6356
    这些图片、文档什么的,使用 mongodb 的 Gridfs 有没有什么坏处?
    ibigbug
        9
    ibigbug  
       Jun 30, 2016
    我们这边直接用 OSS 了。
    9hills
        10
    9hills  
       Jun 30, 2016 via iPhone
    这个需求,放硬盘,定期 rsync 妥妥的,没必要复杂
    dawncold
        11
    dawncold  
       Jun 30, 2016
    没必要复杂
    Yanickkk
        12
    Yanickkk  
       Jun 30, 2016
    mongoDB 这个缺点就没有? 这种文件还不如存服务器,用数据库真没啥意义。单独挂个硬盘,不够继续上新盘
    eric6356
        13
    eric6356  
       Jun 30, 2016
    @Stitch 相对而言性能会差吧。 Gridfs 会分 chunk 存储文件,会有不必要的查询。
    xsseroot
        14
    xsseroot  
       Jun 30, 2016
    mongoDB 数据库坏了,看你的文件怎么找回~
    ila
        15
    ila  
       Jun 30, 2016 via Android
    同步不高大上, flask 更有成就感→_→
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3132 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 94ms · UTC 12:39 · PVG 20:39 · LAX 05:39 · JFK 08:39
    ♥ Do have faith in what you're doing.