中小企業診断士 経営情報システム 平成29年度 H29 第9問 データベース 過去問解説
中小企業診断士合格ノート1次試験7科目販売中!(全7科目6割以上得点し科目合格した際に作成したサブノートです)
ブログサイト note で販売しています。
squaresco.biz.contact@gmail.comにご連絡いただければ直接販売も可能です。
最近の記事一覧
人気の記事:
中小企業診断士合格ノートの紹介
中小企業診断士 試験概要 科目合格について
「経済」合格ノート無料公開 まとめ|証券アナリスト&中小企業診断士 共通
証券アナリストは中古のテキストで試験対策可能!?
以下、本文です。
第9問
業務処理のためには、多くの場合、データベース (DB) が利用される。DB をネットワーク環境下で利用する場合、さまざまな端末からトランザクション処理要求 を受け付けるため、多くの負荷が集中することもある。このような状態の中での DB の効率的な運用や障害対策などのための仕組みが用意されている。
そのような仕組みに関する記述として、最も適切なものはどれか。
ア DB 運用中に表のデータ項目の追加・削除や新たな表追加が必要となり、DB の論理構造の再構築を行う場合は、SQL 文の REBUILD 命令において必要なパ ラメータを指示して実行する。
イ DB の更新処理を行う場合は、ロックと呼ばれる排他制御が行われる。このロ ックをかける範囲をロック粒度と呼び、ロック粒度が大きいと排他制御のための 処理のオーバヘッドが大きくなる。
ウ DB の障害回復には、バックアップファイルを利用するロールフォワードとデ ータ更新状況を記録したものを利用するロールバックの仕組みがある。
エ クライアント端末から Web サーバを経由して DB サーバに対して更新作業を 行う際、まず DB サーバに対して更新作業が可能かどうかを問い合わせることを 2相のコミットメントと呼ぶ。
解説
トランザクション処理とは、1つの指示に対するシステムの動作の1かたまりの処理を言います。
ATMの具体例で説明します。
客がATMの操作で「10,000円を出金」という指示を出します。ATM内のシステムはその指示に対して、
①客の口座データから10,000を減らす
②客に現金10,000円を払い出す
という2つの動作を行います。
①と②を合わせて1つのトランザクションと呼び、①と②はどちらが欠けてもこのトランザクションは成立しません。
システムが①だけをやってしまうと客は損だし、②だけをやると銀行が損するので、②の途中で障害が発生した場合は①も取り消され、必ず①と②のかたまりで処理されるものをトランザクション処理と言います。
ア
表のデータ項目の追加・削除や新たな表の追加を行う場合は、ALTER TABLEを用いるので×。
↓画像にはTABLEと付いていませんが、ALTER=ALTER TABLE、CREATE=CREATE TABLEです。テーブルとはデータベースの管理で用いられる表のことです。解説イの表がテーブルの具体例です。
イ
ロックとは
1つのトランザクションがレコードを他のトランザクションに変更されないようにロックすることを言います。
レコードとは、データベースの表の行(=横)のことで、ATMの例でいうと、客の名前や残高などのデータのことです。一般的なデータベース(=リレーショナルデータベース型)は以下のような行(=横の項目=レコード)と列(=縦の項目=フィールド=カラム)の表で管理されています。↓の表がTABLE(=テーブル)です。
顧客番号 | 住所 | 電話番号 | 氏名 | 口座残高 |
12345 | 東京都 | 080-xxx | スクエアズコー | ¥1,000,000 |
54321 | 千葉県 | 090-xxx | パンダ商店 | ¥2,000,000 |
ATMの例では、
1つのトランザクションがそのレコードの残高を変更するために、レコードをロックします。もう1つのトランザクションはそのレコードを変更したくても変更できない状態がロックです。
デッドロックとは、(またATMの例で説明します。)
・トランザクション①が客aの口座から客bの口座に5,000円振込みたいとします。
・トランザクション②は反対に客bから客aの口座に3,000円振込みたいとします。
・2つのトランザクションが同時に行われると、デッドロックが発生します。
・トランザクション①は客aの口座から5,000円減らし、客bの口座を5,000円増やすためにまず客aのレコードをロックします。
・同時にトランザクション②は客bの口座から3,000円減らし、客aの口座を3,000円増やすためにまず客bのレコードをロックします。
・トランザクション①は客bの口座を増やしたいのにロックが掛かっていて変更できません。同様にトランザクション②は客aの口座を増やしたいのにロックが掛かっていて変更できません。
・2つのトランザクションが、互いに相手の所有するロックが解除されるのを待機して処理が進まなくなる状態をデッドロックと言います。デッドロックは、必ずしもトランザクションが関係しなくても、複数の処理が同時に実行されている状態では発生する可能性があります。ただし、トランザクションがあるとロックの期間が長くなりがちなため、発生しやすいと言えます。
・いったんデッドロックに陥ったトランザクションは永久に待ち状態になってしまい、外部からの介入なしには抜け出すことができません。
ロック粒度が大きい(=粗い)とは、ロックするデータの一つ一つが大きく、数が少ないということです。
オーバーヘッドとは、ロックを行うためのメモリ領域やCPU負担など、データ更新という本来の目的ではない、必要だけど余計な処理のことです。オーバーヘッドは違う問題でも出る単語なので覚えてください。
よって、ロック粒度が大きい方がロック数が少なくなり、オーバーヘッドは小さくなるので×。
だいぶ長くなりましたね(^^;;
ウ システムの障害時に、データベースの状態を矛盾のない最新の状態に復帰させる手段として、ロールフォワードとロールバックがあります。
ロールフォワードとは、
ハードウェアの障害(ハードディスクそのものの破損など)が起きた時にデータベースを前回のバックアップ時点の状態に復旧してから、ログファイルの更新後情報を用いて、障害発生前に完了したトランザクションによって更新された分を更新します。
ログファイルとは、
データベースシステムが実行した更新履歴を記録するファイルです。
・例えば、Dドライブの写真を編集している最中に、Dドライブが故障し全データが消えてしまったとします。
・直近のDドライブのバックアップと写真編集の途中までのログファイルがFドライブに保存されている場合、Dドライブを交換すれば、バックアップから更新前の状態に戻し、ログファイルによって写真編集の途中の状態まで戻す手段がロールフォワードです。
・余談ですが、ログファイルもDドライブに保存されていたらそれも消えてしまうので、別の媒体(Fドライブ等)に保存する必要があります。
ロールバックとは、
障害の発生(プログラムの異常終了など)時点で処理中だったトランザクションによる更新を、ログファイルの更新前情報を使って取り消し、データベースを処理前の状態に戻します。
写真編集の例だと、今回はハードディスクが壊れたわけではないので、「写真編集をする前の写真データまで戻すだけ」の作業をするのがロールバックです。
選択肢はごく端的に説明していますが正しい記述です。
エ
2相のコミットメントとは、
分散データベースで、複数のデータベースを同時に更新する場合に、一方のデータベースに障害が発生してもデータベース間の整合性を保つための制御方法だそうです。
聞いたことが無いので×で良いでしょう。テキストにも載っていません。
解答
ウ
間違っていました。正直、選択肢ア・イ・エについては聞いたことがなかったので×にすれば良かったのですが、ウの記述が簡単すぎてひっかけだと勘ぐってしまい、前半の記述は正しいイを選んでしましました。
ロールバックとロールフォワードについての知識があいまいだったことが原因ですね。この記事を書いていてしっかり理解することが出来ました。
記事中の画像は試験勉強の際に作成した自作ノートの関連する部分です。
中小企業診断士合格ノートのサンプルはnote
証券アナリスト合格ノートのサンプルはnote(1次試験)、 note(2次試験)
で無料でダウンロードできますので、是非ご確認ください。
分からない単語は、メニューの検索に入力することで過去記事から全文検索ができます。
最後まで読んでいただきましてありがとうございました。
「Squares&Co.」「スクエアズコー」「パンダ商店」