私の質問はかなり一般的なものであり、100%の回答がないかもしれないことは知っています。私はASP .NET Webソリューションを構築しています。これには、多くの写真と、できればかなりのトラフィックが含まれます。パフォーマンスを達成したいのです。
データベースまたはファイルシステムに画像を保存する必要がありますか?答えに関係なく、特定の方法を選択する理由に興味があります。
ありがとう、ステファン
[〜#〜] duplicate [〜#〜]: DBに画像を保存する-はい、またはいや? 、 画像をファイルシステムに保存する方法 、 少数の画像を保存する:blobまたはfs? およびおそらく他のいくつか。
コメント:多くの良い答えをありがとう。 100%のデータベース駆動型ソリューションを持つというアイデアが気に入っても、ファイルベースのソリューションを選びます。今日、私がデータベースなどでやりたいことをする良い解決策があるように思えますが、それをしない理由がいくつかあります。
ホスト型ソリューションになります。大量のストレージ(10GB)がありますが、データベース用に300MBしかありません。 DBに追加のストレージが必要な場合は、費用がかかります。
私はDBの専門家ではなく、DBの設定も管理していません。 DBベースのソリューションでは、カスタム構成が必要になる場合があります。
独自のサーバーでサイトを実行するために移動する場合は、DBベースのソリューションを検討できます。ありがとう、ステファン
画像をファイルシステムに保存し、画像の場所をデータベースに保存します。
どうして?なぜなら….
最近開発したプロジェクトでは、データベーステーブルの画像列として画像(およびすべての種類のバイナリドキュメント)を保存しました。
データベースにファイルを保存する利点は、データベース(=メタデータ)とハードディスク(=ファイルストレージ)間の同期が組み込まれていないため、レコードが削除されても、ハードディスク上の参照されていないファイルにならないことは明らかです手動でプログラムする必要があります。
今日の技術を使用して、SQL Server 2008のFILESTREAM列に画像を保存することをお勧めします(少なくとも次のプロジェクトではこれを行います)。データベースにデータを保存する利点と、個別のファイルに大きなバイナリ広告によると少なくとも;))
格言は常に「ファイルシステムのファイル、データベースのファイルメタデータ」でした
ファイルをファイルとして保存する方が良い。異なるデータベースは異なる方法でBlobデータを処理するため、バックエンドを移行する必要がある場合、問題が発生する可能性があります。
Impagesを提供する場合、サーバー上にすでに存在するファイルに<img src =を指定すると、データベースフィールドから一時ファイルを作成して<imgタグを指すよりも速くなる可能性があります。
私はあなたの質問をグーグルし、コメントを読んでこの答えを見つけました http://databases.aspfaq.com/database/should-i-store-images-in-the-database-or-the-filesystem.html
私は通常、データベースにバイナリファイルがあるのが好きです:
データベースにイメージを保存すると、単一のイメージを提供するためのDBオーバーヘッドが追加され、そのレベルまで拡大した場合に代替ストレージ(S3、Akami)にオフロードするのが難しくなります。それらをデータベースに保存すると、今すぐ移動する必要があるのはDBだけなので、アプリを別のサーバーに簡単に移動できます。
ディスクにイメージを保存すると、代替ストレージに簡単にオフロードでき、イメージを静的要素にするため、WebアプリでHTTPヘッダーをいじってイメージをキャッシュ可能にする必要がありません。欠点は、アプリを別のサーバーに移動した場合、画像を移動することも忘れないでください。簡単に忘れられるもの。
Webベースのアプリケーションの場合、画像を保存するためにファイルシステムを使用することでパフォーマンスが向上します。そうすることで、アプリケーション内の複数のレベルで画像のキャッシュを簡単に実装できます。データベースに画像を保存することにはいくつかの利点がありますが、ほとんどの場合、これらの利点はクライアントベースのアプリケーションにあります。
これまでの良い答えにさらに追加するだけです。 Webレベルmaybeとデータベースレベルの両方からキャッシュの利点を得ることができます。データベース内の画像。
データベースについては、関連するテキストデータに関連して画像を保存する方法と、データベースに特定のクエリへの画像へのアクセスができる場合、これを達成できると思いますクエリをキャッシュすることができます(ただし、理論上はその部分については気軽に否定してください)
Web側では、質問にasp.netがタグ付けされているので、httpハンドラーを使用して画像を提供するルートに進むと思います。その後、フレームワークのすべての利点を自由に利用でき、イメージのキーをhttpハンドラーに渡すだけで、ドメインロジックをよりクリーンに保つことができます。