0

この質問は、パフォーマンスとレコード処理に関する知識がほとんどないデータベース/RDBMS に関連しています。

一部のレコードに関連する画像を保存する必要がある場合、(パフォーマンスに関して) より良いオプションは何でしょう。画像をフィールドとしてデータベースに保存するか、独自のファイルを維持してファイルパスをデータベースに保存するか。

現在のrdbmsは独自の画像ファイルを処理できるはずであり、それらに依存できると思いますが、複数のレコード(または異なるテーブルからのレコード)が同じ画像を参照している場合は、画像ではなくファイルのパスを保存する方がよいと思いますそれ自身。

データベースの専門家の意見を楽しみにしています。

4

2 に答える 2

2

ToBlobまたはNotToBlobと呼ばれるMicrosoftResearchによる非常に優れた論文があります。

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

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

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

  • それらの2つの間に、それはあなたの使用に応じて少しトスアップです

もちろん、これはSQL Serverに固有ですが、他のRDBMSでも同様の動作が見られると思いますが、特定のサイズまでは、画像をデータベースに保存する方が問題ありません(パフォーマンスが向上します)が、画像が大きくなりすぎると、それらはリレーショナルエンジンの負担になりすぎます。

パス名だけをデータベースに保存し、実際の画像をデータベースエンジンの外部に残す場合の問題は、もちろん、その画像ファイルがまだ存在するか、名前が変更されているか、移動されているかをデータベースで制御できないことです。 。ファイルシステムの操作には「トランザクションの傘」はありません。したがって、名前がデータベーステーブルに格納されている場合でも、ファクトファイルが存在しない可能性があることに対処できる必要があります。

この機能を備えたFILESTREAMSQLServerはこれを修正します(ファイルはディスク上に残ります)が、SQL Serverには「トランザクションの傘」があり、SQL Serverがそれを認識(および許可)しない限り、ファイルを削除または移動することはできません。

于 2012-06-23T07:51:50.407 に答える
0

イメージをファイルシステムまたは (できれば) CDN または Amazon S3 などに保存します。メタデータ (実際のイメージ ファイルの場所を含む) のみを RDBMS に格納します。

于 2012-06-23T06:31:15.570 に答える