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

平成30年度春期 データベーススペシャリスト 午後Ⅱ 問1

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

問題

問1 データベースの設計,実装に関する次の記述を読んで,設問1~3に答えよ。 精密電子機器メーカのA社では,新たに経費精算システムを稼働させるに当たって,クラウドサービスの利用を検討中である。経費精算システムは,現行の人事管理システム(以下,現行システムという)から分離する旅費交通費精算機能,新たに開発する一般経費精算機能及び仮払金精算機能から成る。 〔業務の概要〕 1.組織,科目,経費予算,締日 (1) 組織 ① A社には,10の事業部があり,事業部内に複数の部がある。 ② 全社の経費精算事務を行う事務センタがある。 (2) 科目 ① 費用を用途によって区分したものを科目という。例えば,旅費交通費,通信費,接待交際費,消耗品費など,20科目がある。 ② 科目を細分化した内訳を,内訳科目という。例えば,旅費交通費には,宿泊費,日当などの内訳科目がある。 (3) 経費予算 事業部ごとに,経費の予算・実績の管理を行う。事業部ごとに任命された経費管理責任者が,年度初め(4月)に科目別月別の経費予算を作成する。 (4) 締日 経費申請の締日は,毎月20日である。 2.手続の種類 (1) 旅費交通費精算 ① 旅費 ・社員が,出張の費用を精算する手続である。 ・社員は,出張に先立って支出予定の旅費申請を行い,帰社後に実費を精算する。 ② 交通費 ・社員が,業務で移動に利用した電車,バス,タクシーなどの料金を精算する手続である。 ・社員は,前月の締日の翌日から当月の締日までの交通機関の利用を記録し,1か月分の交通費をまとめて申請する。 (2) 一般経費精算 ① 接待交際費,通信費,消耗品費などを精算する手続である。 ② 精算手続には,社員が立て替えた代金を社員に支払う“立替経費精算”,支払先への代金支払を事務センタに依頼する“経費支払依頼”の2種類があり,申請種別で区分される。 ③ 締日までに受け付けた申請については,月末までに支払を行う。 (3) 仮払金精算 ① 社員が,宿泊費,接待交際費などに使用する目的で一定額の仮払金の支払を事前に受け,事後に精算する手続である。仮払金を使用して旅費,一般経費の支払を行った場合,旅費交通費精算又は一般経費精算を行う必要がある。 ② 申請には,社員番号,申請理由,仮払金額,精算期限を記載する。 ③ 事務センタは,未精算の仮払金を仮払金残高として記録し,社員が精算期限までに全額を精算するように促している。 ④ 一つの仮払いに対する精算が複数の日に分かれることもある。精算時には,精算日ごとに精算金額を記録し,仮払金残高から精算金額を減額する。 3.申請・精算の流れ (1) 申請 ① 申請者は,旅費交通費,一般経費,仮払金の申請を登録する。申請には一意な申請番号が付与される。 ② 領収書などの証憑(ひょう)の提出が必要な場合には,証憑をスキャナで取り込んだ画像を添付する。証憑には,申請番号ごとに一意な証憑番号が付与される。 (2) 上司承認,庶務精査,経費管理責任者確認 申請の承認,精査及び確認は,申請ごとに次のように行われる。 ① 申請者の上司は,申請内容を確認して承認,否認,差戻しのいずれかを判定する。承認の場合は,申請に上司承認日を記録して庶務担当者に回付する。 ② 申請者の所属事業部の庶務担当者は,申請書を精査する。問題がなければ,申請に精査日を記録する。旅費交通費,一般経費の申請は経費管理責任者に回付し,仮払金の申請は事務センタに回付する。 ③ 経費管理責任者は,申請内容及び経費予算を確認して承認,否認,差戻しのいずれかを判定する。承認の場合は,申請に責任者承認日を記録して,事務センタに回付する。 (3) 支払 事務センタは,申請を受けて社員又は支払先への支払を行う。 ① 旅費交通費は,申請ごと支払予定日ごとに作成した支払伝票を基に支払を行い,支払伝票に支払実行日を記録する。 ② 一般経費は,申請ごとに支払伝票を作成し,申請に支払伝票の支払予定日及び支払番号を記録する。支払伝票を基に支払を行い,支払伝票に支払実行日を記録する。 ③ 仮払金は,申請を基に一定額の支払を行い,申請に支払実行日を記録する。 〔システムの概要〕 1.現行システム (1) 現行システムの概要 ① 現行システムは,旅費交通費精算,勤怠管理,労務管理など複数の機能から成る。 ② 事業部,部,職位,社員,通貨など複数の機能に共通するマスタ(以下,共通マスタという)は,一元的に更新される。 ③ 経費予算,申請に関する情報,及び申請から派生する伝票などの情報は,経費予算の年月又は申請の処理年月が60か月前から現在までのデータが全て保存されている。 ④ 旅費交通費精算機能の運用時間帯は,平日の8時~23時であり,8時~20時にオンライン処理,20時~23時にバックアップ及びバッチ処理が行われる。 (2) 現行システムの構成 ① 旅費交通費精算機能には,APサーバ2台,DBサーバ1台が割り当てられている。DBサーバには,コールドスタンバイの待機サーバを置いている。 ② バッチ処理では,DBサーバ上に別途構築されたバッチアプリケーションの実行環境上でプログラム(以下,バッチPGMという)を実行している。 2.経費精算システム (1) 経費精算システムの概要 ① 旅費交通費精算機能,一般経費精算機能及び仮払金精算機能から成る経費精算システムを稼働させる。 ② 経費精算システムの運用時間帯は,現行システムの旅費交通費精算機能と同じである。 (2) 経費精算システムのテーブル構造,見積行数・データ所要量 経費精算システムのテーブル構造を図1に,主な列とその意味・制約を表1に,主なテーブルの見積行数・データ所要量を表2に示す。 図1 経費精算システムのテーブル構造(未完成・一部省略) 表1 主な列とその意味・制約 表2 主なテーブルの見積行数・データ所要量 (3) 経費精算システムの処理 主な処理のCRUDを表3に,バッチPGMの処理内容を表4に示す。 表3 主な処理のCRUD 表4 バッチPGMの処理内容 〔RDBMSの仕様〕 1.データページ (1) RDBMSがストレージとデータの入出力を行う単位を,データページという。データページには,テーブル,索引のデータが格納される。表領域ごとに,ページサイズ(1データページの長さで,2、000,4、000,8、000バイトのいずれか)と,空き領域率(将来の更新に備えて,データページ内に確保しておく空き領域の割合)を指定する。 (2) 同じデータページに,異なるテーブルの行が格納されることはない。 2.テーブル (1) テーブルの列には,NOT NULL制約を指定することができる。NOT NULL制約を指定しない列には,NULLか否かを表す1バイトのフラグが付加される。 (2) 主キー制約には,主キーを構成する列名を指定する。 (3) 参照制約には,列名,参照先テーブル名,参照先列名を指定する。 (4) 検査制約には,同一行の列に対する制約を指定する。 (5) 使用可能なデータ型は,表5のとおりである。 3.索引 索引には,ユニーク索引と非ユニーク索引がある。 表5 使用可能なデータ型 〔テーブルの物理設計〕 1.テーブル定義 次の方針に基づいてテーブル定義表を作成し,テーブル定義を行う。作成中の“一般経費申請”テーブルのテーブル定義表を表6に示す。 (1) データ型欄には,データ型,データ型の適切な長さ,精度,位取りを記入する。データ型の選択は,次の規則に従う。 ① 文字列型の列が全角文字の場合は,NCHAR又はNCHAR VARYINGを選択し,それ以外の場合はCHAR又はVARCHARを選択する。 ② 数値の列が整数である場合は,取り得る値の範囲に応じて,SMALLINT又はINTEGERを選択する。それ以外の場合はDECIMALを選択する。 ③ ①及び②どちらの場合も,列の値の取り得る範囲に従って,格納領域の長さが最小になるデータ型を選択する。 ④ 日付の列は,DATEを選択する。 (2) NOT NULL欄には,NOT NULL制約がある場合はYを,ない場合はNを記入する。 (3) 格納長欄には,RDBMSの仕様に従って,格納長を記入する。可変長文字列の格納長は,表1から平均文字数が分かる場合はそれを基準に算出し,それ以外の場合は,最大文字数の半分を基準に算出する。 (4) 索引の種類と構成列欄には,作成する索引を記入する。 ① 索引の種類には,P(主キーの索引),U(ユニーク索引),NU(非ユニーク索引)がある。 ② 主キーの索引は必ず作成する。 ③ 主キー以外で値が一意となる列又は列の組合せには,必ずユニーク索引を作成する。それ以外の列又は列の組合せが,外部キーを構成する場合は,必ず非ユニーク索引を作成する。 ④ 各索引の構成列には,構成列の定義順に1からの連番を記入する。 (5) 制約欄には,参照制約,検査制約をSQLの構文で記入する。 表6 “一般経費申請”テーブルのテーブル定義表(未完成) 2.データ所要量の見積り “一般経費申請”テーブルのデータ所要量を見積もるために,表7を作成した。ここで,索引のデータ所要量は考慮しないものとする。 表7 “一般経費申請”テーブルのデータ所要量(未完成) 〔性能見積り・評価〕 1.性能見積り 現行システムの旅費交通費精算機能のDBサーバは,処理がピークとなる締日前にCPU使用率がしきい値に達しつつある。一般経費申請も,同様に締日前にピークが見込まれるので,一般経費申請で必要となるCPUの性能見積りを行った。 (1) 性能要件 ① 1トランザクション当たりのターンアラウンドタイムは,1秒以下とする。内訳は,APサーバ0.4秒以下,DBサーバ0.6秒以下である。 ② ピーク時に,旅費申請及び交通費申請では,両者を合わせて1秒間に400トランザクションを,一般経費申請では1秒間に200トランザクションを処理することができる。 (2) DBサーバの性能見積りの前提 ① CPU使用率は80%以下とする。 ② CPUの1データページ当たりの処理時間は,0.2ミリ秒である。 ③ 1データページ当たりのストレージへのI/O時間は,20ミリ秒である。 ④ トランザクションごとに,平均50データページにアクセスする。 ⑤ CPU待ち時間,索引の探索時間,ネットワークの通信時間は考慮しない。 (3) DBサーバの性能見積り ① CPUの1トランザクション当たりの処理時間は【e】ミリ秒であり,200トランザクションの処理時間は【f】秒となる。CPU使用率を80%とするためには,同じ性能のCPUが少なくとも【g】個必要である。 ② 仮に,データベースのバッファヒット率が0%とすると,1トランザクション当たりのI/O時間は,【h】秒で要件を満たさない。しかし,バッファヒット率が60%のとき,CPU処理時間とI/O時間の合計は,【i】秒となり,要件の範囲内になる。 2.評価 現行システムの旅費交通費精算機能のDBサーバには,CPU及び周辺機器の増設が必要となるが,現行システムの機器が2年後に更新時期を迎えることから,クラウドサービスの利用を検討する。 〔クラウドサービスの概要〕 検討対象のクラウドサービスの概要は,次のとおりである。 1.サービス概要・利用料金 (1) サービスとして提供されるサーバには,次の2種類がある。 ・アプリケーションソフトを稼働させるためのハードウェア,OSなどを備えたIaaS型の汎用サーバ ・ハードウェア,OS,データベースのプラットフォームを備えたPaaS型の専用サーバ (2) 汎用サーバのサービス利用料金は,サーバの稼働時間に対して課金される。 (3) 専用サーバのサービス利用料金は,“データベース利用時間 × 基本サービス利用料金”で課金される。オプションを利用すると,基本サービス利用料金にオプション利用料金が追加される。基本サービス利用料金は,表8に示すようにサーバのクラスごとに定められている。 (4) 専用サーバでは,現行システムと同じRDBMSを使用できる。 表8 専用サーバのクラス 2.制限事項・管理機能 (1) 汎用サーバでは,利用者はサーバにログインして,OSコマンドを実行することができる。 (2) 専用サーバでは,利用者はサーバにログインできない。このため,バッチPGMの実行,ファイルシステムへのアクセスを行えないが,Webベースの管理画面を通じて,次の管理機能を利用できる。 ① データベースの起動・停止,バックアップ・リストアなどの操作を行う。 ② ジョブスケジューラの機能を利用して,データベースの起動・停止,バックアップなどを,指定した間隔又は指定した日時に実行する。 3.専用サーバで提供されるサーバの障害対策 (1) 基本サービス ① 利用中の仮想サーバにハードウェア故障が発生した場合,他の仮想サーバに切り替えられる。 ② データベースのフルバックアップは,毎日自動的に行われる。 ③ データベースの更新ログは,5分ごとにバックアップストレージに保存される。この場合のストレージは,データベースが使用するストレージとは別に用意される。 (2) オプション ① スタンバイサーバを設定できる。スタンバイサーバは,利用中の仮想サーバとは異なる場所に設置されたハードウェア上で稼働し,利用中の仮想サーバ上のデータベースに対して行われたSQL文による更新が,スタンバイサーバ上のデータベースに即座に反映される。 ② 障害が発生すると,数分でスタンバイサーバへと自動的に切り替えられる。 〔クラウドサービスの選定・評価〕 1.サービスの選定 (1) APサーバには汎用サーバを,DBサーバには専用サーバを利用する。 (2) DBサーバは,〔性能見積り・評価〕と同様に,次の条件で性能見積りを行い,利用するクラスは表8から選択する。 ① 表8の仮想CPU単体の性能は,DBサーバの性能見積りの前提としたCPU単体の性能に相当する。 ② メモリサイズは,12Gバイト以上必要である。 ③ 必要な仮想CPU数及びメモリサイズの条件を満たす,必要最低限のクラスを選択する。 (3) 基本サービスでは,障害発生後に復元されたデータベースに,コミット済みのトランザクションによる更新が全て反映されていないこともあり得るので,スタンバイサーバ設定のオプションを使用する。 (4) DBサーバ上でバッチPGMを実行することができないので,バッチPGMはAPサーバ上で実行する。 2.サービスの評価 選定したサービスを基に,クラウドサービスの利用を次のように評価した。 (1) 性能 ① オンライン処理は,性能要件を満たしている。 ② バッチ処理は,DBサーバとAPサーバ間の通信による処理時間の増加が懸念される。そこで,〔業務の概要〕及び表2を基に,次の前提で各処理の探索対象行数,結果行数,サーバ間通信対象行数を試算し,バッチ処理の処理行数を表9にまとめた上で,対策を検討することにした。 ・共通マスタのテーブル参照は,試算の対象としない。 ・“旅費申請”,“交通費申請”,“一般経費申請”,“経費伝票”の各テーブルには,それぞれ処理年月をキーとする索引があるものとする。 ・申請数は,各事業部,各科目,各処理年月に均一に分布するものとする。 ・探索対象行数は,参照する全てのテーブルについて,各テーブルの選択条件に一致する行数の合計とする。 ・結果行数は,選択,集約などの演算の結果として得られる行数とする。 ・サーバ間通信対象行数は,処理ごとに,行の参照,追加のためにDBサーバとAPサーバ間で転送される行数とする。 表9 バッチ処理の処理行数(未完成) (2) 可用性,安全性,保守性 ① スタンバイサーバの設定によって,可用性は現行システムよりも向上する。 ② 安全性,保守性については,現行システムと同等である。 (3) コスト ジョブスケジュールを適切に設定することによって,クラウドサービスの利用料金を大幅に低減できることが分かった。 設問1 図1及び〔テーブルの物理設計〕について,(1)~(4)に答えよ。 (1) 図1中の【ア】,【イ】に入れる一つ又は複数の列名を答えよ。なお,列名には本文又は図表中の用語を用いること。また,【ア】,【イ】に入れる列が主キーを構成する場合,主キーを表す実線の下線を付けること。 (2) 表6中の太枠内に適切な字句を記入して,太枠内を完成させよ。 (3) 表6中の【ウ】に入れる適切な字句を答えよ。ここで,1~999のような,値の上限・下限に関する制約は,検査制約では定義しないものとする。 (4) 表7中の【a】~【d】に入れる適切な数値を答えよ。ここで,空き領域率は10%とする。 設問2 〔性能見積り・評価〕の“DBサーバの性能見積り”の記述中の【e】~【i】に入れる適切な数値を答えよ。 設問3 〔クラウドサービスの選定・評価〕について,(1)~(3)に答えよ。 (1) サービスの選定について,①,②に答えよ。 ① 性能見積りによって求められた,経費精算システム全体のDBサーバに必要な仮想CPU数を答えよ。また,表8から,選定条件を満たす専用サーバのクラス名を一つ答えよ。 ② 基本サービスで,復元されたデータベースにコミット済みのトランザクションによる更新が反映されていないことがあるのはどのような場合か。具体的に35字以内で述べよ。 (2) バッチ処理の性能について,①,②に答えよ。 ① 表9中の【j】~【n】に入れる適切な数値を答えよ。 ② 表9中の処理について,サーバ間通信対象行数の削減対策による効果が最も大きい処理を一つ挙げ,その対策内容を具体的に40字以内で述べよ。 (3) クラウドサービスの利用料金を低減できるジョブスケジュールの設定内容を,具体的に30字以内で述べよ。
図1 経費精算システムのテーブル構造(未完成・一部省略)。事業部、部、職位、社員、所属、科目、内訳科目、通貨、経費予算、旅費申請、交通費申請、一般経費申請、仮払金申請、仮払金精算、経費伝票、証憑伝票、支払伝票などの関係スキーマ。主キーを実線、外部キーを破線の下線で示し、空欄ア・イがある。
図1 経費精算システムのテーブル構造(未完成・一部省略)。事業部、部、職位、社員、所属、科目、内訳科目、通貨、経費予算、旅費申請、交通費申請、一般経費申請、仮払金申請、仮払金精算、経費伝票、証憑伝票、支払伝票などの関係スキーマ。主キーを実線、外部キーを破線の下線で示し、空欄ア・イがある。
表1 主な列とその意味・制約。申請番号、社員番号、申請種別、一般経費申請状態、各承認日、処理年月、内訳科目コード、支払金額、通貨コード・外貨金額、支払先、支払目的、支払予定日、支払番号について、値の範囲・桁数・文字数と必須か任意かを示す表。
表1 主な列とその意味・制約。申請番号、社員番号、申請種別、一般経費申請状態、各承認日、処理年月、内訳科目コード、支払金額、通貨コード・外貨金額、支払先、支払目的、支払予定日、支払番号について、値の範囲・桁数・文字数と必須か任意かを示す表。
表2 主なテーブルの見積行数・データ所要量。経費予算から支払伝票まで11テーブルの見積行数、ページサイズ、データページ数、データ所要量(百万バイト)の表。一般経費申請・仮払金申請・仮払金精算のページ数と所要量は網掛けで表示していない。
表2 主なテーブルの見積行数・データ所要量。経費予算から支払伝票まで11テーブルの見積行数、ページサイズ、データページ数、データ所要量(百万バイト)の表。一般経費申請・仮払金申請・仮払金精算のページ数と所要量は網掛けで表示していない。
表3 主な処理のCRUD。オンライン処理8種(経費予算登録~経費申請照会)とバッチ処理3種(経費伝票作成・会計データ作成・経費分析表作成)が、事業部・部から支払伝票までの各テーブルに行う追加・参照・更新を示すCRUD表。
表3 主な処理のCRUD。オンライン処理8種(経費予算登録~経費申請照会)とバッチ処理3種(経費伝票作成・会計データ作成・経費分析表作成)が、事業部・部から支払伝票までの各テーブルに行う追加・参照・更新を示すCRUD表。
表4 バッチPGMの処理内容。経費伝票作成、会計データ作成、経費分析表作成の三つのバッチPGMについて、対象となる行の条件と、経費伝票の追加・会計データのファイル出力・予算実績対比表の出力内容を記した表。
表4 バッチPGMの処理内容。経費伝票作成、会計データ作成、経費分析表作成の三つのバッチPGMについて、対象となる行の条件と、経費伝票の追加・会計データのファイル出力・予算実績対比表の出力内容を記した表。
表5 使用可能なデータ型。CHAR、NCHAR、VARCHAR、NCHAR VARYING、SMALLINT、INTEGER、DECIMAL、DATEの各データ型について、取り得る値の範囲と格納バイト数、制御情報の付加を説明した表。
表5 使用可能なデータ型。CHAR、NCHAR、VARCHAR、NCHAR VARYING、SMALLINT、INTEGER、DECIMAL、DATEの各データ型について、取り得る値の範囲と格納バイト数、制御情報の付加を説明した表。
表6 “一般経費申請”テーブルのテーブル定義表(未完成)。一般経費申請の各列のデータ型、NOT NULL、格納長、索引の種類と構成列(P、NU×3、U)の表。外貨金額~支払番号の行は太枠の空欄で、参照制約は網掛け、検査制約に空欄ウがある。
表6 “一般経費申請”テーブルのテーブル定義表(未完成)。一般経費申請の各列のデータ型、NOT NULL、格納長、索引の種類と構成列(P、NU×3、U)の表。外貨金額~支払番号の行は太枠の空欄で、参照制約は網掛け、検査制約に空欄ウがある。
表7 “一般経費申請”テーブルのデータ所要量(未完成)。見積行数1,500,000行、平均行長239バイトを示し、ページサイズa、1データページ当たりの平均行数b、必要データページ数c、データ所要量dが空欄になっている表。注記付き。
表7 “一般経費申請”テーブルのデータ所要量(未完成)。見積行数1,500,000行、平均行長239バイトを示し、ページサイズa、1データページ当たりの平均行数b、必要データページ数c、データ所要量dが空欄になっている表。注記付き。
表8 専用サーバのクラス。クラスC1~C5の仮想CPU数(1~16)、メモリサイズ(4~64Gバイト)、基本サービス利用料金(C1料金の2.5~10.0倍)を示す表。C1の料金は網掛けで表示していない。
表8 専用サーバのクラス。クラスC1~C5の仮想CPU数(1~16)、メモリサイズ(4~64Gバイト)、基本サービス利用料金(C1料金の2.5~10.0倍)を示す表。C1の料金は網掛けで表示していない。
表9 バッチ処理の処理行数(未完成)。経費伝票作成、会計データ作成、経費分析表作成の探索対象行数・結果行数・サーバ間通信対象行数の表。会計データ作成はいずれも110,000で、空欄j~nがある。
表9 バッチ処理の処理行数(未完成)。経費伝票作成、会計データ作成、経費分析表作成の探索対象行数・結果行数・サーバ間通信対象行数の表。会計データ作成はいずれも110,000で、空欄j~nがある。
解き方のヒントを見る

