如果使用Mongo架构,用于存储用户文件的良好架构是什么?

时间:2016-02-02 06:25:10

标签: node.js mongodb mongoose nosql

简单地说,我需要构建一个应用程序来为用户存储图像。因此,每个用户都可以上传图片并在应用上查看。 我正在使用NodeJS和Mongo / Mongoose。

这是处理这种情况的好方法:

  1. 当用户上传图片文件时,我会将其存储在本地。
  2. 我将使用Multer存储文件。
  3. 每个用户都有一个由用户名创建的单独文件夹。
  4. 在用户架构中,我将定义一个记录文件路径的字符串数组。
  5. 当用户需要检索文件时,我将检查文件路径,从本地磁盘中检索它。
  6. 现在我的问题是:

    • 这是一个好方法(存储在本地文件系统中并在架构中存储路径吗?
    • 如果文件大小很小(<1MB),有没有理由使用GridFS?
    • 如果我打算稍后使用S3存储文件,这是一个好策略吗?

    这是我第一次使用像这样的数据库应用程序,所以非常感谢一些指导。

    谢谢。

1 个答案:

答案 0 :(得分:1)

1)是的,将数据库中的位置存储在应用程序中以及其他地方的物理文件是一个合适的解决方案。根据数据存储和文件数量的不同,它可能对存储在数据库中是有害的,因为如果存在许多大文件,它可能会阻碍备份和复制等过程

2)我承认我不了解GridFS,但是文档说它适用于大于16MB的文件,所以听起来你还不需要它

3)S3是一款出色的产品,它可以通过服务和其他许多方式实现边缘缓存和备份。我认为您的选择需要查看AWS提供的内容以及是否需要它,例如全局缓存或复制到不同的国家和数据中心。不同的功能导致不同的价格点,但我个人觉得S3平台非常好,并且有大约500G加载到那里用于不同的目的。