【Wagbyのこだわり】データのロック

株式会社ジャスミンソフト

更新日: 2022年10月5日

ロックの必要性

複数の利用者がデータを扱う業務アプリケーションでは、別々の利用者が同じデータを編集することがあります。

ここで必要になるのが「ロック処理」です。利用者AさんとBさんが同じデータを編集しようとしたとき、いずれかの編集を「正」とする仕組みのことです。

もしロックがなければ、Aさんの更新を直後にBさんが上書きすることができてしまいます。Aさんは自分の編集データが無効になったことに気づかないため、データ異状を引き起こしてしまいます。

同時編集を防ぐ「ロック処理」

ロックが不要な業務もある

ロックが不要な業務もあります。次のような場合は、ロックを考慮する必要がありません。

  1. データの編集者が決まっている
    あるデータを編集できる人が1名と決まっていて、編集の競合が発生しないことが保証されている。
  2. 更新業務がない
    データ処理は登録と閲覧のみで、更新や削除がない。

ここからわかることは、共通で利用するマスタ系のデータで、複数の利用者が更新権限をもつような場合はロック処理は必須ということです。

楽観ロックはどうやって動作するのか

ロック処理は「楽観ロック」「悲観ロック」という二つの方法が知られています。 多くの業務アプリケーションで採用されているのは「楽観ロック」です。ただ、この方式は運用面で使いづらいところがあります。

楽観ロックは次の手順で動作します。

  1. データに「バージョン」という情報を埋め込みます。具体的には 1,2,3,.. というように数値が入っています。
  2. 利用者Aが更新したいデータを取得します。このとき「バージョン」の値を覚えておきます。例えば "1" だったとします。
  3. 利用者Aが更新データをアプリケーションに送信します。このときバージョンの値 "1" も同時に送ります。
  4. アプリケーションでは、そのデータの現在のバージョン値を確認します。同じ "1" であれば、その間に他の利用者によって更新されていないと判断し、利用者Aのデータを「正」とします。バージョン値を "2" にします。
  5. このあと利用者Bが、同じデータを更新しようとしました。このときバージョン値に "1" を送信しました。しかしアプリケーションではすでに利用者Aの更新が適用され、バージョン値が "2" となっているため、利用者Bのデータは古いと判断し、この更新を失敗させます。
楽観ロック方式

この手順からわかることは、利用者Bが入力したデータは破棄されることです。Bからみた場合、あらためてアプリケーションから最新のデータを取得し、再入力するという手間が生じます。

悲観ロックはどうやって動作するのか

もう一つの悲観ロックは、次のように動作します。

  1. 利用者Aが更新したいデータXを「更新する目的で」取得します。このとき、アプリケーションはデータXをロックします。
  2. そのあと、利用者Bが同じデータXを「更新する目的で」取得しようとしました。しかしすでにデータXはロックされているので、利用者BはデータXの取得に失敗します。例えば画面にエラーメッセージ "このデータは別の利用者が更新中です。" などと表示されます。
  3. 利用者AがデータXを更新(またはキャンセル)すると、アプリケーションはデータXのロックを解放します。
悲観ロック方式

この手順からわかることは、利用者Bは更新目的でのデータ取得に失敗するため、早い時点で待ち状態になるということです。楽観ロックと異なり、再入力させられるという手間は削減されます。

ただしアプリケーションのつくりは複雑になります。データXを取得する時、単なる閲覧なのか、その後に更新する目的があるのかといった違いを持たせること、そしてアプリケーション自体でロックの仕組みを備える必要があります。

Wagbyは楽観ロックと悲観ロックの両方に対応

Wagbyの標準は「悲観ロック」です。これを楽観ロックに切り替えることもできます。

そのためWagbyで開発したアプリケーションは、複数利用者の同時更新によるデータ異状というのが発生しないように配慮されています。

他のアプリケーションとの比較

Wagbyは楽観ロックであっても悲観ロックであっても、開発者がロックの仕組みを自分で作成する必要はありません。すべてアプリケーションが自動で行います。

例えば楽観ロックをサポートしたノーコード開発ツールで、バージョン値を確認しながら自分で更新判断を行う、というような処理を書かせるような場合、多くのコードを開発する必要に迫られます。これを怠ると更新異状が生じるため手を抜くわけにはいきません。結果として、ノーコード開発ツールでありながら開発生産性は下がるということになりかねません。

お使いのノーコード開発ツールがデータのロックをどういう方針で扱っているのか、知っておくとよいでしょう。

もっと詳しく

楽観ロックと悲観ロックの違いを表形式でまとめています。より詳しく知りたい方は、こちらをお読みください。

いますぐ始めよう

Wagby を無料ですぐにお試しいただけます。
クラウド環境で提供していますのでインストール不要です。チュートリアルもご用意しています。