2017-10-10 136 views
0

我是nodejs的新手,目前我正在使用mongodb數據庫在Node Web API上工作。Nodejs將數十億的圖像存儲在文件系統中

  • 根據項目要求,用戶應該可以上傳 他們的個人資料圖片和封面照片。
  • 並且可以有幾十億的用戶帳戶

做了一些研究之後,我發現,「在文件系統中存儲的圖像比在數據庫中存儲更好」所以,現在我的計劃是

將圖像保存在文件系統中。 但是, - 有文件可以放在一個文件夾(基於OS)的數量有限 - 應該能夠快速訪問文件

的,因爲上面的要求,爲了存儲大量圖片,我們需要有一個好的文件夾結構和一個命名策略。

任何人都可以提出任何好的命名算法和文件夾結構來存儲數十億的配置文件圖片嗎?

(我目前正在訪問的對象ID的用戶可以通過mongodb的生成)

+0

你有像谷歌認爲服務存儲? – DauleDK

+0

是的,我打算使用雲服務,但問題是,如何正確存儲文件。因爲我需要在數據庫中保存圖像引用。 –

回答

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)引用用戶,而且我不認爲爲每個用戶創建一個文件夾不是一個好習慣。 –

相關問題