データベーススペシャリスト午後I 事例記述令和2年 10月
午後I 問2

問2 レプリケーション機能を用いたチケット販売システムに関するデータベース実装

テーマ:レプリケーション機能を用いたチケット販売システムの設計・トランザクション制御
左右2分割表示:左側の問題文をスクロールしながら右側の設問に解答できます

長文事例本文

図表クリックで拡大
問2 データベースの実装に関する次の記述を読んで,設問1〜3に答えよ。 劇場運営会社のY社は,オンラインチケット販売システム(以下,チケット販売システムという)を構築してインターネットでのチケットの申込みを受け付けている。Y社ではチケット販売システムを刷新し,新たにプレイガイドなどでのチケット販売委託を進めることになった。 〔RDBMSの主な仕様〕 チケット販売システムに用いているRDBMSの主な仕様は,次のとおりである。 1. ISOLATION レベル 選択できるトランザクションの ISOLATION レベルとその排他制御の内容は,表1のとおりである。 ロックは行単位で掛ける。共有ロックを掛けている間は,他のトランザクションからの対象行の参照は可能であり,変更は共有ロックの解放待ちとなる。専有ロックを掛けている間は,他のトランザクションからの対象行の参照,変更は専有ロックの解放待ちとなる。 表1 トランザクションの ISOLATION レベルとその排他制御の内容 | ISOLATION レベル | 排他制御の内容 | | :--- | :--- | | READ COMMITTED | データ参照時に共有ロックを掛け,参照終了時に解放する。
データ変更時に専有ロックを掛け,トランザクション終了時に解放する。 | | REPEATABLE READ | データ参照時に共有ロックを掛け,トランザクション終了時に解放する。
データ変更時に専有ロックを掛け,トランザクション終了時に解放する。 | 2. レプリケーション機能 (1) 1か所のデータを複数か所に複製する機能,複数か所のデータを1か所に集約する機能,及び両者を組み合わせて双方向に反映する機能がある。これらの機能を使用すると,一方のテーブルへの挿入・更新・削除を他方に自動的に反映させることができる。 (2) トランザクションログを用いてトランザクションと非同期に一定間隔でデータを反映するバッチ型と,レプリケーション元のトランザクションと同期してデータを反映するイベント型がある。 ① バッチ型では,テーブルごとに,レプリケーションの有効化,無効化をコマンドによって指示することができる。無効化したレプリケーションを有効化するときには,蓄積されたトランザクションログを用いてデータを反映する。 ② イベント型では,レプリケーション先への反映が失敗すると,レプリケーション元の変更はロールバックされる。 (3) 列の選択,行の選択及びその組合せによって,レプリケーション先のテーブルに必要とされるデータだけを反映することができる。 〔チケット販売システムの概要〕 チケット販売システムは,空席管理システムと販売管理システムで構成される。オンラインチケット販売時には,空席管理システムで空席を確認した後に座席を確保し,販売管理システムでチケット情報を保持する。 〔チケット販売システムのテーブル〕 空席管理システムと販売管理システムのそれぞれの主なテーブルのテーブル構造は,図1,2のとおりである。索引は,主キー及び外部キーに定義している。
図1 空席管理システムの主なテーブルのテーブル構造(一部省略) 拡大
図1 空席管理システムの主なテーブルのテーブル構造(一部省略)
図2 販売管理システムの主なテーブルのテーブル構造(一部省略) 拡大
図2 販売管理システムの主なテーブルのテーブル構造(一部省略)
〔チケット販売業務の概要〕 1. テーブル及び列の設定 (1) 会場と座席 ① 会場には,一意な会場番号を付与して,都道府県,住所,座席図などを設定する。 ② 座席には,会場ごとに一意な座席番号を付与して,席種(‘S’,‘A’,‘B’など)を設定する。 (2) 公演と席種料金 ① 公演には,一意な公演番号を付与する。公演開催明細には,公演日時(公演日,開演時刻)ごとに,開場時刻,公演会場番号,販売開始日などを設定する。 ② 席種料金には,公演の席種ごとに料金を設定する。 (3) 席種在庫と座席状況 ① 席種在庫には,席種ごとの空席数をもつ。座席の購入が確定したら空席数を減らし,購入された座席がキャンセルされたら空席数を戻す。 ② 座席状況には,公演開催明細ごとの全ての座席の状況をもつ。販売開始時には,空席フラグはオン,仮予約フラグはオフとする。座席の購入処理中は仮予約フラグをオンにする。座席の購入が確定したら,空席フラグをオフにして,仮予約フラグをオフにする。 (4) チケット ① チケットには,公演開催明細ごとに,全ての座席番号と席種を設定する。 ② 未販売のチケットは,購入フラグをオフに,購入番号を NULL に設定する。 ③ チケットの購入を申し込まれたら,購入フラグをオンにする。購入が確定したら,購入番号を設定する。 2. チケットの購入 (1) チケットを購入するためには,会員登録をする必要がある。 (2) 会員は,チケットの検索を行って,チケット情報一覧を表示する。チケット情報は,公演名・公演日・開演時刻の昇順,料金の降順に出力される。 (3) 会員は,チケット情報一覧から,空席のある公演の席種を選択する。その後,枚数を指定し,空席の座席番号を希望枚数分指定する。 (4) 会員は,決済を行い,決済が成立すれば購入が確定する。 〔チケット情報一覧を出力する SQL 文の設計〕 空席管理システムから,公演日が2020年4月かつ都道府県が東京のチケット情報一覧の出力の例を図3,出力する SQL 文の構文を図4に示す。 図3 チケット情報一覧の出力の例 | 公演名 | 公演日 | 開演時刻 | 開場時刻 | 会場名 | 都道府県 | 席種 | 料金 | 空席情報 | | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | | ABCDEF | 2020-04-01 | 14:00 | 13:30 | Xホール | 東京 | S | 10,000 | ○ | | ABCDEF | 2020-04-01 | 14:00 | 13:30 | Xホール | 東京 | A | 8,000 | × | | ABCDEF | 2020-04-01 | 14:00 | 13:30 | Xホール | 東京 | B | 6,000 | × | | ABCDEF | 2020-04-01 | 18:00 | 17:30 | Xホール | 東京 | S | 10,000 | ○ | | ABCDEF | 2020-04-01 | 18:00 | 17:30 | Xホール | 東京 | A | 8,000 | × | | : | : | : | : | : | : | : | : | : | | GHABCD | 2020-04-02 | 18:00 | 17:30 | Yホール | 東京 | S | 12,000 | ○ | | GHABCD | 2020-04-02 | 18:00 | 17:30 | Yホール | 東京 | A | 10,000 | ○ | | : | : | : | : | : | : | : | : | : | | GHABCD | 2020-04-30 | 18:00 | 17:30 | Zホール | 東京 | S | 12,000 | ○ | | GHABCD | 2020-04-30 | 18:00 | 17:30 | Zホール | 東京 | A | 10,000 | ○ | 注記 空席情報は,○:空席あり,×:売切れを表す。
図4 チケット情報一覧を出力するSQL文の構文(未完成) 拡大
図4 チケット情報一覧を出力するSQL文の構文(未完成)
〔オンラインチケット販売処理の設計〕 チケット販売委託のため,空席管理システムは,プレイガイドなどの外部委託先にも公開する。このために,空席管理システムの空席確認,仮予約の処理の見直しを行った。見直しに当たって,同時実行されたトランザクションのやり直しが極力発生しないようにする方針とした。 ある会員が複数のチケットを購入することを想定して,チケットの販売処理について検討した。その概要を図5に示す。
図5 チケットの販売処理の概要(未完成) 拡大
図5 チケットの販売処理の概要(未完成)
図5では,会員の意思で購入を途中でキャンセルした場合,空席でない座席があり購入が失敗した場合,又はその他のエラーが発生した場合の,途中までの処理を取り消すための例外処理を省略している。 図5の内容のレビューを行った。レビューでの指摘内容と対策を表2に示す。
表2 指摘内容と対策(未完成) 拡大
表2 指摘内容と対策(未完成)
〔レプリケーションの設計〕 チケット販売委託先に,空席管理システムを介して,空席情報を表示するサービスも提供する。そのため,データベースへの大量のアクセスによるロックの解放待ちの多発が見込まれるので,空席情報表示用のレプリケーション先のテーブル(以下,レプリカデータという)を作成することにした。レプリカデータのテーブル構造は,図1の空席管理システムの主なテーブルと同等なものとし,サービスの提供先ごとにレプリカデータを用意する。レプリカデータの運用について図6に示す。さらに,図6の内容のレビューを行った。レビューでの指摘内容と対策を表3に示す。 図6 レプリカデータの運用(未完成) 公演を計画し,チケットを販売するに当たって,空席管理システムのテーブル(以下,オリジナルという)に登録する各種データを作成する。 チケットの販売開始前に,バッチ型のレプリケーション機能を使用して,対象となるチケットに関連するテーブルの行を,一定間隔で反映するように設定した上で,各種データをオリジナルに入力する。 具体的には,空席確認,購入などのトランザクションを阻害しないように,オリジナルをレプリケーション元,レプリカデータをレプリケーション先として,“ア”テーブルと“イ”テーブルを対象に,ウする機能を使用する。 表3 指摘内容と対策(未完成) | 指摘内容 | 対策 | | :--- | :--- | | レプリカデータにアクセスするタイミングによって,次のように,表示する空席情報が不正になる場合がある。
1. 購入された座席が空席として表示される。
2. エ | イベント型のレプリケーション機能を適用する。対象とするテーブルとその列を表4のように設定する。ただし,レプリケーションの性能への影響を抑えるため,対象は必要最低限のものとする。 | 表4 イベント型レプリケーション機能の設定内容(未完成) | レプリケーション元テーブル | レプリケーション対象列 | | :--- | :--- | | | | | | | | | |

