解答です。
設問1
6,8
設問2
[a]:0.4 [b]:2.9
設問3
[c]: x [d]:(1-x) [e]:0.8
解説してみた。
設問1
キャッシュファイルの容量が10Mバイト、レコード1つのサイズが2Mバイトなので、キャッシュファイルにはレコードが5つ分入ります。
検索番号順に処理を行った場合、キャッシュファイルの中身は次のように推移します。なお、参照時刻は右が最新で、左に行くほど古くなります。
検索番号1読み込み :701
検索番号2読み込み :701,702
検索番号3読み込み :701,702,703
検索番号4読み込み :701,702,703,800
検索番号5読み込み :701,702,703,800,778
検索番号6読み込み :701,703,800,778,702*
検索番号7読み込み :703,800,778,702,714
検索番号8読み込み :800,778,702,714,703*
検索番号9読み込み :778,702,714,703,701
検索番号10読み込み:702,714,703,701,712
*がついているレコードは、キャッシュファイルから読み込まれたものになります。検索番号6の702と検索番号8の703のレコードはキャッシュファイルに存在するレコードを再度読み込んでいます。よって、解答は6と8になります。
設問2
図1の検索システムの処理は、
項番1.7(無視)→項番2(2.5秒)→項番1.8(0.1)秒
になり、所要時間は2.6秒になります。
図2の検索システムでキャッシュファイルが満杯になっているいる場合、
・キャッシュファイルに該当レコードがある場合の処理は、
項番1.2(0.1秒)→項番1.3(0.1秒)→項番1.5(0.1秒)→項番1.8(0.1秒)
となり、所要時間は0.4秒になります。よって、[a]には「0.4」が入ります。
・キャッシュファイルに該当レコードが無い場合の処理は、
1.2(0.1秒)→項番1.7(無視)→項番2(2.5秒)→項番1.6(0.1秒)→項番1.4(0.1秒)→項番1.8(0.1秒)
となり、所要時間は2.9秒になります。よって、[b]には「2.9」が入ります。
設問3
本文によると、下位9,900件にあるレコードの参照の場合は、必ずDBサーバに問い合わせをしてレコードを読み込むため、処理に要する時間は2.9秒。
上位100件にあるレコードが参照される場合、キャッシュファイル中に目的のレコードがある場合はキャッシュファイル中のファイルを参照し、そうでない場合はDBに問合せをしてレコードを読み込みます。
キャッシュファイル中に目的のレコードがある確率をxとした場合、上位の100件にあるレコードを参照する処理の所要時間は、次の式で表されます。
0.4×x+2.9×(1-x)
下位9,900件にあるレコードが参照される確率が20%、上位100件にあるレコードが参照される確率が80%なので、処理の所要時間の式は次のようになります。
0.8×(0.4×x+2.9×(1-x))+0.2×2.9
検索システム2の平均応答時間を、検索システム1の平均応答時間(2.6秒)の1/2倍となるxを求める式は 、
2.6/2=0.8×(0.4×x+2.9×(1-x))+0.2×2.9
になります。よって、[c]には「x」、[d]には「(1-x)」が入ります。
この式を整理してxを求めると、x=0.8になります。よって、[e]には「0.8」が入ります。
xが0.8なので、上位100件中80件のレコードがキャッシュファイルに格納される必要があります。レコード1つの容量が2Mバイトなので、必要なキャッシュファイルの容量は160Mバイトになります。よって、[f]には160が入ります。
IPAの公式解答
平成16年春ソフトウェア開発技術者午後1 IPA公式解答(PDFファイル)
今回は選択式は無く、空欄に数値や式を記入して解答する形式でした。それにしても、設問3のレコードがキャッシュに存在する確率を求める計算がきつかった。システムアーキテクチャー(情報システム構成)分野は、面倒な計算問題がかなりの頻度で出現するようです。