Nodejs在文件系统中存储数十亿个图像

时间:2017-10-10 12:48:04

标签: node.js mongodb filesystems multer directory-structure

我是nodejs的新手,目前我正在使用mongodb数据库处理Node Web API。

  • 根据项目要求,用户应该可以上传 他们的个人资料照片和封面照片。
  • 并且可能有数十亿的用户帐户

在做了一些研究之后,我发现在文件系统中存储图像比在数据库中存储更好"

所以现在我的计划是将图像保存在文件系统中。 但,   - 可以在一个文件夹中放置有限数量的文件(基于操作系统)   - 应该能够快速访问文件

由于上述要求,为了存储大量图像,我们需要有一个好的文件夹结构和命名策略。

任何人都可以建议任何好的命名算法和文件夹结构来存储数十亿个配置文件图片吗?

(目前我按照mongodb生成的对象ID访问用户)

1 个答案:

答案 0 :(得分:0)

您可以为每个用户创建一个文件夹(如果操作系统在一个地方支持这么多文件夹)并将那些未存储在数据库中的用户信息存储在那里。

用户的数据库条目应包含一个名为“data_folder_id”的附加条目,其中包含文件系统上文件夹的编号。或者,您可以直接根据用户ID命名文件夹。

示例文件夹结构:

[user_data] // The folder which will contain the data from your all your users
    [1] // The data folder from user 1
        [profile_photo.png] // Profile photo from user 1
        [cover_photo.png] // Cover photo from user 1

    [2]
        [profile_photo.png]
        [cover_photo.png]

    [3]
        [profile_photo.png]
        [cover_photo.png]

    [...]

如果您无法在一个地方存储这么多文件夹,则必须将它们拆分为以下子文件夹:

[user_data] // The folder which will contain the data from all your users
    [1-50] // Contains user folders 1 to 50
        [1] // The data folder from user 1
            [profile_photo.png] // Profile photo from user 1
            [cover_photo.png] // Cover photo from user 1

        [2]
            [profile_photo.png]
            [cover_photo.png]

        [...]

    [51-100]
        [51]
            [profile_photo.png]
            [cover_photo.png]

        [52]
            [profile_photo.png]
            [cover_photo.png]

    [...]