DBデータベーススペシャリスト試験 午後Ⅰ

平成28年度春期 データベーススペシャリスト 午後Ⅰ 問2

事例を読んで設問の答えを考えてから、解説のポイントとIPA公式の解答例・採点講評で確認しましょう。

問題

問2 データベースの運用設計に関する次の記述を読んで,設問1~3に答えよ。 A社は,仕入れた商品を中小企業向けに小口販売している卸売業者である。A社では,受注,出荷,発注,在庫管理及び販売分析の業務を支援する受発注在庫管理システムを運用している。 〔プログラムとテーブルの関係〕 受発注在庫管理システムの主要なプログラムとテーブルの参照・更新の関係は,表1に示すとおりである。 表1 主要なプログラムとテーブルの参照・更新の関係 (1) “商品”テーブル,“仕入先”テーブル及び“販売先”テーブルの追加,変更の要求は,“マスタ更新登録”テーブルに登録され,バッチプログラムで1件ずつコミットしながら反映される。 (2) “在庫”テーブルは,在庫のうちの3割(売れ筋商品)に相当する約1、000行が毎日頻繁に変更される。 (3) “出荷”テーブルには,毎日,約400、000行が追加される。 (4) “日別販売実績”テーブルには,当日分の販売実績が追加される。また,“月別販売実績”テーブルには,当日分の販売実績が当月分の販売実績に反映される。これらのテーブルには,直近3年分の販売実績が蓄積されている。 (5) “分析用データ”テーブルは,販売分析で使用する。当日分の販売実績が,前日に作成された“分析用データ”テーブルに反映され,直近3年分の分析結果となるように維持されている。 “分析用データ”テーブルは,バッチプログラム“分析用データ作成”を用いて,蓄積されている販売実績を基に,再作成することも可能である。 〔バッチプログラムの実行スケジュール〕 バッチプログラムの実行スケジュールを,図1に示す。 図1 バッチプログラムの実行スケジュール 〔データの入出力〕 (1) RDBMSがディスクとデータの入出力を行う単位を,ページという。1ページ内にはテーブルの行が複数格納される。 (2) 同じページに,異なるテーブルの行が格納されることはない。 (3) 受発注在庫管理システムでは,ページのサイズは4、096バイトとしている。また,“在庫”テーブル及び“出荷”テーブルは,1ページ内に40行格納できるものとする。 〔RDBMSのバックアップ機能・復元機能・更新ログによる回復機能〕 1. バックアップ機能 (1) バックアップの単位には,データベース単位とテーブル単位がある。 (2) バックアップの種類には,取得するページの範囲によって,全体バックアップ,増分バックアップ及び差分バックアップがある。 ① 全体バックアップには,全ページが含まれる。 ② 増分バックアップには,前回の全体バックアップ取得後に変更されたページが含まれる。ただし,前回の全体バックアップ取得以降に増分バックアップを取得していた場合は,前回の増分バックアップ取得後に変更されたページだけが含まれる。 ③ 差分バックアップには,前回の全体バックアップ取得後に変更された全てのページが含まれる。 (3) 全体バックアップと増分バックアップの場合は,バックアップ取得ごとにバックアップファイルが作成される。差分バックアップの場合は,2回目以降の差分バックアップ取得ごとに,前回の差分バックアップファイルが最新の差分バックアップファイルで置き換えられる。 (4) バックアップ取得に要する時間は,バックアップを取得するページ数に比例する。 2. 復元機能 (1) バックアップを用いて,バックアップ取得時点の状態に復元できる。 (2) 復元の単位は,バックアップの単位と同一である。データベース単位のバックアップを用いて,特定のテーブルだけを復元することはできない。 3. 更新ログによる回復機能 (1) バックアップを用いて復元した後,更新ログを用いたロールフォワード処理によって指定の時刻の状態に回復できる。 (2) 更新ログによる回復に要する時間は,更新ログの量に比例する。 〔バックアップ及び回復の方針〕 (1) オンライン時間帯直前に,データベース単位でバックアップを取得する。 (2) オンラインプログラムで更新され得るテーブルは,オンライン時間帯直後に,テーブル単位でバックアップを取得する。 (3) それぞれのバッチプログラムを実行する直前に,更新対象のテーブルについて,テーブル単位でバックアップを取得する。ただし,(2)でバックアップを取得したテーブルは対象外とする。 (4) バックアップの種類は,全体バックアップとする。 (5) 回復は,受注,出荷,発注,在庫管理の業務に影響するテーブルを優先する。 〔データ異常発生時の回復運用〕 バッチプログラム“出荷計上”にプログラム不良があり,“在庫”テーブルの当日分の内容が不正になっていた。これが原因でバッチプログラム“発注対象データ作成”が中断した。バッチプログラムで更新された全てのテーブルを当日のオンライン時間帯直後の状態に復元し,プログラム不良を修正後,全てのバッチプログラムを実行すれば回復可能であるが,時間が掛かるので,次の手順を立案した。 第1段階 バックアップを用いて“出荷”テーブルと“在庫”テーブルを当日のオンライン時間帯直後の状態に復元し,プログラム不良を修正したバッチプログラム“出荷計上”を再実行する。 第2段階 バックアップを用いて“[ア]”テーブルを当日のオンライン時間帯直後の状態に復元し,バッチプログラム“[イ]”を再実行する。 第3段階 バックアップを用いて“[ウ]”テーブルを当日のオンライン時間帯直後の状態に復元し,バッチプログラム“[エ]”を再実行する。 第4段階 バッチプログラム“マスタ更新反映”を実行する。 設問1 受発注在庫管理システムのバックアップ及び回復について,(1),(2)に答えよ。 (1) 図1中の各契機でのテーブル単位のバックアップについて,次の表でバックアップを取得するものに“O”を記入せよ。 なお,バックアップを取得しないものは,空欄のままとすること。 表(設問1(1)のテーブル単位のバックアップ取得対象) (2) 図1で実行中のバッチプログラムがテーブルにアクセスしたとき,ディスク障害を検知して異常終了する場合がある。障害を検知したバッチプログラム名,ディスク障害の影響を受けたテーブル名,及びディスク復旧後の回復手順を,次の表にまとめた。表中の[a]~[f]に入れる適切な字句を答えよ。 表(設問1(2)のディスク復旧後の回復手順) 設問2 バックアップ運用の見直しについて,(1)~(3)に答えよ。 (1) 月初めだけ全体バックアップを取得し,日々の運用では増分バックアップ,差分バックアップも活用することにした。ただし,どちらのバックアップでも同程度の容量の節約となる場合は,バックアップ取得に要する時間が短い方を選択する。この場合,“在庫”テーブル及び“出荷”テーブルについて,選択すべきバックアップの種類として“増分”又は“差分”のいずれかを〇印で囲め。また,その選択根拠として“容量”又は“時間”のいずれかを〇印で囲み,その理由(容量が節約できる理由又は時間が短い理由)を,30字以内で述べよ。 (2) ある一つのテーブルのバックアップを月初めだけ取得し,日々のバックアップは取得しないことにした。回復の方針に従って,どのテーブルを対象にすべきか,テーブル名を答えよ。 (3) (2)のテーブルに障害が発生し,かつ,バックアップファイルが壊れていた場合,どのように回復するか,40字以内で述べよ。 設問3 〔データ異常発生時の回復運用〕について,(1),(2)に答えよ。 (1) [ア]~[エ]に入れる適切な字句を答えよ。 (2) バッチプログラム“出荷計上”,“[イ]”,“[エ]”の再実行,及び“マスタ更新反映”の実行を除いて,その他のバッチプログラムの再実行は不要である。その理由を40字以内で述べよ。
表1 主要なプログラムとテーブルの参照・更新の関係。主要なオンライン・バッチプログラムと,商品,受注,出荷,在庫などの各テーブルに対する参照・追加・変更の関係を一覧化した表。
表1 主要なプログラムとテーブルの参照・更新の関係。主要なオンライン・バッチプログラムと,商品,受注,出荷,在庫などの各テーブルに対する参照・追加・変更の関係を一覧化した表。
図1 バッチプログラムの実行スケジュール。T1~T6の契機に沿って,出荷計上,日次・月次集計,需要予測,発注対象データ作成などの実行順序を矢線で示す図。
図1 バッチプログラムの実行スケジュール。T1~T6の契機に沿って,出荷計上,日次・月次集計,需要予測,発注対象データ作成などの実行順序を矢線で示す図。
表(設問1(1)のテーブル単位のバックアップ取得対象)。T1~T5の契機ごとに,マスタ更新登録や商品,受注,出荷,在庫などのテーブルを列挙し,バックアップ対象を記入する表。
表(設問1(1)のテーブル単位のバックアップ取得対象)。T1~T5の契機ごとに,マスタ更新登録や商品,受注,出荷,在庫などのテーブルを列挙し,バックアップ対象を記入する表。
表(設問1(2)のディスク復旧後の回復手順)。障害を検知したバッチプログラムと影響テーブルごとに,ディスク復旧後の復元,再実行,継続手順を整理する表。
表(設問1(2)のディスク復旧後の回復手順)。障害を検知したバッチプログラムと影響テーブルごとに,ディスク復旧後の復元,再実行,継続手順を整理する表。
解き方のヒントを見る