前提条件と判断根拠の対応付け

この分野の設問では、一般論として妥当そうな判断よりも、設問内で示された前提条件に照らして筋が通るかどうかが問われやすいです。判断の根拠を問題中の記述に求め、その記述と結論のつながりを一つずつ確かめる姿勢で臨みましょう。

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

確認すべき観点は一つです。解答の手掛かりとして使う記述が、問題中のどの条件や数値に基づくのかを明確にしてください。その条件が変わっても同じ結論になるのか、条件に依存するのかも意識しながら検討してください。

視点

物理設計、性能見積り、移行時の構成検討は、いずれも『与えられた条件のもとでどう判断するか』という性格をもちます。自分の経験や一般的な推奨には頼らず、問題中の記述を根拠として拾いましょう。そのうえで、根拠から結論までの道筋を自分の言葉で説明できるかを確かめることが、この分野を学ぶ際の基本的な進め方です。

確認ポイント

  • 判断に使おうとしている記述が、問題中のどこに書かれているかを具体的に指し示せるか
  • 問題中に書かれていない暗黙の前提を、自分の経験や思い込みで補っていないか
  • 根拠となる記述から結論までの道筋を、第三者に説明できる形で言葉にできるか
正解と解説を見る

解説

精密電子機器メーカA社が経費精算システムをクラウドへスケールアウトする事例です。論理モデルから物理テーブルを定義し、ストレージ容量と性能を数値で見積もったうえで、PaaS型専用サーバの制約(ログイン不可・更新ログの5分周期保存・利用時間課金)を踏まえて、サービスの選定・バッチ設計・運用設計を行う力が問われています。多くの設問は、問題文中の数値や仕様をそのまま積み上げれば解けます。

