問26:前問の「ビュー(View)」に関する記述のうち、データベースシステム上の高度な運用ルールとして、最も適切なものはどれか。
- A:ビューは仮想的な表であるため、ビューに対して「INSERT(挿入)」や「UPDATE(更新)」を行うことは、どのような構造であっても一律で文法エラーとなる。
- B:ビューの定義元のテーブル(基底テーブル)を削除しても、作成されたビューは内部でデータを独立して保持し続けるため、そのまま正常に使用可能である。
- C:ビューを1つ定義するたびに、元のテーブルと全く同じ容量のデータがストレージ上に複製されるため、大量にビューを作るとハードディスクが圧迫される。
- D:2つのテーブルを結合(JOIN)しているビューや、GROUP BYによる集計(SUMなど)を含んでいるビューに対しては、原則としてデータの追加や更新操作を行うことはできない。
- E:ビューは検索速度を10倍以上高速化するための「物理的な索引」であるため、すべての検索においてテーブルを直接叩くより必ず処理が速くなる。
【第26問:正解と解説】
正解:D
【解説】
・A:不適切:1つのテーブルの一部の行・列を切り出しただけのシンプルなビューであれば、ビューを介して元テーブルのデータを直接挿入・更新することが可能です。
・B:不適切:ビューは元テーブル(基底テーブル)のデータを参照するだけであり、データを独立して保持しません。基底テーブルが削除されると、そのビューはエラーとなり使用できなくなります。
・C:不適切:ビューは実データを持たない仮想表(SELECT文の定義のみ)であるため、ビューを定義してもストレージ上に元テーブルと同じ容量のデータが複製されることはありません。
・D:適切:ビューを介した更新(Updatable View)の制限に関する正しい記述です。複数のテーブルをJOINして作られたビューや、GROUP BYやSUMで「集計・要約」されて1行にまとめられたビューに対して値を書き換えようとしても、RDBMSは「元テーブルのどの行のどの値を書き換えればよいか」を一意に特定できないため、更新操作は拒否されます。
・E:不適切:ビューはデータを物理的に保持しないため、索引としてのインデックスを持つわけではありません。ビューを通じた検索は、内部的には元テーブルへのSQL実行に変換されるため、必ずしも直接テーブルより速いとは限りません。
問27:データベースのバックアップと障害回復(リカバリ)に関する記述として、最も適切なものはどれか。
- A:フルバックアップ(完全バックアップ)さえ毎日取得していれば、バックアップを取得した時刻から障害が発生した時刻までの間に更新されたデータも、ログなしで100%自動復旧される。
- B:ロールバックとは、トランザクションの失敗時にログを用いてデータを「障害発生の数日前の状態」にまでシステム全体を一括で巻き戻す長期的な災害対策操作である。
- C:ハードディスクの物理的破損によってデータベースが動作不能になった場合、直近のフルバックアップデータを復元した後、ログファイル(ジャーナル)を順方向に適用する「ロールフォワード」を行うことで、障害直前のコミット済みの状態までデータを復旧できる。
- D:データベースの「ログ(ジャーナル)」には、データの検索(SELECT)を行った履歴のみが暗号化されて記録されており、データの書き換え(INSERTやUPDATE)の履歴は一切記録されない。
- E:チェックポイントと呼ばれる同期処理が実行されている最中は、データベースへのすべてのアクセス(検索含む)が完全にロックされ遮断されるため、日中の運用は避けるべきである。
【第27問:正解と解説】
正解:C
【解説】
・A:不適切:フルバックアップを取得した後に発生した更新データの復旧には、ログファイル(ジャーナル)を使ったロールフォワードが不可欠です。バックアップのみでは取得後の変更内容を復元できません。
・B:不適切:ロールバックは、トランザクション単位(通常は数秒から数分の処理範囲)の変更を取り消す操作です。「数日前の状態にシステム全体を巻き戻す」という長期的な操作ではなく、障害発生時の全体復旧にはロールフォワードを含むリカバリ手順が必要です。
・C:適切:メディア障害(ディスク破損など)に対するデータ復旧(リカバリ)の正しい手順です。「フルバックアップの適用」+「ログファイルによるロールフォワード(前進復帰)」を組み合わせることで、ディスクが壊れても、壊れる直前にコミットが完了していたデータまで寸分違わず復元することが可能になります。
・D:不適切:ログ(ジャーナル)には、INSERTやUPDATE、DELETEといったデータ変更操作の前後の値(before image / after image)が記録されます。SELECTのみというのは誤りです。
・E:不適切:現代のRDBMSにおけるチェックポイント処理は、バックグラウンドで非同期に実行できるよう設計されており、通常はすべてのアクセスを完全にロックすることはありません。
問28:SQLにおいて、集計関数を使いつつも、データをグループ単位に1行に「縮約(集約)」させることなく、各行のデータを残したままで「現在の行の周辺範囲」や「グループ内での順位・累計金額」を計算できる高度な機能(WINDOW関数/分析関数)のキーワードとして、最も適切なものはどれか。
- A:GROUP BY
- B:PIVOT
- C:HAVING
- D:CONNECT BY
- E:OVER句
【第28問:正解と解説】
正解:E
【解説】
・A:不適切:GROUP BYは、データを完全にグループ化して行数を縮約(1行にまとめてしまう)する句です。
・B:不適切:PIVOTはSQLServerやOracleで行を列に変換するための構文であり、WINDOW関数を使うためのキーワードではありません。
・C:不適切:HAVING句はGROUP BYによる集計後のグループに対して条件を絞り込む句であり、WINDOW関数を有効にするキーワードではありません。
・D:不適切:CONNECT BYはOracleの固有構文であり、再帰的な階層データ(ツリー構造)をたどるための句です。WINDOW関数とは関係ありません。
・E:適切:WINDOW関数(分析関数)を使用する際は、集計関数や順位関数(RANK()など)の直後に「OVER句」を記述します(例:SUM(金額) OVER (PARTITION BY 地区))。これにより、行を縮約することなく、「各行の横に、その地区の合計金額の列を並べる」といった高度なデータ分析・クロス抽出が1つのSQLで行えるようになります。
問29:データベースにおいて、長期間の運用によりデータの追加・削除が繰り返されることで、インデックスの木構造の並びが不連続になり、ストレージ上の領域に無駄な空き(虫食い状態)ができて検索・更新パフォーマンスが低下する現象を指す用語として、最も適切なものはどれか。
- A:インダクション
- B:フラグメンテーション(断片化)
- C:デッドロック
- D:キャパシティプランニング
- E:正規化くずれ
【第29問:正解と解説】
正解:B
【解説】
・A:不適切:インダクションは誘導や導入といった一般的な言葉であり、データベースの劣化現象の名前ではありません。
・B:適切:フラグメンテーション(断片化)の説明です。データやインデックスの領域がバラバラに分断・虫食い状態になることで、ディスクの読み込み効率(I/O効率)が低下します。対策として、定期的にインデックスの「再構築(Rebuild)」やテーブルの最適化を行う必要があります。
・C:不適切:デッドロックは複数のトランザクションが互いのロック解除を永久に待ち続ける膠着状態であり、ストレージの断片化とは全く異なる概念です。
・D:不適切:キャパシティプランニングは、将来の需要増加に備えてシステムリソース(CPU・メモリ・ストレージ等)の容量を計画・見積もる活動であり、データ断片化の現象を指す用語ではありません。
・E:不適切:正規化くずれは、正規化されたテーブル設計が運用の中で維持されなくなることを指す一般的な概念です。ストレージ上のインデックス断片化とは異なります。
問30:近年のビックデータ処理やWebシステムで多用される「NoSQL」データベースに関する記述として、中小企業診断士のITトレンドの理解として最も適切なものはどれか。
- A:NoSQLは「SQLを一切使用しない(No SQL)」という意味であり、関係データベース(RDB)よりも厳格なACID特性と第5正規化を保証する次世代型の超高信頼性システムである。
- B:関係データベースのような固定された2次元の表構造(スキーマ)を持たず、データの追加や構造変更が柔軟であり、Key-Value型やドキュメント型などの構造を持ち、大量データの分散・横方向への拡張(スケールアウト)に優れている。
- C:NoSQLは完全にオープンソースの無料個人向け製品しか存在しないため、企業の基幹システムや商用のエンタープライズ環境に導入された実績は世界的に1件もない。
- D:NoSQLデータベースにデータを保存する際は、必ずすべての文字列データを事前に2進数のバイナリコードに手動で変換してから挿入しなければならないという文法上の制約がある。
- E:NoSQLはハードディスク(ストレージ)を一切使用せず、すべてのデータをCPUのキャッシュメモリ上だけで処理・保持するため、電源を切るとデータが完全に消滅する。
【第30問:正解と解説】
正解:B
【解説】
・A:不適切:NoSQLは「Not Only SQL(SQLだけでない、RDBだけでない)」という解釈が一般的です。また、RDBのような厳格なACID特性(一貫性など)をあえて緩める(BASE特性にする)ことで、超高速性とスケーラビリティを実現しているため、ACIDや正規化の強化という説明は誤りです。
・B:適切:NoSQLデータベースの核心的な特徴です。固定スキーマを持たないため(スキーマレス)、急な項目追加にも強く、サーバーを横に並べて並列処理させる分散拡張(スケールアウト)が非常に容易であるため、大量のアクセスがあるWebサービス等で多用されます。
・C:不適切:MongoDBやCassandra、Redis、Google BigTableなど、多くのNoSQL製品はエンタープライズ向けの商用サービスや有償サポートを提供しており、大企業の基幹システムでの採用実績も多数あります。
・D:不適切:NoSQLデータベースはJSONやバイナリ形式、Key-Valueなど様々なデータ形式を直接扱うことができます。データを手動で2進数に変換して挿入する必要はありません。
・E:不適切:これはインメモリデータベース(RedisやMemcachedなど)の揮発性モードに近い説明ですが、すべてのNoSQLがそうであるという記述は誤りです。多くのNoSQLは永続化(ディスクへの書き込み)も行います。

コメント