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

后台做一个虚拟的文件管理,文件内容应该存放在数据库还是本地磁盘

  •  
  •   ninomi · 2018-09-04 11:29:54 +08:00 · 2421 次点击
    这是一个创建于 2276 天前的主题,其中的信息可能已经有所发展或是发生改变。

    要做一个文档的管理,包括各级目录以及文件,目录结构这些信息都是存在数据库里面的,本地并不存在真实对应的文件夹。通过富文本新建文件,有个疑问是文件是转成二进制存放到数据库中,还是存放在本地磁盘,数据库里之存放对应的文件路径用来访问。 考虑到放在数据库中便于管理,但是总感觉数据库里面放文件内容不大好。可是放在本地就难免发生本地文件按勿删可是数据库中获取的文件列表信息还在的问题。 请教一下大家都是怎么解决的,谢谢

    18 条回复    2018-09-04 23:39:01 +08:00
    lieh222
        1
    lieh222  
       2018-09-04 14:23:54 +08:00
    tar...233333333333333
    loading
        2
    loading  
       2018-09-04 14:31:59 +08:00 via iPhone
    文件系统
    ninomi
        3
    ninomi  
    OP
       2018-09-04 15:01:01 +08:00
    @loading 没有文件系统,只是一个小功能,暂时不考虑单独给它做一个文件系统
    SuperMild
        4
    SuperMild  
       2018-09-04 15:03:44 +08:00
    存本地磁盘,用 UID 做文件名,用特殊后缀名,一般人见到这样的文件就不会去动了。
    undeflife
        5
    undeflife  
       2018-09-04 15:11:11 +08:00
    为什么文件放磁盘就难免被误删? 这么随意的么...
    qiyuey
        6
    qiyuey  
       2018-09-04 15:28:24 +08:00 via Android   ❤️ 1
    OSS 或者 NAS
    ninomi
        7
    ninomi  
    OP
       2018-09-04 15:30:44 +08:00
    @undeflife 因为有过做项目迁移的时候把只迁移了数据库,磁盘的内容忘记了,导致文档没有办法读取的情况
    ninomi
        8
    ninomi  
    OP
       2018-09-04 15:35:43 +08:00
    @SuperMild 嗯,大家说的都是文件单独存放,看来把文件存到数据库是确实是不大好的
    SuperMild
        9
    SuperMild  
       2018-09-04 15:45:06 +08:00
    @ninomi 如果单个文件不会很大,文件数量不会很多,我觉得放数据库也行。刚开始肯定没有效率问题,到后面文件多了,到时再想要不要把文件导出来也不迟,反正导出来也不麻烦。

    另外,不管怎么存,注意备份。
    msg7086
        10
    msg7086  
       2018-09-04 16:00:30 +08:00   ❤️ 1
    @ninomi #3
    你需要了解一下「文件系统」这个词是什么意思。

    回到主题。
    放哪都一样,一个小功能而已。
    我手里几十万个 bt 种子全放数据库也没什么问题,几十 G 的表,又不大。
    play78
        11
    play78  
       2018-09-04 16:13:36 +08:00
    这个要看文件的大小吧。
    如果是那种 10KB 左右的小文件,那么存放在数据库反而更好,一次查询就完成数据读取。
    可以存放在 nosql 里面。mongodb 之类的。
    如果文件很大,那么肯定是存放在文件系统里面。
    如果文件很多并且很重要,那么用第三方的云存储也是可以的。

    比如用户头像,就可以直接存放在数据库就可以。
    ninomi
        12
    ninomi  
    OP
       2018-09-04 16:45:22 +08:00
    @msg7086 我理解的文件系统就是文件统一单独管理的项目,自己弄一个 FTP 或者其它第三方的文件管理
    moln
        13
    moln  
       2018-09-04 16:48:03 +08:00
    @msg7086 求分享种子
    learnshare
        14
    learnshare  
       2018-09-04 17:04:24 +08:00
    文件肯定要存硬盘,数据结构可以存数据库的
    msg7086
        15
    msg7086  
       2018-09-04 17:15:38 +08:00
    @ninomi 所以他说的不是你理解的文件系统,而是公认的文件系统。
    loading
        16
    loading  
       2018-09-04 20:15:03 +08:00 via iPhone   ❤️ 1
    额,我重新回答一下吧……

    就是直接放"本地磁盘"。这样更直接,出问题也好回复,硬盘硬件有问题也能很容易救回一部分数据。

    而且这个文件大小真的会比你想象中要大。
    jpmorn
        17
    jpmorn  
       2018-09-04 23:07:42 +08:00
    对象存储
    msg7086
        18
    msg7086  
       2018-09-04 23:39:01 +08:00   ❤️ 1
    补充一句,文件系统也是一个数据库。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4006 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 10:20 · PVG 18:20 · LAX 02:20 · JFK 05:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.