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

2017-12-15 10:46:58 +08:00
 drakeet
我的小应用「纯纯写作」( https://www.v2ex.com/t/407748 )最近一两天将实施文件迁移回归应用私有目录,并且在考虑完全使用数据库来存储文件...🤔对这数据库直接存储文件的坑并不熟悉,但原先采用文件目录来管理,实在是诸多不便。纯纯写作的文件只有纯文本,一个文本最长想必不会超过 1MB,不知道有人对此比较熟悉的提供下参考意见吗?

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

目前我偏向于完全使用数据库,主要是能够更加集中管理、一体化,查询和管理方便。
2389 次点击
所在节点    程序员
10 条回复
whypool
2017-12-15 10:55:14 +08:00
没其他数据,比如图片什么的,一般都是数据库直接存字符串;
参考网页的富文本编辑,在数据库存的也是各种字符串;
iVanilla
2017-12-15 10:55:56 +08:00
SQLite 能保存多长的文本我不清楚,我也无法确定性能是否会有提升。
我之前用的 MarkdownX 也是把 md 文件保存在 SD 卡的 Android 目录中的。
绝大多数网站都是把内容保存到数据库的,但如果保存到文件,性能会提升不少,因为访问数据库较慢,往往是性能瓶颈。
saulshao
2017-12-15 11:06:09 +08:00
使用数据库保存文件基本上不算是最佳实践。
文件系统本身的效率经过多年实践,其实是相当可观的。
大多数的做法都是文件本身放文件系统,然后数据库里面只建立索引表。
drakeet
2017-12-15 11:15:10 +08:00
@saulshao 这样有考虑过,怕断层,比如数据库被删了,但文件没被删,就变成垃圾文件了——不过这个问题不大,在私有目录下,这种情况应该极少发生。
drakeet
2017-12-15 11:16:39 +08:00
我想的是,如果性能差别不大的话,那么绝对是完全数据库存储会方便很多,这是可以接受性能损失的。因为我不需要一次性读取或操作大量文件。
loading
2017-12-15 11:18:03 +08:00
数据库取文本的时候,会锁表什么的。
大并发性能始终比不上简单的 nginx。
loading
2017-12-15 11:27:13 +08:00
数据库只要存图片路径进行,静态文件还是交给 nginx 吧,并发起来,很简单。
drakeet
2017-12-15 11:31:45 +08:00
@loading 谢谢,我这边是客户端需求,使用 SQLite,因此不存在 nginx _(:з」∠)_
twor2
2017-12-15 11:40:22 +08:00
@loading 我最近一直在想 能不能 把 Django 的 templates 放在数据库里面,这也解答了我的疑虑
drakeet
2017-12-15 11:47:36 +08:00
SQLite,不需要并发,文件内容包含历史记录文件,单个文件长度应该极少上十万字的,都是纯文本,但可能会很多,越来越多。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/414948

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX