DBに画像などのメディアファイルを保存したい場合、保存する情報は次の2つに分けてかんがえる
- 画像の実体(バイナリ)
- 画像のメタデータ(名前、形式)
実体はどこに保存するべきか
いまどきだと、クラウドサービスを使うのが良いと思う。
メタデータは何を入れるか
要件によって必要な情報は変わるけど、最低限次のものは必要になる
- 実体の URL
- 実体の MIME type や拡張子
後者の情報はわりと重要で、画像にはいろいろな形式があり、それを判別するために毎回実体のバイナリのヘッダを読んでいるのでは効率が悪いので、mime type などをメタデータに保存してあるとありがたい。