[pgsql-jp: 30587] Re: 画像データベースの作成。

Hirokazu Aoyama aoyama @ cds.ne.jp
2003年 7月 25日 (金) 01:26:58 JST


こんにちは、青山です。

On Thu, 24 Jul 2003 15:12:23 +0900
"キャスター マイルド" <caster_mild_49401219 @ hotmail.com> wrote:

> 「[pgsql-jp 21110] ラージオブジェクトを使った画像管理」も、参考になりまし
> た。
> 
> 上記の過去ログでは、ローカルに落とし込んだ良い派(?)も
> 数人いらっしゃるような印象もあるのですが、
> 今回のレスに関して言えば、、
> 皆様から頂いたレスを何度か読み直したのですが、
> PostgreSQLでバイナリデータの管理をやるメリットの方が
> 多い気がします。

私も以前、画像データとDBのデータとを関連づける大規模システムに
関ったことがあります。
そのときは画像データをファイルに格納して、パス情報をDBに格納する
という方式でしたが、まれに、HDDの容量不足やディスク不良による
書き込みエラー等が発生したときに、DB内のパス情報は格納されているが
画像ファイルが存在しない状態が発生したり、あるいは、
ファイルをFTP等で追加したけれど、DB処理がバグ等の問題により
ロールバックしてしまい、DB内に情報がないのにファイルだけが
浮いた状態で存在する、という不整合状態が発生していました。
# 数億レコードという巨大DBだったため、障害発生件数の期待値が
# 大きいという面もあります。ちなみにDBはPostgreSQLではありません。

そういう不整合状態がシステムの仕様上クリティカルである場合は、
[pgsql-jp 21164]で五十川さんがご指摘されていたように、
アトミックな操作を行なえるよう、ファイル操作を用いずに
DB内に閉じた操作がより好ましいと思います。

トランザクション処理中に、トランザクション管理からはみ出してしまう
ようなデータ処理を行なってしまうと、本質的にデータの紛失や矛盾等を
許容しなければならなくなってしまいますので、
まずは、そのリスクを仕様上許容できるのかできないのか、という観点から
チェックすべきではないかと思います。

---------------------------------
青山 博和   aoyama @ cds.nejp
---------------------------------



pgsql-jp メーリングリストの案内