V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
drakeet
V2EX  ›  程序员

客户端数据库话题:数据库存储管理文件 or 文件目录?

  •  2
     
  •   drakeet ·
    drakeet · 2017-12-15 10:46:58 +08:00 · 2362 次点击
    这是一个创建于 2512 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我的小应用「纯纯写作」( https://www.v2ex.com/t/407748 )最近一两天将实施文件迁移回归应用私有目录,并且在考虑完全使用数据库来存储文件...🤔对这数据库直接存储文件的坑并不熟悉,但原先采用文件目录来管理,实在是诸多不便。纯纯写作的文件只有纯文本,一个文本最长想必不会超过 1MB,不知道有人对此比较熟悉的提供下参考意见吗?

    如果我最终实践并了解这整个事情,也可以再来分享分享。

    目前我偏向于完全使用数据库,主要是能够更加集中管理、一体化,查询和管理方便。
    10 条回复    2017-12-15 11:47:36 +08:00
    whypool
        1
    whypool  
       2017-12-15 10:55:14 +08:00   ❤️ 1
    没其他数据,比如图片什么的,一般都是数据库直接存字符串;
    参考网页的富文本编辑,在数据库存的也是各种字符串;
    iVanilla
        2
    iVanilla  
       2017-12-15 10:55:56 +08:00 via Android   ❤️ 1
    SQLite 能保存多长的文本我不清楚,我也无法确定性能是否会有提升。
    我之前用的 MarkdownX 也是把 md 文件保存在 SD 卡的 Android 目录中的。
    绝大多数网站都是把内容保存到数据库的,但如果保存到文件,性能会提升不少,因为访问数据库较慢,往往是性能瓶颈。
    saulshao
        3
    saulshao  
       2017-12-15 11:06:09 +08:00   ❤️ 1
    使用数据库保存文件基本上不算是最佳实践。
    文件系统本身的效率经过多年实践,其实是相当可观的。
    大多数的做法都是文件本身放文件系统,然后数据库里面只建立索引表。
    drakeet
        4
    drakeet  
    OP
       2017-12-15 11:15:10 +08:00
    @saulshao 这样有考虑过,怕断层,比如数据库被删了,但文件没被删,就变成垃圾文件了——不过这个问题不大,在私有目录下,这种情况应该极少发生。
    drakeet
        5
    drakeet  
    OP
       2017-12-15 11:16:39 +08:00
    我想的是,如果性能差别不大的话,那么绝对是完全数据库存储会方便很多,这是可以接受性能损失的。因为我不需要一次性读取或操作大量文件。
    loading
        6
    loading  
       2017-12-15 11:18:03 +08:00   ❤️ 2
    数据库取文本的时候,会锁表什么的。
    大并发性能始终比不上简单的 nginx。
    loading
        7
    loading  
       2017-12-15 11:27:13 +08:00
    数据库只要存图片路径进行,静态文件还是交给 nginx 吧,并发起来,很简单。
    drakeet
        8
    drakeet  
    OP
       2017-12-15 11:31:45 +08:00
    @loading 谢谢,我这边是客户端需求,使用 SQLite,因此不存在 nginx _(:з」∠)_
    twor2
        9
    twor2  
       2017-12-15 11:40:22 +08:00 via iPhone
    @loading 我最近一直在想 能不能 把 Django 的 templates 放在数据库里面,这也解答了我的疑虑
    drakeet
        10
    drakeet  
    OP
       2017-12-15 11:47:36 +08:00
    SQLite,不需要并发,文件内容包含历史记录文件,单个文件长度应该极少上十万字的,都是纯文本,但可能会很多,越来越多。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3302 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 11:21 · PVG 19:21 · LAX 04:21 · JFK 07:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.