運用方針の条件を先に整理しよう

この種の問題では、個々の用語を思い出す前に、問題で示された運用上の条件や優先事項を書き出すことが出発点になります。何を重視し何を制約とするかを整理してから、各検討対象がその条件にどう対応するかを確かめましょう。

この問題で問われていること

問われているのは用語そのものの暗記よりも、運用方針に書かれた条件と、選ぶべき手段や手順との対応関係です。方針の中でどの観点が優先され、どれが制約として課されているかを読み取ることが判断の軸になります。

視点

一般にデータ保護の仕組みは、平常時にかける手間と、障害時に元の状態へ戻すための手間の配分を考えて選ぶものです。どの方式にも向き不向きがあるため、単独で優劣を決めるのではなく、方針が求める条件に照らして評価する姿勢が大切です。回復の流れを考える際も、どの時点の状態を何から組み立てるのかを、自分で順を追って確かめると整理しやすくなります。

確認ポイント

  • 運用方針から、優先されている条件と制約になっている条件を分けて書き出したか
  • 各検討対象が方針のどの条件に対応しているかを、自分の言葉で説明できるか
  • 回復の流れを考える際、どの時点の状態を目標にしているかを方針と照らし合わせたか
正解と解説を見る

解説

本問は、オンライン時間帯とバッチ時間帯を繰り返す受発注在庫管理システムのバックアップと回復を扱います。表1のC・U、図1の実行順、〔バックアップ及び回復の方針〕を組み合わせると、取得契機、ディスク障害時の回復手順、増分と差分の選び方、再作成できるテーブルの扱い、プログラム不良の影響範囲を判断できます。