問題の全体像

A社は、現行の人事管理システムから旅費交通費精算機能を切り離し、新たに開発する一般経費精算機能・仮払金精算機能と合わせて経費精算システムとして稼働させます。その際にクラウドサービスの利用を検討しています。出題趣旨では、①論理データモデルを理解して物理データベース設計を行う能力、②必要なストレージ容量を算出する能力、③性能見積り・評価を行う能力、④クラウドサービスを比較・選定する能力を評価するとしています。設問1はテーブル構造・テーブル定義表・検査制約・データ所要量、設問2はDBサーバのCPU数とI/O時間、設問3は専用サーバのクラス選定、障害回復の限界、バッチ処理のサーバ間通信量、利用料金を下げる運用設計を扱います。採点講評では、問1全体の正答率は低く、特に設問1(2)の索引、設問1(3)、設問2のg・i、設問3(1)②・(3)で誤答が多かったと述べています。

設問1(1)(ア)

〔業務の概要〕2.(3)と3.から、仮払金申請に記録すべき項目を拾い出します。申請時には社員番号・申請理由・仮払金額・精算期限を記載します(2.(3)②)。承認の流れでは、上司が上司承認日を記録し(3.(2)①)、庶務担当者が精査日を記録します。仮払金の申請は精査後そのまま事務センタへ回付されるので、責任者承認日は存在しません(3.(2)②)。さらに、事務センタは未精算額を仮払金残高として記録し(2.(3)③)、支払時には申請に支払実行日を記録します(3.(3)③)。図1にすでにある列を除くと、公式解答例のとおり「精算期限,上司承認日,精査日,仮払金額,仮払金残高,支払実行日」になります。いずれも主キーではないので、下線は付けません。

