3

私は非常に古い Java サーブレット ベースの webapp の改修に取り組んできました。webapp を使用すると、ユーザーは画像をアップロードできます。webapp は画像へのパス参照をデータベースに保存しますが、画像をサーバー上のディレクトリにアップロードします。

webapp のデータベースは、バイナリ情報を処理できる Oracle 11g にアップグレードされました。

それで、私の質問は、どちらがより賢明なことですか?

画像をファイルとしてサーバーに保存するか、Oracle 11g データベースに画像を詰め込みますか?

よろしくお願いします

スティーブ

4

3 に答える 3

6

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

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

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

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

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

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

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

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

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

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

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

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

ファイルシステムの利点

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

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

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

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

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

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

バックアップすることは別のことです。

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

于 2012-06-29T20:56:13.343 に答える
1

サーバーに保存し、データベースに画像のデータを保持します。

つまり、アップロード時に画像から EXIF データを抽出し、それらを画像へのファイルシステム参照と一緒に保存できます。

于 2012-06-29T20:52:59.523 に答える
1

アイデアは、サーバーに画像を保存し、画像の実際の場所への参照を保持することです。そうすれば、名前、サイズ、形式など、より多くのメタを画像に割り当てて、簡単にクエリを実行できます。

于 2012-06-29T20:48:43.253 に答える