問題の全体像

A社の受発注在庫管理システムでは、オンライン時間帯の後に図1のバッチが順に実行されます。バックアップの方針は次のとおりです。(2)オンラインで更新され得るテーブルは、オンライン時間帯直後に退避します。(3)各バッチの更新対象テーブルは、そのバッチの実行直前に退避します。(5)回復では、受注・出荷・発注・在庫管理の業務に影響するテーブルを優先します。出題趣旨では、対象を見極め、業務への影響を整理し、バックアップ・回復計画に反映する能力を評価するとしています。採点講評では、設問2(1)は一般論だけの解答が多く、(2)(3)と設問3は正答率が低かったと指摘しています。どの設問も、表1・図1・状況記述から具体的に読み取ることが求められます。

設問1(1)

表1のオンライン行でCかUが付いているテーブルは、“マスタ更新登録”(取引先管理・商品情報管理がC)、“受注”(CU)、“出荷指図”(C)、“在庫”(RU・CU)です。方針(2)により、これらはオンライン直後のT1で退避します。T1の直後には“出荷計上”が始まり、“出荷”を追加します(C)。そのため方針(3)により、“出荷”もT1で退避します(“在庫”は(2)で退避済みなので対象外です)。以降は各バッチの開始直前の契機で、そのバッチの更新対象を退避します。T2は“販売実績日次集計”が追加する“日別販売実績”です。T3は“需要予測”が追加する“需要予測”と、“販売実績月次集計”が追加・変更する“月別販売実績”です。T4は“発注対象データ作成”が追加する“発注対象データ”と、“分析用データ作成”が追加・変更する“分析用データ”です。T5は“マスタ更新反映”が追加・変更する“商品”“仕入先”“販売先”です。公式解答例もこのとおりです。参照(R)だけのテーブルや“受注明細書送信”は、退避の対象になりません。

