令和4年午後I問3設問1(1)について

userさん  
(No.1)
TACとアイテックでの解答速報が出ていますが、この解答も納得できる内容になっていないので皆さんの意見を伺いたいです。

TACの設問1(1)の解答
・主キーが単調増加であるため,挿入先のページが常に表領域の最後のページになるから

アイテックの設問1(1)の解答
・1年間削除も再編成も行われず,ページごとにキー値で行が集約されているため

どちらも「"注文明細"テーブルに行を挿入するとき,再編成で予約した空き容量が使われないのはなぜか。」の解答になっていないと考えます。
TACの解答で考えると、主キーが単調増加であったとしても、行挿入時のキーは(1年前再編成してから再編成後の)最後のページに近いキーがあるはずで、このページの予約された空き容量は埋まるはずなので、「再編成で予約した空き容量が使われない」に反すると考えています。
アイテックで考えると、「ページごとにキー値で行が集約されている」としても、やはり行挿入時は上記と同様で最後のページの予約された空き容量は埋まるはずなので、「再編成で予約した空き容量が使われない」に反すると考えています。

実の所上記の考えで「行を挿入するとき,再編成で予約した空き容量が使われない」という状況がどう考えても思い当たらず解答が書けませんでした。
2022.10.13 20:55
GinSanaさん 
DB ゴールドマイスター
(No.2)
この投稿は投稿者により削除されました。(2022.10.13 22:16)
2022.10.13 22:16
GinSanaさん 
DB ゴールドマイスター
(No.3)
予約した領域ってのが、どうも作問者からすると最終-1ページ以前に関するものくさいですね。たしかに、最終ページの空き領域はどうやったって毎回使われる(注文番号がシーケンスだから)ので、空き領域そのものが絶対に使われないか?は否でしょうね。
2.再編成の要否の本文を読む限りでは、最終ページの空き領域が使われることは前提として、最終-1以前のページでの予約がムダだろ、の理由を聞かれていると解釈しろ、と読めます。

アイテックのは、「ページごとにキー値で行が集約されている」がよくわからない。集約されているからなんだ(だからどうした)?がないので、わからない。
注文番号のシーケンス性とINSERTのRDBMSの仕様から素直に導けば、TACが素直ですが、アイテックのはシーケンス性につながる理由が読み取れない。そういう意味で、アイテックのはあんまりいい解答とは言えないと思う。
2022.10.13 22:16
にゃんちゃんさん 
DB シルバーマイスター
(No.4)
問題文から何聞かれてるか理解できませんでしたが、やっとこさ理解しました。
「挿入行のキー値に近い行が格納されているページの空き領域に格納されるから」
という、ちょっと何言ってるの君?みたいな回答をしました。

要するに
各ページには予約した空き領域(デフォルト30%)があるよ。
注文明細の主キーは単調増加だから、並び順通りにINSERTしようとすると
必ず最終ページにINSERTされるよ。
予約した空き領域は使われないよ。
ってことですね。問題用紙1ページ目でそれは何となくイメージできてたのに・・・。

「"予約した空き領域"・・・??
空き領域は各ページに30%ずつあるけど、どれの話・・・??」と混乱しちゃいました。
設問1で記述まるごと2問落としたの痛すぎるな~~
2022.10.13 22:36
gawaさん 
(No.5)
(1)
再編成で合計Nページになったとして、本当の最初の行追加分はN番目の空き領域に入ります。N番目のページが満杯になったら、N+1ページ目が新しく作成され、そこに行が追加されていき、満杯になったらN+2ページ目が新しく作成され・・・のように、以降この繰り返しです。N+1ページ目以降は、予約した空き領域とは言わないので、マクロでみると”予約した空き領域は使われない”と言えるのでしょうね。
もしRDBMSの仕様を「キー値の近いものを探していっぱいだったときに、次に近いキー値のページを探しに行って空き領域にに格納する」のように解釈してしまうと、なんで空き領域使われないんだ??と混乱して正解にたどり着けなくなってしまいます。

