5

ファイルを BLOB としてデータベースに保存することが悪い習慣であるかどうかについて多くの論争があることは理解していますが、これが私の場合に意味があるかどうかを理解したいだけです。

ユーザーがシステム内の「ジョブ」にファイルを添付できる必要がある大企業で内部的に使用される ASP.NET アプリケーションを作成しています。これらのファイルは通常、PDF または Word ドキュメントであり、おそらく数 MB を超えることはありません。

次のように新しいテーブルを作成しています。

ID (int)
JobID (int)
FileDescription (nvarchar(250))
FileData (varbinary(MAX)

ここでの使用はvarbinary(MAX)理想的ですか、それともファイルへのパスを保存し、単にファイルシステムのどこかにファイルを保存する必要がありますか?

4

1 に答える 1

7

To Blob or Not To Blobと呼ばれる Microsoft Research による非常に優れた論文があります。

多数のパフォーマンス テストと分析を行った後の結論は次のとおりです。

  • 写真やドキュメントのサイズが通常 256K 未満の場合は、データベースVARBINARY列に格納する方が効率的です

  • 写真やドキュメントのサイズが通常 1 MB を超える場合は、ファイル システムに格納する方が効率的です (SQL Server 2008 のFILESTREAM属性を使用すると、それらは依然としてトランザクション制御下にあり、データベースの一部になります)。

  • これら2つの間で、用途に応じて少しトスアップします

写真を SQL Server テーブルに保存する場合は、それらの写真を保存するために別のテーブルを使用することを強くお勧めします。従業員の写真を従業員テーブルに保存しないでください。別のテーブルに保存してください。そうすれば、従業員の写真をクエリの一部として常に選択する必要がないと仮定すると、従業員テーブルは無駄のない、意味のある、非常に効率的な状態を保つことができます。

ファイル グループについては、「ファイルとファイル グループのアーキテクチャ」で概要を確認してください。基本的に、最初から大規模なデータ構造用に別のファイル グループを使用してデータベースを作成するか、後でファイル グループを追加します。と呼びましょうLARGE_DATA

VARCHAR(MAX)これで、または列を格納する必要がある新しいテーブルを作成する必要がある場合はいつでもVARBINARY(MAX)、大きなデータ用にこのファイル グループを指定できます。

 CREATE TABLE dbo.YourTable
     (....... define the fields here ......)
     ON Data                   -- the basic "Data" filegroup for the regular data
     TEXTIMAGE_ON LARGE_DATA   -- the filegroup for large chunks of data

ファイル グループに関する MSDN のイントロをチェックして、いろいろ試してみてください。

于 2013-05-14T13:41:04.327 に答える