2014年 秋期 応用情報技術者試験 問6

分散トランザクション

L社は事務用品を扱う商社であり、顧客からの注文に基づき、商品を発送している。販売管理システム、在庫管理システムの二つのシステムを使って受注処理、在庫管理、発送処理を行っている。二つのシステム間で受注データと在庫データの整合性をとるために、昼間に登録した受注データを基に夜間バッチ処理で在庫データの管理を行っている。しかし、在庫の引当てがリアルタイムでないので、在庫量の適正化ができないという問題がある。そこで、リアルタイムに在庫管理を行うことができる統合販売管理システム(以下、本システムという)を構築することになった。

本システムの概要

本システムは、現在の販売管理システムと在庫管理システムで、それぞれ異なるDBMSを使って運用している受注データベースと在庫データベースをそのまま活用し、受注処理、在庫引当てをリアルタイムで行う受注処理及び在庫管理の機能を提供する。本システムのシステム構成を図1に示す。

受注処理の概要

・営業担当者は、顧客から受けた注文を基に、受注予定の商品の引当可能在庫数を本システムに問い合わせる。

・本システムは、受注予定の商品の引当可能在庫数を在庫管理サブシステムに問い合わせ、営業担当者に回答する。

・営業担当者は、注文数が引当可能在庫数以下であることを確認し、受注登録を本システムに依頼する。

・本システムは、在庫管理サブシステムの在庫引当処理を実行し、対象商品の引当可能在庫数から注文数を減算する。

・本システムは、販売管理サブシステムの受注登録処理を実行し、受注データを登録する。

本システムの受注処理の設計

L社の情報システム部のM君が本システムによる受注処理について検討を行い、図2に示す本システムにおける受注処理のシーケンス図を作成した。

M君の上司のN主任が、図2のシーケンス図をレビューし、ACID特性の観点から次の二つの指摘をした。

指摘1:図2の⑧が失敗した場合、受注データとも付かない在庫引当処理が行われたことになる。この場合、トランザクションのaが保証されない。

指摘2:営業担当者が受注処理を行っている途中で、別の営業担当者が在庫データを照会すると、在庫引当処理が行われる前の時点の引当可能在庫数が参照されることがある。この場合、トランザクションのbが保証されない。

M君はN主任からの指摘に対して、受注処理中に在庫引当処理が行われる前の時点の引当可能在庫数が参照されたとしても、L社の業務上問題にならないと考えた。N主任から指摘2への対処は不要であるとの承認を受け、指摘1についてだけ対応を検討することにした。

2相コミット

M君はN主任の指摘1に対応するために、2相コミットの考え方を利用し、二つのデータベースの内容を更新するトランザクション内で矛盾が発生しないよう整合性の確保を行った。

本システムは、販売管理サブシステム及び在庫管理サブシステムに対して、更新準備、コミット、ロールバックの3種類の2相コミットインタフェースを使ってデータベースの更新を行う。2相コミットインタフェースの処理概要を表1に示す。

表1 2相コミットインタフェースの処理概要
要求処理概要
更新準備更新準備要求を受け取ると、更新が可能な場合には、更新データをディスクに一時的に保持した後、更新が可能であることを保証するために、当該データのロックを行う(こ の状態を"更新準備中"と呼ぶ)。その後、OK回答を返す。更新準備要求を受け取っ たとき、既にロックが掛かっているなど、更新が不可能な場合は、何もせずにNG回答 を返す。
コミット更新準備中にコミット要求を受け取ると、更新データをデータベースに書き込んだ後、 更新を確定してOK回答を返す。その後、当該データのロックを解放する。コミット要 求を受け取ったときに更新準備中になっていない場合は、何もせずにNG回答を返す。
ロールバック更新準備中にロールバック要求を受け取ると、更新データを破棄してOK回答を返す。 その後、当該データのロックを解放する。ロールバック要求を受け取ったときに更新準 備中になっていない場合は、何もせずにNG回答を返す。

図3は、図2の⑤以降の処理で、2相コミットインタフェースを使った場合のシーケンス図である。

M君はN主任に図3のシーケンス図について再レビューを受けたところ、次の助言をもらった。

前回の指摘1について2相コミットを適用しても完全に解決することはできない。例えば、本システムは、コミット要求又はロールバック要求に対して在庫管理サブシステムと販売管理サブシステムの両方からOK回答を受け取らなかった場合には、①自動的に回復できない状態が発生しているおそれがある。そのときは、アラームを発してその対処をオペレータに任すよう、運用上の対処が必要となる。

さらに、N主任からの助言を基に、M君は、トランザクションの整合性を確認するために、受注処理の流れについて机上検証を行った。その結果、②図3の※1の時点で、本システムに障害が発生した場合に、トランザクションとの問題が起きることを発見した。

出典:平成26年度 秋期 応用情報技術者試験 午後 問6