QUIZ 30分

合格基準

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分