設問1(1)(イ)

2.(3)④に「一つの仮払いに対する精算が複数の日に分かれることもある。精算時には、精算日ごとに精算金額を記録し」とあります。つまり仮払金精算は、1件の仮払金申請に対して精算日ごとに1行を持つ明細です。そのため、仮払金申請を特定する申請番号と精算日の組で行を一意に識別し、属性として精算金額を持ちます。公式解答例は「申請番号,精算日,精算金額」で、申請番号と精算日に主キーを表す実線の下線を付けています。

設問1(2)

表1の値の範囲・入力の必須性と、表5の格納長の規則を組み合わせて決めます。【外貨金額】値の範囲は0.01~9、999、999、999.99なので、整数部10桁・小数部2桁のDECIMAL(12、2)です。格納長は12÷2+1=7バイトで、指定は任意(NULL可、N)なのでフラグ1バイトを足して8になります。【支払先】全角で最大100字なのでNCHAR VARYING(100)です。立替経費精算では任意なのでNです。平均20文字×2+制御情報4+フラグ1=45。【支払目的】NCHAR VARYING(1000)で必須なのでYです。64文字×2+4=132。【支払予定日】DATEです。支払完了時に記録される列で、申請時点では値がないためNになり、4+1=5。【支払番号】1~99、999はSMALLINTの上限32、767を超えるのでINTEGERで、N、4+1=5。【索引】{支払予定日、 支払番号}は支払伝票を参照する外部キーです。一般経費は申請ごとに支払伝票を作成するので(3.(3)②)、NULLを除けば値の組は一意になります。そこで規則(4)③に従い、非ユニーク索引ではなくユニーク索引(U)を作り、構成列に定義順で1・2を振ります。採点講評では、この「NULLを除くと一意」の理解が不足した誤答が多かったと指摘しています。

