10

自建网盘文件存储用 POSIX 文件系统还是 MongoDB 还是 minio 等 OSS?

 2 years ago
source link: https://www.v2ex.com/t/840102
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

V2EX  ›  程序员

自建网盘文件存储用 POSIX 文件系统还是 MongoDB 还是 minio 等 OSS?

  pennai · 21 小时 3 分钟前 · 707 次点击

在尝试自己写一个网盘,了解到文件存储大概可以有三种方式
1.直接存在 POSIX 等文件系统里
2.MongoDB 的 GridFS
3.minio 等 OSS
想请问以上三种有什么优劣?在多用户、文件数少时,哪个会比较省心便捷?另外有一个功能需求是需要在目录 /文件变动时自动增量同步,如果是 POSIX 了解到 inotify+rsync 可以实现,另外两种是否有相似的办法呢?
感谢解答

9 条回复    2022-03-14 14:51:54 +08:00

documentzhangx66

documentzhangx66      20 小时 38 分钟前

最方便 + 省心的当然是直接存到 MongoDB ,不是 MongoDB GridFS ,而是直接存到 MongoDB 的 Table 里。原因:

1.MongoDB 后期扩容是所有数据库里最无脑最方便的。无论是扩带宽还是扩存储,直接加节点,跑个加节点的脚本就好。

2.把文件存到 MongoDB 里,直接用数据库方法去进行批量管理,很方便。

劣势:性能一般,存储文件需要切片,会浪费一定空间。

mengyx

mengyx      10 小时 2 分钟前 via Android

minio 会好一点吧,能够同时兼容各个云厂商的对象储存服务

libook

libook      8 小时 27 分钟前

看你用户规模多大,规模越大越建议使用大厂踩过坑的方案。

如果只是家庭使用,就用一些 NAS 系统提供的方案就好了,大多是 POSIX 文件系统一把梭,安装配置和维护都比较方便。

pennai

pennai      8 小时 10 分钟前

@documentzhangx66 MongoDB 里有像 inotify 这样云端变动之后通知用户(或设钩子)的机制吗?
@mengyx 网上搜了圈好像没看到 minio 有云端文件变动事件通知的机制

pennai

pennai      8 小时 9 分钟前

@libook 是打算写一个多用户的,类似百度网盘这种而非私有云,NAS 似乎满足不了?

libook

libook      7 小时 42 分钟前

@pennai #5 主流商业和开源 NAS 系统都是有多用户机制的,不过适合用户数量较少的情况,比如几百个。像群晖这种商业系统甚至把文件共享和公开分享的功能都做出来了。

像 SMB 、FTP 等主流文件传输协议是支持多用户的,SSHFS 、NFS 之类的传输协议是直接复用了 POSIX 文件系统本身的权限机制。

如果你要做安全机制的话,还要看是复用底层系统的安全机制还是自己重新做一套。

所以还是得看你想做什么规模的产品。

pennai

pennai      6 小时 40 分钟前

@libook 感谢,我去了解一些开源的 NAS

documentzhangx66

documentzhangx66      5 小时 27 分钟前

@pennai MongoDB 是通用型数据库,与 inotify 不是同一种东西,所以没有这种机制。但你可以自己写代码,添加更多机制。MongoDB 更灵活,开发、管理、维护都更方便,但牺牲性能。

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK