3

私は、数百の店舗と各店舗の数千の商品画像を含む価格比較サイトを開発しています。

合計で800万枚の画像があります。

各画像のファイル名の形式は次のとおりです。StoreID-productID.jpg

各画像サイズは10KB未満です。平均7KB。

このサイトはphpとmysqlで開発されています。

Linux専用サーバーを持っています。

ディスク容量がたくさんあります。だから、それは問題ではありません。

私の質問は次のとおりです。

  1. すべての店舗のすべての画像を1つのフォルダーに保存する必要がありますか?

したがって、800万枚の画像が1つのフォルダに保存されます。

それらを取得する際の効率に影響しますか?

現在、この方法を使用していますが、この方法に不利な点があるかどうかを知りたいと思います。

  1. 各ストアのフォルダーを保持し、そのストアの画像をそのフォルダーに保持する必要がありますか?

お気に入り:

images/storeID1/
images/storeID2/
....

提案してください。ありがとうございました

4

2 に答える 2

4

使用しているファイル システムによって異なります。(EXT3、NTFS、FAT など)。

それぞれに、異なるフォルダー サイズの制限とパフォーマンス特性があります。

800 万個のファイルの場合、できるだけ多くのフォルダーを分離するのが最も安全です。次に、スケーリングの問題が発生した場合に、それらを異なる物理ドライブにするオプションがあります。

Linux を使用している場合は、既存のフォルダー構造の中に別のドライブを簡単にマウントできます。または、シンボリック リンクを使用することもできます。

images/Store1/FILES...
images/Store2 ---> /mount/SDA01/Store2/ (symbolic link to a separate drive)

限界

さまざまなファイル システムの制限の詳細については、このスーパーユーザーの質問を参照してください: https://superuser.com/questions/446282/max-files-per-directory-on-ntfs-vol-vs-fat32

これらは、システムが処理できる絶対的な制限であることに注意してください。これらの制限の上限でのパフォーマンスは確実に低下します。

于 2012-11-21T15:30:13.017 に答える
3

私の最近のプロジェクトの 1 つで、時間の経過とともに大量の画像を保存する必要がありました。最善の方法は、各ディレクトリに設定された数の画像を持つ番号付きのディレクトリにそれらを分離することであると判断しました。私たちのデータベースには、ファイル名、ディレクトリ、関連付けられたアイテムの外部キー、アイテムを削除しなくてもアイテムを無効にできるフラグ、およびアイテムがダウンロードされた日付が保存されます。それ以来、それはうまく機能しています。

于 2012-11-21T15:32:24.310 に答える