設問1(3)

表1から、検査制約(同じ行の列同士の制約)で表すべき条件を探します。申請種別の値は'1'(立替経費精算)か'2'(経費支払依頼)のどちらかです。また支払先は、経費支払依頼では必須、立替経費精算では任意です。この2つを1つの条件式にまとめると、公式解答例の「申請種別 = '1' OR 申請種別 = '2' AND 支払先 IS NOT NULL」になります(ANDはORより先に評価されます)。採点講評では、申請種別の値の制約だけを答えた誤答が散見されたと述べています。区分によって別の列の必須・任意が変わる条件まで書き込むのがポイントです。

設問1(4)(a)

表2で、一般経費申請のページサイズは4、000バイトと示されています。したがって、公式解答例のとおりaは4、000です。表7は表2の見積り値を細かく分けて計算するための表なので、前提となる値は表2から引き継ぎます。

設問1(4)(b)

空き領域率10%なので、1ページで行の格納に使えるのは4、000×0.9=3、600バイトです。平均行長は239バイトなので、3、600÷239=15.06…となります。行がページをまたぐことは考えず、小数点以下は切り捨てます。公式解答例ではbは15です。

設問1(4)(c)

必要データページ数は、見積行数÷1ページ当たりの行数で求めます。1、500、000÷15=100、000ページなので、公式解答例のcは100、000です。割り切れない場合は切り上げますが、ここでは割り切れます。