(2)
某社さんの解答ですと「全ページに空き領域30%が追加され~」となっていますが、正確には過去1年間で追加されたページに対して+30%されるイメージです。RDBMSの仕様が変わってない限り、1年前に再編成してるような記述になってるので、1年前以前のデータは既に空き領域30%が無駄に確保されてる状態。1年前から現在までは、各ページが満杯の状態。なので再編成すると、1年分のデータが+30%の使われない空き領域が無駄に作られて、ストレージがひっ迫しますよね?というのが、設問の意図と思われます。
2022.10.14 11:39
userさん  
(No.6)
皆さん意見をありがとうございました。

この設問の内容について、実務だった場合と問題文だった場合を比較したいと思います。
仮に実務で担当者から「考えられる原因は何か?」と聞かれた場合、まずは「RDBMSのバグか障害で、再編成で予約された領域が使用されなかった。」という事を疑います。RDBMSの使用通りならキーがシーケンシャルであれランダムであれ、最低1つのページの予約された空き容量は埋まるはずで、予約された空き容量が使われないというのは考えられないからです。その上で担当者に「本当に予約された空き容量が使われていないのか、実は1ページは使われていて見落とししていないか?」と質問をすると思います。
担当者から、実は1ページ使われていましたと返答があれば追加時のキーの生成のされ方が問題とはっきりし、やはり予約された空き領域は使われていなかったと返答があればその他の原因を考えることになります。
上記のように、実務であれば発生事象の「正確さ」はそこまで問題になりません。

一方、問題文だったらどうでしょうか。問題文に曖昧さがあっても質問はできませんし、文意通りに解釈してくださいと注意書きまであります。また、情報処理技術者試験で回答を書く際は通常「問題文に書かれていない条件を勝手に足して考える」はご法度のはずなので、「実は1ページは使われているかもしれない」という考え方は本来してはいけない考え方のはずです。

現時点ではまだIPAの公式解答が出ていないのでこれ以上話を進める事はできませんが、12月にIPAの公式解答が出たらこの件についてまた考えたいと思います。
2022.10.15 10:48
gawaさん 
(No.7)
仰る通りで、問題文で解釈の曖昧さはあってはならないですよね。公式の解答が出てないので、なかなか議論が煮詰まりませんが、私は以下のようなロジックで考えております。単純に、自分の解答がこうだったから、というバイアスが入った自己弁護的な説明なので、全くフェアではないのですが・・・

・「空き領域が使われない」という事実が設問のベースになっているので、この前提を疑っても、仕方がない。「RDBMSの仕様と挿入される行の順番を~」とわざわざ書いてあるので、もっともらしい妥当な理由を探すしかない。

・半分屁理屈になるが、「キー値が最も近い」の解釈次第。複合主キーなので、注文番号が同じなら「近い」とみなしそのページに格納。注文番号が違えば、「近くない」とみなされ、強制的に新しいページが作られそこに格納。。。という仕様かもしれない。そうなると、新しい注文が発生したら、注文番号が異なるから、後者になる。つまり既存のページは一切使われず、「予約した空き領域が使われない」の条件に一致する。

以上から、「挿入される行は既存の行の主キー値の並びの最後にくるから」的なニュアンスで解答しておけば、よいのではないかと思います。(最後のページに~などは、あえて書かなくていいと思います。最後のページに格納されるかは、与えられた仕様からは、それこそ不明なので)
2022.10.19 11:32
userさん  
(No.8)
令和4年午後I問3設問1(1)のIPAの回答が出ました
・主キーが単調に増加する番号なので過去の注文番号の近くに行を挿入しないから
・主キーの昇順に行を挿入するとき,表領域の最後のページに格納を続けるから
やはり「再構成直後の、表領域の最後のページにある予約した空き容量」を使っている前提の回答になっており、厳密な解答ではないと感じました。

ただ、私の午後Ⅰ得点はこの問題の回答が書けなかった割に73点と高めになっているため、明言はされていませんが「厳密な解答が出ない問題は評価対象にしない(一律正解扱い)」となっているような感じがしました。

私は午後Ⅰ得点が合格点で、問題不備の可能性を抗議する必要性が無くなってしまいましたので、もし問3を選択して午後Ⅰ得点が不合格の方がいらっしゃった場合は、(必要であれば)各自で抗議をお願いします。
2022.12.23 00:22

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。

その他のスレッド


Pagetop