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と定義する。
これで、まあ要件は満たせる。