gpt4 book ai didi

mongodb - 文件存储+权限 : mongodb vs filesystem approach

转载 作者:可可西里 更新时间:2023-11-01 09:11:04 25 4
gpt4 key购买 nike

我正在开发的 java web 应用程序允许用户将文件(图片和文档)上传到他们的配置文件并定义这些文件的访问规则(定义哪些其他用户能够查看/下载文件)。访问控制/权限系统是定制的,规则与用户配置文件和实际文件条目一起存储在 mongoDB 中。

知道我需要分布式和容错的应用程序和存储,我需要弄清楚哪种是文件存储的最佳策略。

我应该将 mongoDB 中的文件存储在包含描述和访问规则的文件文档所在的文件集合中吗?

或者我应该将文件存储在服务器的文件系统中,并将路径保留在 mongoDB 文档中?使用文件系统方法,我仍然能够强制执行用户定义的访问权限吗?如何执行?最后,在文件系统方法中,我如何跨服务器分发文件?我应该为此使用专用服务器还是可以将文件存储在 webapp 服务器或 mongodb 服务器上?

非常感谢您的所有见解!感谢任何帮助或反馈。

亚历克斯

最佳答案

有几种选择:

  • 将文件放在存储服务(例如 S3)中:简单且空间大,但性能较差
  • 将文件放入本地文件系统:速度快但无法扩展
  • 将文件放入 mongodb 文档:简单、强大且可扩展,但限制在 16MB 以内
  • 使用 MongoDB 的 GridFS 层。功能有限,但它是为可扩展性(由于分片)而设计的,而且速度也相当快。请注意,您可以将有关文件的信息(权限等)直接放入文件的元数据对象中。

在您的情况下,听起来最后一个选项可能是最好的,有相当多的用户从 FS 切换到 gridFS,并且它对他们来说效果很好。注意事项:

  • gridfs 分片有效但并不完美:通常只有数据分片,元数据不分片。没什么大不了的,但是带有元数据的分片必须非常安全。
  • 在与您的核心数据分开的 mongodb 集群中使用 gridfs 可能是有益的,因为要求(存储、备份等)通常是不同的。

关于mongodb - 文件存储+权限 : mongodb vs filesystem approach,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8397559/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com