🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
排他制御

排他制御とは、特定のファイル・データへのアクセスや更新を制御することです。特にファイルやデータベースへ書き込みを行う際、データの整合性を保つため別のプログラムによる書き込みを一時的に制御することを指します。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

解決済

2回答

1922閲覧

排他制御(マスタ管理)について

sadakichi

総合スコア15

排他制御

排他制御とは、特定のファイル・データへのアクセスや更新を制御することです。特にファイルやデータベースへ書き込みを行う際、データの整合性を保つため別のプログラムによる書き込みを一時的に制御することを指します。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2021/01/13 04:29

これまで携わったシステムでも、データの不整合が生じないように、
原則、排他制御を実施してきました。
しかも、殆ど楽観ロックだったんですが
ふと「マスタメンテナンス時に楽観ロック」は必要なのかという疑問が湧きました。

※ユーザ(A)がデータを取得して編集中に、別のユーザ(B)がDBを更新。
その後、ユーザ(A)がそのままDBを更新してもよいのではないか?という質問です
(処理の実行中だけはDBをロックする前提です)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sazi

2021/01/13 05:09

何に対しての排他制御ですか? マスター更新時に関して、それを参照している側に対しての排他を言われてますか?
sadakichi

2021/01/14 00:45

今回の質問では、マスタ更新が競合した際の排他を意図しています。 Aさんが更新を開始した際のバージョンを記憶しておき、Aさんは修正を行います。 修正中に、Bさんが先に更新するケースです。 (分かりづらい文章ですみません・・・)
guest

回答2

0

ベストアンサー

例をとると

※ユーザ(A)がデータを取得して編集中に、別のユーザ(B)がDBを更新。

その後、ユーザ(A)がそのままDBを更新してもよいのではないか?という質問です

これは「決め」次第です。
「それでも良い」という前提で要件を定義するだけ。
「それではいけない」という要件ならばそのように設計し、
きちんとロックして編集が終わるまで手を出させないような実装にする。

「メンテするマスタ情報がどこでどのように使わているか」次第でもあります。
全体の構成から考える必要もあります。

投稿2021/01/13 04:42

m.ts10806

総合スコア80875

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sadakichi

2021/01/14 00:41

そうですよね・・・。 要件を踏まえるといらないと考えるので、 「決め」で不要にしようかとも思うのですが、 自分の関連してきたシステムでは「不要」のシステムが殆どなかったので迷いが生じました。
m.ts10806

2021/01/14 01:04

経験は時に邪魔になるので、目の前のことに集中してみてください。
guest

0

Aの更新中にBが更新してAが上書き更新ということですか?
Bの更新が無効になってもよいならよいでしょうけど
それこそトランザクションで対応する案件のような気もしますが・・・

投稿2021/01/13 04:43

yambejp

総合スコア116694

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問