sql >> データベース >  >> RDS >> Oracle

アップロードされた画像の保存:サーバーまたはデータベースに保存する必要がありますか?

    はい、OracleのバイナリデータにBLOBを使用できます。 (および他の多くのデータベース。)ここでは、PDFファイルを保存するためにそれらを使用します。

    私はそれがどちらか/両方の方法で行われるのを見てきました。画像をデータベースに保存するか、画像をファイルシステムに保存してから、ファイル名をデータベースに保存します。

    データベースに保存する利点

    データベースにはそれで大丈夫です。レコードを引き出すと、関連する画像がすぐそこにあります。

    ファイルとそれに関連するデータの間でデータの整合性が得られます(もちろん、優れたスキーマ設計を前提としています)。

    データと画像を取得するための1つの論理演算。

    多くのバイナリデータを保持するようにデータベースを拡張することは、ファイルシステムの代替手段よりも難しく、費用がかかると思います。

    データベースに保存することのデメリット

    すべてのツールで画像を簡単に閲覧できるわけではありません。

    ウェブから画像に簡単にアクセスすることはできません。

    ファイルのサイズと量によっては、一部のテーブルに大量の生データが含まれる可能性があります。

    BLOBデータのロードと保存は必ずしも簡単ではありません。 (最近、ブロブされたPDFを処理するために、Hibernateのカスタムデータ型を作成しました。)

    ファイルシステムの利点

    おそらく、ファイルの読み取りと書き込みの方が効率的です。

    画像をウェブ上で提供したい場合は、ファイルシステムから直接提供できます。

    デバッグ中の画像の閲覧が簡単で、これを行うための無料のツールがたくさんあります。

    ファイルシステムにblobを配置するときは、アプリケーションをスケーリングする方が簡単だと思います。

    ファイルシステムのデメリット

    データの整合性/一貫性の問題。ファイル構造について何かを変更すると、データベースで別の手順を実行できます。

    バックアップするのもまた別のことです。

    画像とデータを取得するための複数の論理演算(データベースからの読み取り、ファイルシステムからの読み取り)。



    1. MYSQL結合結果は、where句のIN()中にワイプされた結果を設定しますか?

    2. MYSQLに時刻2009-09-2218:09:37.881を挿入する方法私の列タイプはDateTimeです

    3. このSQLクエリで2つのフィールドではなく、2つの行を出力するにはどうすればよいですか?

    4. PostgreSQL-caseステートメントで文字列に整数値を割り当てます