[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 メーリングリストの案内