議論のどちらの側にも正当な懸念があるため、常に要件を提示してください。データ量、画像数、サイズはどれくらいですか?
インライン/BLOB ストレージ
アップサイド: アーキテクチャと実装を簡素化し、システムのバックアップとリカバリまたは移行を簡素化します。ダンプ、バックアップ、エクスポート (DB のフレーバーの用語が何であれ) を実行し、それを新しいデータベースに移動するだけです。バージョン管理/整合性は DB によって処理されるため、ポイントインタイム リカバリが可能になります。画像 BLOB へのアクセスは行全体へのアクセスに固有であるため、セキュリティ/アクセス制御もより明確になります。画像を DB の外に移動し、HTTP サーバーにフェッチさせると、同時実行性とスケーラビリティは向上しますが、ユーザーが URL をハッキングして所有していない画像を要求できないようにするという問題が生じる可能性があります。それらをDBの外に置く場合は、セキュリティポリシーがユーザー間の画像のアクセス制御をカバーしていることを確認してください。HTTP サーバー認証は、システム全体の認証と統合する必要があります。または、画像を提供する HTTP サーバー プログラムが何らかのセッション メカニズムを使用して、HTTP 要求が有効であることを確認します。これは、マルチテナント データベースでは非常に大きな懸念事項です。単純な認証を使用する単一目的のシングルテナント システムでは、問題はあまりありません。
欠点: 非常に大規模なデータベースの場合、バックアップとリカバリはイライラするか、問題が発生し、コストがかかることさえあります。それ以外の場合はコア データセットが小さい場合に、GB または TB のイメージ データが大量にある可能性があるためです。すべてを 1 つの一貫したデータベースとして扱うことは、整合性の観点からは良いことですが、エンタープライズ品質のデータ ウェアハウスで調整されたバックアップとリカバリ (たとえば、Oracle RMAN とローリング バックアップ) を備えた DBMS を使用しない限り、バックアップには適していません。
どのシステムでも、回復までの時間を常に考慮してください。ストレージ要件が数ギガバイト未満、たとえば 50 ~ 100 GB で、十分なバックアップ スペースが計画されている場合は、インライン ストレージの方がクリーンです。その上で、関心の分離とファイルシステムに任せることが重要な利点になります。小さなデータエラーのために巨大なデータベースを復元、回復、オープンしようとすることほど悪いことはありません。回復時間は私の最大の懸念事項です。