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

问题描述:

我是nodejs的新手,目前我正在使用mongodb数据库在Node Web API上工作。Nodejs将数十亿的图像存储在文件系统中

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

做了一些研究之后,我发现,“在文件系统中存储的图像比在数据库中存储更好”所以,现在我的计划是

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

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

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

(我目前正在访问的对象ID的用户可以通过mongodb的生成)

+0

你有像谷歌认为服务存储? – DauleDK

+0

是的,我打算使用云服务,但问题是,如何正确存储文件。因为我需要在数据库中保存图像引用。 –

你可以为每个用户创建一个文件夹(如果OS在一个地方支持如此多的文件夹)和存储ISN”用户信息存储在那里的数据库中。

用户的数据库条目应包含一个名为“data_folder_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] 

    [...] 
+0

但是什么是在文件夹之间分发图像的逻辑 –

+0

@AchiraShamal我添加了一个声明,该声明应该明确用户号码的来源。这回答了你的问题了吗? – Fluttershy

+0

还有一个问题,我通过对象Id(mongodb)引用用户,而且我不认为为每个用户创建一个文件夹不是一个好习惯。 –