DBデータベーススペシャリスト試験 午後Ⅱ
平成30年度春期 データベーススペシャリスト 午後Ⅱ 問1
事例を読んで設問の答えを考えてから、解説のポイントとIPA公式の解答例・採点講評で確認しましょう。
問題










解き方のヒントを見る
前提条件と判断根拠の対応付け
この分野の設問では、一般論として妥当そうな判断よりも、設問内で示された前提条件に照らして筋が通るかどうかが問われやすいです。判断の根拠を問題中の記述に求め、その記述と結論のつながりを一つずつ確かめる姿勢で臨みましょう。
この問題で問われていること
確認すべき観点は一つです。解答の手掛かりとして使う記述が、問題中のどの条件や数値に基づくのかを明確にしてください。その条件が変わっても同じ結論になるのか、条件に依存するのかも意識しながら検討してください。
視点
物理設計、性能見積り、移行時の構成検討は、いずれも『与えられた条件のもとでどう判断するか』という性格をもちます。自分の経験や一般的な推奨には頼らず、問題中の記述を根拠として拾いましょう。そのうえで、根拠から結論までの道筋を自分の言葉で説明できるかを確かめることが、この分野を学ぶ際の基本的な進め方です。
確認ポイント
- 判断に使おうとしている記述が、問題中のどこに書かれているかを具体的に指し示せるか
- 問題中に書かれていない暗黙の前提を、自分の経験や思い込みで補っていないか
- 根拠となる記述から結論までの道筋を、第三者に説明できる形で言葉にできるか
正解と解説を見る
解説
精密電子機器メーカ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による補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針