合格基準
8問中7問正解(80%以上)で合格
Q1: マイグレーションの目的
スキーママイグレーションの主な目的として最も適切なものはどれか?
- A) データベースのパフォーマンスを向上させる
- B) スキーマ変更を再現可能で安全な手順で管理する
- C) データベースのバックアップを自動化する
- D) アプリケーションのバグを修正する
回答と解説
正解: B
マイグレーションの主目的は、データベーススキーマの変更をバージョン管理し、再現可能で安全な手順で管理すること。Up/Down の定義により、適用とロールバックが手順化される。
Q2: Expand-Contract パターン
Expand-Contract パターンの正しい順序はどれか?
- A) 旧構造削除 → データ移行 → 新構造追加
- B) 新構造追加 → データ移行・アプリ切替 → 旧構造削除
- C) データ移行 → 新構造追加 → 旧構造削除
- D) アプリ切替 → 新構造追加 → データ移行
回答と解説
正解: B
Expand-Contract パターンは、1) Expand(新構造を追加、旧構造はそのまま)、2) Migrate(データを新構造に移行、アプリを新構造に切り替え)、3) Contract(旧構造を削除)の3段階で安全にスキーマ変更を行う。
Q3: ゼロダウンタイムのインデックス作成
PostgreSQLでサービスを止めずにインデックスを作成する方法はどれか?
- A)
CREATE INDEX idx ON table(column) - B)
CREATE INDEX CONCURRENTLY idx ON table(column) - C)
CREATE INDEX FAST idx ON table(column) - D)
CREATE INDEX ASYNC idx ON table(column)
回答と解説
正解: B
CREATE INDEX CONCURRENTLY は、テーブルへの書き込みをブロックせずにインデックスを作成する。通常の CREATE INDEX はテーブルロックを取得するため、大テーブルでは長時間のサービス停止を引き起こす。
Q4: RPOとRTO
RPO(Recovery Point Objective)が1時間の場合、何を意味するか?
- A) システムの復旧に1時間以内を目標とする
- B) 最大1時間分のデータ損失を許容する
- C) バックアップを1時間ごとに取得する
- D) メンテナンスウィンドウが1時間である
回答と解説
正解: B
RPO(Recovery Point Objective)は「許容できるデータ損失の最大時間」。RPO 1時間なら、障害発生時に最大1時間前のデータまで復旧できれば良いという意味。RTOは復旧までの時間目標。
Q5: バックアップ戦略
3-2-1ルールの説明として正しいものはどれか?
- A) 3つのDB、2つのテーブル、1つのインデックス
- B) 3回リトライ、2秒タイムアウト、1回のバックアップ
- C) 3つのコピー、2つの異なるメディア、1つはオフサイト
- D) 3日ごとにフル、2日ごとに差分、1日ごとに増分
回答と解説
正解: C
3-2-1ルールは、データを3つのコピーで保持し、2つの異なるメディア(例: ディスクとクラウドストレージ)に保存し、1つはオフサイト(異なるリージョンやデータセンター)に置くバックアップ戦略。
Q6: リストアテスト
バックアップのリストアテストについて正しいものはどれか?
- A) バックアップを取得していればリストアテストは不要
- B) 本番障害時に初めてリストアを試みればよい
- C) 定期的にリストアを実行し、復旧できることを検証すべき
- D) リストアテストはディスク容量を浪費するので避けるべき
回答と解説
正解: C
バックアップはリストアテストなしには信頼できない。定期的(毎週など)にリストアを実行し、データの整合性確認、アプリケーション接続テストまで行うことで、いざという時に確実に復旧できることを保証する。
Q7: データベースモニタリング
スロークエリの特定に最も適したPostgreSQLの機能はどれか?
- A) pg_stat_activity
- B) pg_stat_statements
- C) pg_locks
- D) pg_settings
回答と解説
正解: B
pg_stat_statements はクエリごとの実行統計(実行回数、平均時間、合計時間など)を記録する拡張機能。スロークエリの特定と改善に最適。pg_stat_activity は現在実行中のクエリの確認に使う。
Q8: Dual Write
Expand-Contract パターンにおける Dual Write の目的はどれか?
- A) データベースを2つ使うこと
- B) 移行期間中に新旧両方のカラム/テーブルにデータを書き込み、切り替え時のデータ欠損を防ぐ
- C) バックアップを2重に取ること
- D) 2つのアプリケーションサーバーで同時に書き込むこと
回答と解説
正解: B
Dual Write は Expand-Contract パターンの移行フェーズで、新旧両方の構造にデータを書き込む手法。これにより、アプリケーションが新構造に切り替わった際にデータの欠損が発生しない。
結果
合格(7問以上正解)
マイグレーションと運用の知識をしっかり身につけています。Step 6「最終試験:データ設計チャレンジ」に進みましょう。
不合格(6問以下)
Step 5 のレッスンを復習してから再挑戦してください。特に以下を重点的に:
- Expand-Contract パターンの理解
- バックアップ戦略(3-2-1ルール、RPO/RTO)
- モニタリングの基本
推定所要時間: 30分