2017-10-10 11 views
0

私はnodejsを使い始めましたが、現在私はm​​ongodbデータベースを使ってNode Web APIを開発中です。Nodejsは何十億ものイメージをファイルシステムに保存します

  • ユーザーが プロフィール写真とカバー写真をアップロードすることができるはずプロジェクトの要件によると。
  • とユーザーの十億がある場合もありますが、いくつかの研究を行った後

を占め、私は、「ファイルシステム内の画像を保存すると、データベースに保存するよりも優れている」ことを発見した

だから今、私の計画はにありますファイルシステムに画像を保存する。 しかし、 は - 大量の画像を保存するためには、迅速ので、上記の要件の

にファイルにアクセスすることができるはず - (OSに基づいて)1つのフォルダに置くことができるファイルの数が限られ があります、私たちは良いフォルダ構造と命名方針を持つ必要があります。

何十億というプロファイル写真を保存するには、誰も良い名前付けアルゴリズムとフォルダ構造を提案できますか?

(OSが一つの場所で非常に多くのフォルダをサポートしている場合)あなたはユーザーごとにフォルダを作成することができ

+0

あなたがGoogleのようなサービスを検討していますストレージ? – DauleDK

+0

はい私はクラウドサービスを利用しようとしていますが、問題はファイルを正しく保存する方法です。画像参照をデータベースに保存する必要があるためです。 –

答えて

0

(現在私はMongoDBので生成されたオブジェクトIDのことで、ユーザーにアクセスしています)と」にISNユーザー情報を保存しますそこにデータベースに格納されています。

ユーザのデータベースエントリには、ファイルシステム上のフォルダの番号を含む "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] 

    [...] 

使用すると、1つの場所で非常に多くのフォルダを保存することができない場合は以下のようにサブフォルダにそれらを分割する必要があります。

[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

もう1つ問題がありますが、私はオブジェクトID(mongodb)でユーザーを参照しています。そして、ユーザーあたりのフォルダを作成するのは良い方法ではないと思います。 –

関連する問題