設問1(4)(d)

データ所要量は、ページ数×ページサイズで求めます。100、000×4、000=400、000、000バイトを百万バイト単位に直すと、公式解答例のとおり400です。表2の他のテーブルも「データページ数×ページサイズ」で計算されていることから確かめられます。

設問2(e)

性能見積りの前提から、1トランザクションは平均50データページにアクセスし、CPUの1ページ当たりの処理時間は0.2ミリ秒です。50×0.2=10ミリ秒なので、公式解答例のeは10です。

設問2(f)

一般経費申請はピーク時に1秒間に200トランザクションです。200×10ミリ秒=2、000ミリ秒=2秒なので、公式解答例のfは2です。1秒間に2秒分のCPU処理が必要なので、CPU1個では足りないことが分かります。

設問2(g)

CPU使用率を80%以下に抑えるには、1個のCPUが1秒間に使える処理時間を0.8秒とみなします。2÷0.8=2.5個となり、個数は切り上げて3個です。公式解答例のgは3です。採点講評ではgの正答率が低かったと指摘しています。使用率の上限で割って切り上げる手順を確実に身につけてください。

設問2(h)

バッファヒット率0%なら、50ページすべてでストレージへのI/Oが発生します。50×20ミリ秒=1、000ミリ秒=1秒となり、DBサーバの要件0.6秒を超えます。公式解答例のhは1です。

