Archive for August 11th, 2009

R/Wロックをテーブルで管理する

あるファイルシステムがロック機構を有していないので、RDB上でロック状態のみを管理することを考える。

超教科書的に考えると、以下の2テーブルを定義すればOK. *は主キー。

Read Lock Table

  • pk*
  • path
  • userId

Write Lock Table

  • path*
  • userId

Read Lockは複数人が可能でWrite Lockは一人が可能、ということで、まあ、こうなる。

しかし、2つもテーブルを作るのがダサいので、以下のようにする。

Lock Table

  • path*
  • lockCount*
  • userId

pathとlockCountで複合主キーとする。

lockCount=-1をwrite lock、1~をread lockと定義する。

これで、まあ要件は満たせる。