文章等に加えて画像をサーバーに保存するようなWebアプリを作成したとします。
画像の保存方法としては2パターンが考えられます。
1.サーバー上に画像保存用ディレクトリを作り、データベースには画像のパスを保存する方法。
メリット:
・大容量の画像がデータベース外にあるため、データベースを操作する際の処理速度が2に比べて速い。
デメリット:
・画像はデータベース外にあるため、データベースが整合性を保ってくれない。(画像のパスはデータベースに残っているのに画像自体は消えているということがあり得る)
ちなみに、上記のパスだけが残り、画像が消えているような状態をファントムファイルと言います。
2.画像をBLOB形式に変換し、データベースに保存する方法。
メリット:
・画像と文章の整合性が保たれる。(画像だけ消えるということはない)
デメリット:
・データベースのデータサイズが大きくなり、データベース操作の処理速度が落ちる。
これらは、どちらが良いというものではなく、時と場合によってどちらを選択するのか判断することが重要になります。