設問1(2)(a)

“出荷”テーブルのバックアップはT1、つまり“出荷計上”の実行前の状態です。求められているのは、“出荷計上”が終わった時点まで戻すことです。ただし“出荷計上”を再実行すると“在庫”も再び変更されてしまいます。そこで、〔更新ログによる回復機能〕を使います。バックアップから復元した後、更新ログでロールフォワードすれば、指定した時刻まで回復できます。公式解答例では、aは「更新ログによる回復機能」又は「更新ログを用いたロールフォワード処理」です。

設問1(2)(b)

表1によると、“マスタ更新反映”は“商品”“仕入先”“販売先”の3テーブルを追加・変更します(CU)。また状況記述(1)により、1件ずつコミットしながら反映されます。そのため、異常終了した時点では、障害を受けた“商品”以外のテーブルにも途中までの更新が確定しています。再実行の前に、3テーブルともT5のバックアップ(実行直前の状態)に戻す必要があります。公式解答例では、bは“商品”です(b~dは順不同)。

設問1(2)(c)

bと同じ理由です。“マスタ更新反映”の更新対象で、1件ずつのコミットによって途中まで反映されている可能性があるため、復元が必要です。公式解答例では、cは“仕入先”です(b~dは順不同)。

設問1(2)(d)

bと同じ理由です。“販売先”も“マスタ更新反映”の更新対象(CU)なので、T5のバックアップから復元します。公式解答例では、dは“販売先”です(b~dは順不同)。

設問1(2)(e)

3テーブルを“マスタ更新反映”の実行直前の状態に戻したので、同じプログラムを最初から実行し直せば、正しい状態になります。公式解答例では、eは“再実行”です。

設問1(2)(f)

図1で、“分析用データ作成”はT4の後からT5をまたいで実行されており、“マスタ更新反映”と並行して動いています。表1によると、“分析用データ作成”が参照・更新するのは“日別販売実績”“月別販売実績”“分析用データ”だけです。障害を受けた“商品”や、復元する3テーブルとは関係がありません。したがって止めたりやり直したりする必要はありません。公式解答例では、fは“継続”です。

設問2(1)

まず“在庫”テーブルです。売れ筋の約1、000行(1ページ40行)が毎日変更されるので、変更されるページは毎日ほぼ同じ範囲に集中しています。増分バックアップは、前回の増分以降に変わったページを毎日別ファイルとして作ります。そのため、同じ範囲のページが日数分のファイルに繰り返し含まれ、容量が積み上がります。差分バックアップにも、全体バックアップ以降に変わった同じページが毎回含まれます。しかし、2回目以降は前回の差分ファイルが最新のもので置き換えられます(機能説明1(3))。ページの範囲が局所化されているので、1ファイルの大きさもほぼ一定です。このため、差分の方が容量を節約できます。公式解答例では「差分」「容量」で、理由は「変更されるページが特定範囲に局所化されているから」又は「増分バックアップでは特定範囲のページが繰り返し含まれるから」です。次に“出荷”テーブルです。毎日約400、000行が追加され、新しいページが毎日増えます。増分ファイルの合計も、置換される差分ファイルも、保持するページ数は月初めからの追加分で同程度です。そこで、問題文の条件に従い時間で比べます。取得時間はページ数に比例します(1(4))。増分はその日の追加ページだけで済みますが、差分は取得するページ数が日ごとに増えます。公式解答例では「増分」「時間」で、理由は「その日の追加ページ分だけのバックアップで済むから」又は「差分バックアップでは毎日ページ数が増加していくから」です。採点講評では、一般論だけの理由は誤りとされています。表1や状況記述から読み取ったテーブルの更新特性を、30字以内に入れてください。

