0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

画像をDBに保存する際の留意点

Last updated at Posted at 2020-02-23

#前提
アプリをローカルで完結させる場合。

#そもそもDBに保存すべきなのかを検討する
ファイルパスだけを保存することで問題がない場合はわざわざDBに保存する必要はない。

私のサービスの都合上、ファイルパスの保存では問題があった。
私のサービスでは写真が肝であり、データを消されるとまずい。
存在確認をして、「ファイルが削除された可能性があります」ではダメなのだ。

基本的にはギャラリーには保存せず、必要なときにアプリの方から写真を復元というかダウンロードさせればよい。

#検索(パフォーマンス)は大丈夫なのか
画像データはバイトの集まりで、近年はカメラの解像度も上がってきているため、サイズはバカにならない。前回の記事ではバイナリーだけを保存しただけであったが、これは問題である。
大きなバイナリーの比較には相当の時間を有するため、非機能要件を満たせなくなる。
そこで、md5などのアルゴリズムを使ってハッシュ値を求めて、レコード内に保存しておく。ハッシュ値で比較することによって、大幅に検索時間が短縮できるであろう。
記憶領域が増えるが、パフォーマンスを優先しようとなったときには、是非実装すべきである。

#追記(2020/4/11)
写真はファイルとして内部ストレージに保存するのが良さそうです。
通常、ユーザーが操作することはないでしょうし、DBのパフォーマンスやカーソルのメモリ制限などを考慮しました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?