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
Stitch
V2EX  ›  Python

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

  •  
  •   Stitch · 2016-06-30 10:47:04 +08:00 · 5929 次点击
    这是一个创建于 3076 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

    方案二:使用 mongoDB

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

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

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

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

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

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

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

    勤盯着 RAID 健康度就行了
    eric6356
        4
    eric6356  
       2016-06-30 11:08:52 +08:00
    不是大文件的话,就不用 Gridfs 了。
    haozhang
        5
    haozhang  
       2016-06-30 11:49:48 +08:00 via iPhone
    我觉得你这玩意像是一个文件网盘,你买个 nas 就完了啊
    qqmishi
        6
    qqmishi  
       2016-06-30 12:03:54 +08:00
    内网搭个直链网盘, CMS 直接链接过去就好了吧
    tvallday
        7
    tvallday  
       2016-06-30 12:05:49 +08:00 via iPhone
    为什么要把简单问题复杂化?时间太多了?
    Stitch
        8
    Stitch  
    OP
       2016-06-30 12:08:31 +08:00
    @eric6356
    这些图片、文档什么的,使用 mongodb 的 Gridfs 有没有什么坏处?
    ibigbug
        9
    ibigbug  
       2016-06-30 12:30:03 +08:00
    我们这边直接用 OSS 了。
    9hills
        10
    9hills  
       2016-06-30 12:31:42 +08:00 via iPhone
    这个需求,放硬盘,定期 rsync 妥妥的,没必要复杂
    dawncold
        11
    dawncold  
       2016-06-30 12:32:53 +08:00
    没必要复杂
    yannxia
        12
    yannxia  
       2016-06-30 12:37:09 +08:00
    mongoDB 这个缺点就没有? 这种文件还不如存服务器,用数据库真没啥意义。单独挂个硬盘,不够继续上新盘
    eric6356
        13
    eric6356  
       2016-06-30 16:25:57 +08:00
    @Stitch 相对而言性能会差吧。 Gridfs 会分 chunk 存储文件,会有不必要的查询。
    xsseroot
        14
    xsseroot  
       2016-06-30 17:18:30 +08:00
    mongoDB 数据库坏了,看你的文件怎么找回~
    ila
        15
    ila  
       2016-06-30 22:20:44 +08:00 via Android
    同步不高大上, flask 更有成就感→_→
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   989 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 22:51 · PVG 06:51 · LAX 14:51 · JFK 17:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.