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

2018-09-04 11:29:54 +08:00
 ninomi

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

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

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

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

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

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

而且这个文件大小真的会比你想象中要大。
jpmorn
2018-09-04 23:07:42 +08:00
对象存储
msg7086
2018-09-04 23:39:01 +08:00
补充一句,文件系统也是一个数据库。

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

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

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

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

© 2021 V2EX