設問一覧 & 解答・演習

まずは解答を作成してみましょう。「解答例を見る」をクリックするとIPA公式解答例と採点基準が開きます。

設問1記号・選択式
〔チケット情報一覧を出力する SQL 文の設計〕について,図4中の a 〜 g に入れる適切な字句を答えよ。
※直接入力してください
設問2 (1)記号・選択式
表2中の [ あ ] 〜 [ お ] に入れる適切な字句を答えよ。
※直接入力してください
設問2 (2)記述問題
制限字数:30 字以内
空席管理システムで実行するトランザクションの ISOLATION レベルは READ COMMITTED(①)と REPEATABLE READ(②)のどちらを設定すべきか,①か②で答えよ。また,その理由を30字以内で述べよ。
0 / 30 文字
設問3 (1)記号・選択式
図6中の ア 〜 ウ に入れる適切な字句を,本文中の字句を用いて答えよ。
※直接入力してください
設問3 (2)記述問題
制限字数:30 字以内
表3中の エ に入れる文章を,1. に倣って30字以内で述べよ。
0 / 30 文字
設問3 (3)記号・選択式
イベント型レプリケーション機能の対象とするテーブルとその列を答え,表4を完成させよ。なお,表4の欄は全て埋まるとは限らない。
※直接入力してください
午後I長文記述の得点力を引き上げる定番対策書Amazon・楽天 公式提携
PR
徹底攻略 データベーススペシャリスト教科書 令和8年度
IPA 厳選対策書徹底攻略 データベーススペシャリスト教科書 令和8年度株式会社わくわくスタディワールド 瀬戸 美月 著 / インプレス
DB徹底攻略
株式会社わくわくスタディワールド 瀬戸 美月 著 / インプレス

