0

現在、SQL Server 2008 データベースをバックエンドとして使用する ASP.NET MVC Web サイトを作成しています。エンド ユーザー向けの Web サイトに表示される、サムネイルとフル イメージを含むテーブル (製品カタログなど) はほとんどありません。A) データベース自体に画像を保存するための FILESTREAM 列を使用するか、B) 画像のパスとファイル名 (または URL) を含む単純な varchar 列を使用するかについて混乱しています。

一般的な慣行は何ですか?FILESTREAM が多くのコードと DBA のオーバーヘッドをもたらすことはわかっていますが、それが一般的な方法である場合は、柔軟に使用できます。または、URL を保存するのが間違いなく最も簡単なオプションです。ただし、推奨されるものに従う必要があります。

これに関するアドバイス、大歓迎です。

ありがとう

4

1 に答える 1

2

画像をバイナリ BLOB としてデータベースに保存することの誇大宣伝を、私は本当に理解したことがありません。ファイルシステムは、ファイルと呼ばれるバイナリ BLOB を格納するために設計されたデータベースであることを覚えておいてください。

この質問は、トピックに関する多くの洞察を提供します。誰もがそれとその答えを読むことをお勧めします。

個人的には、私は常に画像をファイル システムに保存しており (画像ファイルです!)、実行時に URL を生成するために必要な情報のみをデータベースに保存しています。

私が見た 1 つのスキームは、イメージの MD5 をファイル名として使用し、その MD5 をイメージ ID とともにデータベースに保存することです。次に、MD5 16 進数をいくつかのコンポーネントに分解して、ディレクトリ構造を構築できます。これにより、1 つのディレクトリ内のファイル数が制限されます。

たとえば、イメージの MD5 がd41d8cd98f00b204e9800998ecf8427e. データベースのエントリは次のようになります。

 id | md5                              | upload_date | ...
 ----------------------------------------------------------
 42 | d41d8cd98f00b204e9800998ecf8427e | 2013-04-01  | ...

そして、このファイルは に保存されている可能性がありますimages/d4/1d8/cd98f00b204e9800998ecf8427e.jpg。パス区切り記号を配置する場所とその数によって、各ディレクトリ内のディレクトリ数とファイル数のバランスが決まります。

于 2013-04-01T23:35:20.403 に答える