設問2(i)

ヒット率60%なら、I/Oが発生するのは40%の20ページで、20×20ミリ秒=0.4秒です。ここにCPU処理時間10ミリ秒(0.01秒)を足すと0.41秒となり、0.6秒以内に収まります。公式解答例のiは0.41です。採点講評ではiの正答率も低く、CPU時間の足し忘れや、ヒット率をそのまま掛けてしまう誤りに注意が必要です。

設問3(1)①(仮想CPU数)

〔クラウドサービスの選定・評価〕では、DBサーバに経費精算システム全体を載せます。そのため、旅費申請・交通費申請の400トランザクション/秒と一般経費申請の200トランザクション/秒を合計した600トランザクション/秒で見積もります。600×10ミリ秒=6秒で、CPU使用率80%で割ると6÷0.8=7.5となり、切り上げて8個です。表8の仮想CPU1個は前提としたCPU1個と同じ性能とされているので、公式解答例の仮想CPU数は8です。

設問3(1)①(クラス名)

条件は、仮想CPU8個以上、メモリ12Gバイト以上、そのうえで必要最低限のクラスであることです。表8を見ると、C3は仮想CPUが4個で不足します。C4(仮想CPU8、メモリ32Gバイト)は両方の条件を満たす最小のクラスです。よって公式解答例はC4です。

