ToBlobまたはNotToBlobと呼ばれるMicrosoftResearchによる非常に優れた論文があります。
多数のパフォーマンステストと分析の後の彼らの結論は次のとおりです。
写真やドキュメントのサイズが通常256K未満の場合は、データベースのVARBINARY列に保存する方が効率的です。
写真またはドキュメントのサイズが通常1MBを超える場合は、ファイルシステムに保存する方が効率的です(SQL Server 2008のFILESTREAM属性を使用すると、トランザクション制御下にあり、データベースの一部になります)。
それらの2つの間に、それはあなたの使用に応じて少しトスアップです
もちろん、これはSQL Serverに固有ですが、他のRDBMSでも同様の動作が見られると思いますが、特定のサイズまでは、画像をデータベースに保存する方が問題ありません(パフォーマンスが向上します)が、画像が大きくなりすぎると、それらはリレーショナルエンジンの負担になりすぎます。
パス名だけをデータベースに保存し、実際の画像をデータベースエンジンの外部に残す場合の問題は、もちろん、その画像ファイルがまだ存在するか、名前が変更されているか、移動されているかをデータベースで制御できないことです。 。ファイルシステムの操作には「トランザクションの傘」はありません。したがって、名前がデータベーステーブルに格納されている場合でも、ファクトファイルが存在しない可能性があることに対処できる必要があります。
この機能を備えたFILESTREAM
SQLServerはこれを修正します(ファイルはディスク上に残ります)が、SQL Serverには「トランザクションの傘」があり、SQL Serverがそれを認識(および許可)しない限り、ファイルを削除または移動することはできません。