【问题标题】:What is a good architecture to store user files if using Mongo schema?如果使用 Mongo 模式,存储用户文件的良好架构是什么?
【发布时间】:2017-07-01 18:36:04
【问题描述】:
简单地说,我需要构建一个应用程序来为用户存储图像。因此,每个用户都可以上传图像并在应用程序上查看它们。
我正在使用 NodeJS 和 Mongo/Mongoose。
这是处理这种情况的好方法吗:
- 当用户上传图片文件时,我会保存在本地。
- 我将使用 Multer 来存储文件。
- 每个用户都有一个由他的用户名创建的单独文件夹。
- 在用户模式中,我会定义一个字符串数组来记录文件路径。
- 当用户需要检索文件时,我会检查文件路径,从本地磁盘检索。
现在我的问题是:
- 这是一种好方法吗(存储在本地文件系统中并在架构中存储路径?
- 如果文件很小 (
- 如果我打算以后使用 S3 存储文件,这是一个好策略吗?
这是我第一次使用这样的数据库应用程序,非常感谢一些指导。
谢谢。
【问题讨论】:
标签:
node.js
mongodb
mongoose
nosql
【解决方案1】:
1) 是的,将位置存储在数据库中以供在应用程序中使用,并将物理文件存储在其他地方是一个合适的解决方案。根据数据存储和文件数量,存储在数据库中可能是有害的,因为如果有很多大文件,它可能会阻碍备份和复制等过程
2) 我承认我不知道 GridFS,但文档说它适用于大于 16MB 的文件,所以听起来你还不需要它
3) S3 是一款出色的产品,可以通过服务和许多其他方式实现边缘缓存和备份。我认为您的选择需要查看 AWS 提供的内容以及您是否需要它,例如全球缓存或复制到不同的国家和数据中心。不同的功能导致不同的价格点,但我个人认为 S3 平台非常出色,并且为不同的目的加载了大约 500G。