DB勉強会レポート_2019年02月22日(金)実施分

こんにちは。 今回で午後Ⅱの問1は最後になります。 記事の分量で言えば3本、勉強会回数で言えば4週に渡りじっくりと取り組んできました。 その分、内容の濃い解説記事になると思いますので、問題集の解説で腑に落ちない場合は是非ともご覧下さい。 解説範囲 平成30年度 春期 データベーススペシャリスト試験 午後Ⅱ 問1 設問3 (2) (3) ⚓ (2) バッチ処理の性能について, ①, ②に答えよ。 ここでは表9の空欄が解答の対象となっています。 p.18の「2. サービスの評価 (1) 性能」の②を読むと、解答の根拠となる情報の在処が記述されています。 [業務の概要]及び表2を基に, (中略) バッチ処理の処理行数を表9にまとめた上で, 対策を検討することにした。 また、バッチPGMの詳細を把握するために、上記に加え、p.11の「表3 主な処理のCRUD」と「表4 バッチPGMの処理内容」を参照する必要があります。 ① 表9中のj ~ nに入れる適切な数値を答えよ。 p.10の「表2 主なテーブルの見積行数・データ所要量」に目を転じて下さい。 解答の対象となる空欄は行数を入れますので、参照すべきは「テーブル名」と「見積行数」の列になります。 次に、表4を見て下さい。 表中のキーワードを抜粋すると、以下のようになります。 * すでに空所補充済みの「会計データ」は省略します。 処理名 対象処理年月 対象行 経費伝票作成 当月 旅費申請に対応する“旅費申請明細”テーブルの行交通費申請に対応する“交通費申請明細”テーブルの行“一般経費申請”テーブルの行 経費分析表作成 当月の12か月前から当月まで 経費伝票に対応する“経費予算”テーブルの行 まずはjから計算していきましょう。 対象行は、処理年月が「当月」に一致する行ですが、表2の情報はどのくらいの期間の見積行数なのでしょうか? p.8「(1) 現行システムの概要」の③をご覧下さい。 経費予算, 申請に関する情報, 及び申請から派生する伝票などの情報は, 経費予算の年月又は申請の処理年月が60か月前から現在までのデータが全て保存されている。 以上より、表2は60か月分の見積行数だと分かります。 当月分は1か月なので、見積行数を60で除算すれば良いわけです。 対象行に注意して下さい。 “旅費申請明細”テーブルと交通費申請明細”テーブルは、それぞれ「旅費申請」と「交通費申請」に対応する行が対象です。 つまり、「旅費申請」と「交通費申請」を表探索して処理年月が当月の行を抽出します。 そして、それぞれ申請番号が一致する”旅費申請明細”テーブルと”交通費申請明細”テーブルの行、また”一般経費申請”テーブルの行をバッチPGM中に読み込む、という流れです。 すなわち、当月分の見積もり行数で「旅費申請 + 旅費申請明細 + 交通費申請 + 交通費申請明細 + 一般経費申請」を計算すれば良いわけです。 実際の見積行数に置き換えると、「(150,000 + 1,500,000 + 180,000 + 3,600,000 + 1,500,000) ÷ 60」となります。 よって、jには115,500行が入ります。 次にkです。 求める「サーバー間通信対象見積行数」について、p.18「2. サービスの評価 (1) ②」の最後の項目の説明を確認しておきましょう。 サーバー間通信対象見積行数は, 処理ごとに, 行の参照, 追加のためにDBサーバとAPサーバ間で転送される行数とする。 表3の経費伝票作成の行を確認すると、以下の情報を読み取れます。 テーブル名 CRUD 旅費申請旅費申請明細 R 交通費申請交通費申請明細 R 一般経費申請 R 経費伝票 C 経費伝票作成のサーバー間通信は以下のようなイメージになります。 「サーバー間通信対象見積行数」は、このRとCの行数の合計で求めることが出来ます。 参照・追加の対象となるのはいずれも”旅費申請明細”テーブルと”交通費申請明細”テーブル及び”一般経費申請”テーブルの行ですので、「(1,500,000 + 3,600,000 + 1,500,000) × 2」で求めることが出来ます。 よって、kには220,000が入ります。 jの115,500行を2倍した方がいらっしゃるかも知れませんが、旅費申請と交通費申請のテーブルが探索されるのはあくまでそれぞれ申請番号が一致する明細テーブルの当月の行を抽出する時です。 サーバ間の通信はあくまで結果行数の110,000行のみが対象となります。 次にlです。 対象処理年月は「当月の12か月前から当月まで」ですが、数え方によって12か月もしくは13か月と揺れが生じますもで、この問は除算する数によって2通りの解答があります。 表2は60か月分の見積行数ですので、12か月分の場合の行数は「60 ÷ 12 = 5」、つまり見積行数を5で除算すると求めることが出来ます。 もしくは、13か月分の場合の行数は「60 ÷ 13 = 4.615384615384615」、つまり見積行数を4.615384615384615で除算すると求めることが出来ます。 あとは、jと同じ発想です。 よって、lには以下の2通りの解答が入ります。 「(12,000 + 6,600,000) ÷ 5」で計算した場合: 1,322,400 「(12,000 + 6,600,000) ÷ 4.615384615384615」で計算した場合: 1,432,600 次にmです。 結果行数は、p.11の表4を見ると以下の通り求めることが分かります。 “経費予算”テーブルの行ごとに, 対応する”経費伝票”テーブルの金額を, GROUP BY句を用いて事業部, 科目, 年月ごとに集計して実績金額を求め, 予算金額との対比表をファイルに出力する。 集計は以下のようなイメージです。 事業部 科目 年月 事業部01 科目01 201801 事業部01 科目01 201802 ・・・ ・・・ ・・・ 事業部01 科目20 201801 事業部01 科目20 201802 ・・・ ・・・ ・・・ 事業部10 科目01 201801 事業部10 科目02 201802 … Continue reading DB勉強会レポート_2019年02月22日(金)実施分