設問2(2)

方針(5)では、受注・出荷・発注・在庫管理の業務に影響するテーブルの回復を優先します。表1によると、“分析用データ”を参照するのはオンラインの“販売分析”だけで、これらの業務には影響しません。さらに状況記述(5)には、“分析用データ”は“分析用データ作成”を使えば、蓄積されている販売実績から再作成できると書かれています。“日別販売実績”も同じく販売実績のテーブルですが、“需要予測”と“発注対象データ作成”が参照しており、発注業務に影響します。公式解答例では、対象は“分析用データ”テーブルです。

設問2(3)

バックアップファイルが壊れていると、復元とロールフォワードは使えません。状況記述(4)(5)によると、“日別販売実績”と“月別販売実績”には直近3年分の販売実績が蓄積されています。“分析用データ”は“分析用データ作成”で、これらから再作成できます。公式解答例では「3年分の販売実績を基に,バッチプログラム“分析用データ作成”を再実行する」です。答案には、再作成の基となるデータ(3年分の販売実績)と、使うプログラム(分析用データ作成)の2点を、40字以内で入れます。

設問3(1)(ア)

不正になったのは、“出荷計上”が更新した“在庫”です。表1で“在庫”を参照するバッチは、“需要予測”と“発注対象データ作成”です。図1で“出荷計上”の後、先に完了しているのは“需要予測”です。“需要予測”は不正な“在庫”を基に“需要予測”テーブルを追加しています(CR)。そのため“需要予測”テーブルも不正です。公式解答例では、アは“需要予測”です。

設問3(1)(イ)

“需要予測”テーブルを復元したら、第1段階で正しくなった“在庫”を基に、“需要予測”テーブルを作り直します。公式解答例では、イは“需要予測”(バッチプログラム名)です。

設問3(1)(ウ)

“発注対象データ作成”は、不正な“在庫”が原因で中断しました。“発注対象データ”テーブル(C)は途中まで作られている可能性があります。また、このプログラムは“在庫”と“需要予測”も参照しています。そのため、“発注対象データ”も復元が必要です。公式解答例では、ウは“発注対象データ”です。

設問3(1)(エ)

“発注対象データ”テーブルを復元した後、正しい“在庫”と“需要予測”を基に、中断した“発注対象データ作成”を実行し直します。図1で“マスタ更新反映”は“発注対象データ作成”の完了を待ってから始まるため、第4段階で実行する流れになります。公式解答例では、エは“発注対象データ作成”です。

設問3(2)

再実行しない残りのバッチは、“受注明細書送信”“販売実績日次集計”“販売実績月次集計”“分析用データ作成”です。表1で参照するテーブルを確認すると、どれも“在庫”、“需要予測”、“発注対象データ”のいずれも参照していません。つまり、不正な内容の影響を受けていません。公式解答例では「“在庫”テーブルと,そのデータを反映したテーブルを参照しないから」などです。採点講評では、表1とスケジュールから影響範囲を見極めるよう指摘しています。答案には、不正の起点(在庫)と、そこから波及したテーブルを参照していないことを、40字以内で入れます。

学習のポイント

表1のC・Uと図1の実行順から、影響するテーブルとプログラムを特定する練習をしてください。増分と差分の選択では、ページの範囲とファイルの作られ方(毎回作成か置換か)をテーブルの更新特性と照らし合わせることが重点です。

出典:独立行政法人 情報処理推進機構(IPA)平成28年度春期 データベーススペシャリスト試験 午後Ⅰ 問2(公式資料:問題冊子(PDF) / 解答例 / 採点講評)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針