徹底攻略 データベーススペシャリスト教科書 令和8年度

💡 推薦ポイント:午後I・午後IIの概念データモデル穴埋めや排他制御・性能設計の記述問題で確実に合格点を勝ち取る実践テクニックが満載です。
※本リンク先はプロモーション(アフィリエイト広告)が含まれています
【出題趣旨】IPA公式発表
オンラインシステムでは,同時実行される要求が,相互に影響して予期せぬ結果を発生させることのないように,処理内容を注意深く設計する必要がある。 本問では,レプリケーション機能を用いたチケット販売システムを題材に,SQL の設計能力,トランザクション制御及び排他制御の理解,適切な同時実行性を満たす設計能力を問う。
【採点講評】IPA公式発表
問2 では,レプリケーション機能を用いたチケット販売システムを題材に,SQL の設計,トランザクション制御及び排他制御,適切な同時実行性を満たす設計について出題した。全体として正答率はやや低かった。 設問1 は,正答率がやや高かった。b,d~g は特に高く,述語やORDER BY 句など個々の構文についてはよく理解されていた。逆に,a とc は低く,条件構文や結合構文には課題があるように見受けられた。 設問2 は,正答率が平均的であったが,(2)の理由については正答率が低かった。特に,ロックの解放待ち時間の短縮や,デッドロックを回避することを理由に挙げたものが散見された。オンラインシステムでは,同時実行される要求が,相互に影響して予期せぬ結果を発生させることのないように,処理内容を注意深く設計する必要がある。設問中の処理内容と状況記述から,適切なISOLATION レベルを読み取ってほしい。 設問3 は,正答率が平均的であったが,(1)ウについては正答率が低かった。設問中のレプリケーション機能の仕様と状況記述から,目的と必要な処理を読み取ってほしい。
本番形式・制限時間付きで演習する
令和2年 10月 午後I(3問中2問選択・90分)を実戦演習モードで通し解答し、総合採点を受けられます。
実戦演習を始める