[pgsql-jp: 30360] ロック状態の取得
Tetsuo SAKATA
sakata.tetsuo @ lab.ntt.co.jp
2003年 7月 3日 (木) 10:47:48 JST
こんにちは.坂田@横須賀です.
Hideaki Kihara wrote:
> > もとの要求が良く分かりませんが,要求を見なおすことで,
> > PostgreSQLに手を入れなくても知れませんね.
>
> ただ、この手の話題が少ないのを考えると
> 自分がやろうとしていることがあまり一般的でなく
> 設計を見直すとか、他のやり方で実現できるのかなと思ってしまいます。
> #勉強不足が否めない...
恐らく,この手の話題がこのMLで少ないのは,
PostgreSQLに特化した話題というよりも,もっと
一般的なシステム設計の問題に属するからだと思います.
> 1つのレコードを複数のユーザーが編集(もしくは削除)する
> 場合ってどのような処理が一般的なのでしょうか。
恐らく,一般的な(どこででも通用する)処理法はないと思います.
見方を変えれば,DBMSの提供するトランザクション処理は,
まさに上記の要求に応えるものとも言えます.
しかしながら,用途によっては通常のDBMSの機能では対応しがたい
ものがあるのも事実です.
例えば,『1つのレコードを複数のユーザーが編集』するケースでも,
以下のようなものはDBMSの適用が難しいと思います.
・1つの文書を複数のユーザが編集する
・(複数のファイルからなる)1つのプログラムを複数のユーザが修正する
⇒ロック期間が長いので,通常のロック方法ではユーザの使い勝手が劣化する.
MVCCみたいな方法を取った場合は,ユーザの更新が(abortという形で)拒否される.
(そこで,check-in/check-out などの方法を用いる)
・連番を払い出すために,データベースを利用する
⇒もともと解決が困難な問題.DBMSには制約を緩めた serial 型などがある.
この点は,本MLでも6月18日頃に話題になった
などは,通常のDBMSのトランザクション機能を利用して実現しようとしても,
性能が出にくかったり,ユーザの使い勝手に制約が出たりするでしょう.
あんまり参考にはなりませんね...(ご参考まで,と書きたいところですが)
では.
--
Tetsuo SAKATA, Yokosuka JAPAN.
pgsql-jp メーリングリストの案内