設問3(1)②

基本サービスでは、フルバックアップが毎日、更新ログのバックアップストレージへの保存が5分ごとに行われます。復元はフルバックアップと保存済みの更新ログによるロールフォワードで行われるため、最後に更新ログを保存してから障害が起きるまでの間にコミットされた更新は反映できません。公式解答例は「更新ログの保存から障害発生までの間に更新がコミットされた場合」です。35字以内にまとめる際は、「5分周期の更新ログ保存の後」と「障害発生前にコミット」という時間の範囲を必ず入れてください。採点講評では、ロールフォワードによるリカバリの問題点に該当しないケースを書いた解答が散見されたとしています。

設問3(2)①(j)

表4の経費伝票作成は、処理年月が当月の旅費申請・交通費申請・一般経費申請と、それに対応する旅費申請明細・交通費申請明細を参照します。申請データは60か月分が保存され、処理年月に均一に分布するので、表2の行数を60で割ると1か月分が出ます。旅費申請2、500、旅費申請明細25、000、交通費申請3、000、交通費申請明細60、000、一般経費申請25、000で、合計115、500行です。公式解答例のjは115、500です。なお、結果行数110、000は、明細2種と一般経費申請の合計(25、000+60、000+25、000)と一致します。

設問3(2)①(k)

バッチPGMはAPサーバで動くため、対象の110、000行をDBサーバからAPサーバへ読み込み、経費伝票110、000行をAPサーバからDBサーバへ追加します。サーバ間通信対象行数は参照と追加の両方を数えるので、110、000+110、000=220、000です。公式解答例のkは220、000です。

設問3(2)①(l)

経費分析表作成は、経費予算の年月が「当月の12か月前から当月まで」の行を対象とします。両端を含めると13か月分です。経費予算は12、000行÷60か月=200行/月(10事業部×20科目)で、13か月分は2、600行です。対応する経費伝票は6、600、000÷60=110、000行/月で、13か月分は1、430、000行です。合計1、432、600行が公式解答例のlです。公式解答例では、12か月分として数えた1、322、400も可としています。

設問3(2)①(m)

GROUP BYで事業部・科目・年月ごとに集計するので、結果行数は10事業部×20科目×13か月=2、600行です。これは対象となる経費予算の行数とも一致します。公式解答例は2、600で、12か月として数えた2、400も可としています。

設問3(2)①(n)

集計はDBサーバ上のSQL(GROUP BY)で行われるので、APサーバへ転送されるのは集計結果の2、600行だけです。公式解答例は2、600で、12か月として数えた2、400も可としています。探索対象行数が多くても、DB側で集約すれば通信量は小さく抑えられるという点がポイントです。

設問3(2)②(処理名)

表9でサーバ間通信対象行数を比べると、経費伝票作成が220、000行で最大です。経費分析表作成はすでにDB側で集約して2、600行しか転送していません。会計データ作成はファイル出力が必要ですが、専用サーバではファイルシステムにアクセスできないため、DB側だけで処理を完結できません。以上から、公式解答例は経費伝票作成です。

設問3(2)②(対策内容)

経費伝票作成は、DBのテーブルを読んでDBのテーブルへ追加する処理で、ファイル入出力を伴いません。そのため、処理をDBサーバ側で実行すれば、行データをAPサーバとの間でやり取りする必要がなくなります。公式解答例は「バッチPGMと同じ処理を行うストアドプロシジャを作成し、APから呼び出す」です。40字以内では「ストアドプロシジャ化してDB側で処理する」ことと「APサーバからは呼び出すだけ」であることを押さえます。専用サーバではバッチPGMを実行できないという制約とも両立します。

設問3(3)

専用サーバの料金は「データベース利用時間×基本サービス利用料金」で課金されます。また、Webの管理画面のジョブスケジューラで、データベースの起動・停止を指定した日時に実行できます。経費精算システムの運用時間帯は平日8時~23時なので、それ以外の時間はDBを停止しておけば課金時間を大きく減らせます。公式解答例は「データベースを平日の8時に起動し、23時に停止する」です。採点講評では、バッチPGMのジョブスケジュールに着目した誤答が多かったと述べています。課金の対象(DB利用時間)と運用時間帯を結び付けて答えることが大切です。

学習のポイント

データ型の選び方と格納長の計算、NULLを除くと一意になる外部キーへのユニーク索引、ページ数とCPU数の見積り、ロールフォワードで回復できない範囲、ストアドプロシジャによる通信削減、利用時間課金に合わせたDB起動・停止の設定を重点的に学習してください。

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

関連する過去問一覧

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