1

ASP.NET 3.5 でソーシャル ネットワーキング サイトを作成しています。画像用のユーザー固有のスライドショーを作成しています。100 万人のユーザーの場合、各ユーザーはいくつかの画像を保存し、現在は画像名を DB に保存しています。

そのため、次の画像を取得する際は、最初に DB に移動し、次に特定の画像の Image フォルダーに移動してから、ユーザーに応答を送信する必要があります。

その代わりに、ユーザー固有のフォルダーを作成してそのフォルダーに画像を保存し、特定のユーザー フォルダーにクエリを実行して画像を取得する場合、それは実用的な解決策になりますか、それとも上記のように従来の DB に固執する必要がありますか?

Web アプリケーションで 100 万個のフォルダーを作成するのは良いことですか?

画像を (フォルダーから、または SQL Server から) フェッチする際に、どちらの方法が高速ですか? (データベースに画像を保存していません)

ありがとうございます。

4

1 に答える 1

1

システムをスケーラブルにしたい場合、Web アプリケーションは、画像が物理的にどのように保存されているか、または画像のメタデータがどのように保存されているかを認識しないようにする必要があります。

100 万人のユーザーが画像を保存しているため、ストレージはサブシステムである必要があります。透過的なフェイルオーバー、キャッシング戦略が必要になります。その内部ロジックは、他のシステムから知られるべきではありません。これにより、それを調整、変更、強化することができます。

次の 2 つのサブシステムが必要です。

  • 1 つは画像のメタデータを処理するためのもので、画像のメタデータ (所有者/日付/タグ/コメント/...) を作成、更新、取得するためのサービス インターフェイスを備えています。これを処理するために任意の種類の DB を使用できます。しかし、他のシステムは単にサービスを見るべきです。
  • 画像のバイナリ ストリームを処理するためのもの (ストリームを格納するため、ファイル ID を指定してストリームを取得するため) ファイル システムから DB、またはクラウド ソリューションまで、必要なものは何でも使用できます。上記のように、他のシステムはサービスを参照する必要があります。

とにかく、あなたの質問に答えるために、100 万のフォルダーを持つことは非常に効果的ではありません (1 億の画像を含む 1 つのフォルダーと同様)。百万人のユーザー)

于 2013-03-22T14:32:32.457 に答える