[pgsql-jp: 30591] Re: 画像データベースの作成。
Tetsuya Kakura
kakura @ saki.netwk.ntt-at.co.jp
2003年 7月 25日 (金) 11:04:27 JST
加倉です。
Jun Kitamura wrote on Fri, 25 Jul 2003 02:47:18 +0900
> A.実行型プログラムで処理する場合
> トランザクション(T1)開始
> /tmp/xxx.jpg を /img/xxxx.jpg にコピー
> →NG の場合は T1 ロールバック
> RDBMS のトランザクション(T2)開始
> ・DB に /img/xxxx.jpg をインサート
> →NG の場合は T2 ロールバック
> ・その他の DB 処理
> →NG の場合は T2 ロールバック
> T2 COMMIT
> /tmp/xxxx.jpg を削除
> T1 COMMIT
> T1 ロールバックは、/img/xxxx.jpg を削除します(プログラム内
> にそういうルーチンを作成してあることを意味します)。
ファイルシステム上に画像ファイルを置くと、T1 のロールバックが
失敗する場合のリカバリをどのようにするかとか、T1 のロールバッ
クにファイルの置き換えや移動を行わなければならない場合に元のフ
ァイルに戻す手法や元の場所に戻すことを考えなくてはならず、解決
不能ではないにしても、エラー時の対処は煩雑になると考えられるの
ではないですか?そう考えるとファイルシステム上に画像ファイルを
おく場合は、矛盾を起こさないための完璧なロジックを組むのは結構
大変そうに思うのですが?
table 中に画像データを格納したほうがロールバックの処理を DBMS
に任せられて格段に楽な気がしますが・・・
ただファイルシステム上にファイルがあるとどんな画像か確認するの
も簡単ですが、table 中の画像データの確認は面倒そうなので、開発
時や試験時の動作確認なんかはファイルシステム上に画像ファイルが
あった方が格段にやりやすそうですね。
--
Tetsuya Kakura / kakura @ saki.netwk.ntt-at.co.jp
pgsql-jp メーリングリストの案内