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に示す。 図3は,図2の⑤以降の処理で,2相コミットインタフェースを使った場合のシーケンス図である。 M君はN主任に図3のシーケンス図について再レビューを受けたところ,次の助言をもらった。 前回の指摘1について2相コミットを適用しても完全に解決することはできない。例えば,本システムは,コミット要求又はロールバック要求に対して在庫管理サブシステムと販売管理サブシステムの両方からOK回答を受け取らなかった場合には,①自動的に回復できない状態が発生しているおそれがある。そのときは,アラームを発してその対処をオペレータに任すよう,運用上の対処が必要となる。 さらに,N主任からの助言を基に,M君は,トランザクションの整合性を確認するために,受注処理の流れについて机上検証を行った。その結果,②図3の※1の時点で,本システムに障害が発生した場合に,トランザクションとの問題が起きることを発見した。

設問3 本文中の下線①について,どのような状態が発生した場合に,自動的に回復できないデータの不整合が発生するのか。解答群の中から全て選び,記号で答えよ。 設問4 本文中の下線②の問題について,(1),(2)に答えよ。 (1) この状態で在庫データと受注データにどのような問題が発生するか。15字以内で述べよ。 (2) この問題の対応方法のうち最も適切なものを解答群の中から選び,記号で答えよ。