section5_問題集

問題集 セクション5:データワークロードの保守と自動化

Google Cloud「Professional Data Engineer」試験(2024年改訂範囲)対策の問題集です。 本番同様の シナリオ形式 を中心に、運用判断・トレードオフ・頻出ひっかけを織り込んでいます。

使い方

問題数・形式


カバー範囲


Q1 📘 単一選択

あなたは小売企業のデータエンジニアです。毎晩1回だけ、Spark で売上データを変換するバッチジョブを Dataproc で実行しています。現在は常時起動の永続クラスタを使っており、日中はアイドル状態でもコストが発生しています。コストを最小化する最も適切な構成はどれですか。

▶ 正解と解説

正解:B

解説: 夜間1回のバッチでアイドル時間が長いケースは、ジョブのたびに起動し完了後に破棄する ephemeral(ジョブ単位)クラスタ がコスト最小の定番解です。鉄則として、データはクラスタ内 HDFS ではなく Cloud Storage(GCS) に置き、コンピュートとストレージを分離します。これによりクラスタを破棄してもデータが残ります。

📖 関連:02_応用.md の「5.1 Dataproc:永続 vs ジョブ単位(ephemeral)の判断」


Q2 📘 単一選択

Dataproc クラスタのコストをさらに下げるため、安価で中断され得る Spot VM(プリエンプティブル VM の後継)を導入したいと考えています。クラスタを不安定にせずコストを下げるには、どのノードに Spot VM を使うべきですか。

▶ 正解と解説

正解:C

解説: Spot/プリエンプティブル VM は Google の都合でいつでも停止され得るため、セカンダリワーカーのみ に使うのが定石です。プライマリワーカーは通常 VM で安定性を確保します。これにより、一部ノードが中断されてもクラスタ全体は動き続けます。

📖 関連:03_要点と暗記.md の「安いVMの使い分け」


Q3 🔧 単一選択

ある企業の BigQuery 利用は、月によってクエリ量が大きく変動し、月額コストが読めず高止まりしています。一方でクエリ量は全体として多く、今後も継続的に増える見込みです。コストを安定させ予算を予測可能にする最も適切な対応はどれですか。

▶ 正解と解説

正解:B

解説: 「クエリ量が多く継続的で予測可能」かつ「月額が変動して読めない」場合は、容量ベース(Editions + コミットメント) に移行してスロットを予約するのが定番です。確保したスロット時間で課金されるため予算が固定でき、上限スロットでコスト暴走も頭打ちにできます。

📖 関連:02_応用.md の「5.1 BigQuery:オンデマンド vs 容量ベース」


Q4 📘 単一選択

社内の分析チームは BigQuery を月に数回、不定期に少量のクエリでしか使いません。データ量も読みにくく、利用は散発的です。コスト面で最も適切な課金モデルはどれですか。

▶ 正解と解説

正解:C

解説: 利用が散発的で量が読めず小規模な場合は、使った分(スキャン量)だけ課金される オンデマンド が最も無駄がありません。たまにしか使わないのに定額の枠を買うと、使わない時間も課金され割高になります。

📖 関連:03_要点と暗記.md の「BigQuery 課金モデル」


Q5 🔧 単一選択

あなたのチームは、多数のタスクが複雑に依存し合う ETL を運用しています。タスクには分岐・リトライ・過去日付のバックフィルが必要で、現在は手動でやり直していて再現性がありません。オーケストレーションに最も適したサービスはどれですか。

▶ 正解と解説

正解:B

解説: 多数のタスク・複雑な依存・分岐・リトライ・バックフィル が必要な本格的ワークフローは Cloud Composer(DAG / Airflow) が適任です。retriesexecution_date による論理日付の再処理で、失敗時の安全な再実行・過去日付の再処理ができます。

📖 関連:02_応用.md の「5.2 Composer / Workflows / Cloud Scheduler の使い分け」


Q6 🔧 単一選択

あるサービスでは、3つの REST API を順番に呼び出すだけの軽量な連携処理を、1日数回サーバーレスで実行したいと考えています。複雑な依存もバックフィルも不要です。Cloud Composer の常時稼働環境はコスト面でオーバースペックと判断しました。最も適切なサービスはどれですか。

▶ 正解と解説

正解:B

解説: 数個の API/サービスを順番に呼び出す軽量な編成には、サーバーレスで YAML/JSON 定義の Workflows が最適です。Composer 環境のように常時課金されず、軽量・低コストで実行できます。

📖 関連:01_基礎.md の「5.2 オーケストレーションの選択肢」


Q7 🔧 複数選択(2つ選べ)

Cloud Composer の DAG を冪等(idempotent)に設計し、タスクが失敗して再実行されても二重書き込みや破損が起きないようにしたいと考えています。冪等性を担保する設計として 適切なものを2つ 選んでください。

▶ 正解と解説

正解:B と C

解説: 冪等性とは「同じ処理を何回実行しても結果が同じ」になる性質です。パーティションの上書き(WRITE_TRUNCATE)MERGE による upsert は、再実行しても最終状態が一意に定まるため二重書き込みを防げます。

📖 関連:01_基礎.md の「5.2 冪等性(idempotency)」


Q8 🔧 単一選択

重要な本番 ETL ジョブが、アナリストのアドホッククエリが集中する時間帯にスロット不足となり、SLA を満たせないことがあります。BigQuery は容量ベース(予約)で運用しています。最も適切な対策はどれですか。

▶ 正解と解説

正解:B

解説: 重要ジョブが他の負荷でスロット枯渇する問題は、予約(reservation)を用途別に分離して割り当てる のが定番解です。prod-etl 予約と adhoc 予約を分ければ、アドホッククエリの増減が重要 ETL のスロットを奪わなくなります。急がないものはバッチクエリに回すのも併用できます。

📖 関連:02_応用.md の「5.1 ビジネスクリティカル処理へのリソース確保」


Q9 🔧 単一選択

夜間に実行する大量の集計クエリがあり、即時性は求められません。日中はインタラクティブな同時実行クォータに当たることがあり、リソース競合を避けたいと考えています。この集計クエリに最も適した実行方法はどれですか。

▶ 正解と解説

正解:B

解説: 急がない大量処理は バッチ(batch)優先度 が適します。スロットに空きが出たタイミングで実行されるため、即時性を犠牲にする代わりにリソース競合を避け、インタラクティブの同時実行クォータにも当たりにくくなります。

📖 関連:02_応用.md の「5.3 インタラクティブ vs バッチ クエリの判断」


Q10 🔧 単一選択

あるダッシュボード用 BigQuery クエリが急に遅くなり、コストも増えました。どのクエリがスキャン量・スロットを多く消費しているかを SQL で特定し、原因を分析したいと考えています。最も適切な手段はどれですか。

▶ 正解と解説

正解:B

解説: BigQuery のジョブごとのスキャン量・スロット消費・実行時間を SQL で分析するには INFORMATION_SCHEMA.JOBS を使います。高コスト・低速クエリを特定し、パーティション/クラスタリングの不足や SELECT * の多用、スロット不足を切り分けられます。

📖 関連:02_応用.md の「5.4 BigQuery トラブルシュートの定番」


Q11 🔧 複数選択(2つ選べ)

本番のデータパイプラインのジョブが、断続的に失敗するようになりました。エラーの原因を切り分けるために、まず確認すべきものとして 適切なものを2つ 選んでください。

▶ 正解と解説

正解:A と B

解説: ジョブが断続的に失敗する場合の定番切り分けは、まず Cloud Logging でエラーメッセージ を確認し、加えて クォータ超過(同時実行数・APIレート) を疑うことです。Quota exceeded 系エラーは断続的失敗の頻出原因で、上限引き上げ申請やレート制御で対処します。

📖 関連:02_応用.md の「5.4 クォータ・課金・エラーの切り分け」


Q12 📘 単一選択

本番の Cloud SQL インスタンスが、データセンターの ゾーン障害 で一度停止しました。同様の障害時に自動的に切り替わり、ダウンタイムを最小化したいと考えています。最も適切な構成はどれですか。

▶ 正解と解説

正解:B

解説: ゾーン障害 に自動で耐えるには、Cloud SQL の HA 構成(同一リージョンの別ゾーンにスタンバイを配置し、障害時に自動フェイルオーバー)が適切です。HA は「可用性(止まらない)」を目的とした仕組みです。

📖 関連:02_応用.md の「5.5 Cloud SQL:HA とリードレプリカの違い」


Q13 🎯 単一選択

金融系のサービスで、リージョン全体の災害 が発生しても本番 Cloud SQL データベースを別リージョンで復旧できる構成を求められています。最も適切な対策はどれですか。

▶ 正解と解説

正解:B

解説: リージョン障害 に備えるには、別リージョンにクロスリージョンのリードレプリカ を配置し、災害時にそれを昇格(promote)してプライマリにします。HA 構成は同一リージョン内のゾーン障害までしか守れない点がひっかけです。

📖 関連:02_応用.md の「5.5 冗長レベルの選び方 / クロスリージョンリードレプリカ」


Q14 🎯 複数選択(3つ選べ)

複数の運用課題への対処を検討しています。それぞれの課題に対する 正しいサービス機能の組み合わせを3つ 選んでください。

▶ 正解と解説

正解:A と B と C

解説: サービス別の復旧カードはそのまま暗記対象です。BigQuery の誤上書き/誤削除 → タイムトラベル(7日)Pub/Sub の取りこぼし再処理 → シークDataflow のストリーミング状態の保存・復元/移行 → スナップショット が正しい対応です。

📖 関連:03_要点と暗記.md の「データ破損・欠損の復旧カード」


Q15 🎯 単一選択

分析者が誤って本番 BigQuery テーブルを上書きしてしまいました。組織のポリシーでは 過去30日間 はいつでも復元できる状態を求められています。タイムトラベルだけでは要件を満たせません。30日超の保護を実現する最も適切な追加策はどれですか。

▶ 正解と解説

正解:B

解説: BigQuery の タイムトラベルは7日固定 で、それ以上の保護はできません。30日のような長期保護が要件なら、テーブルスナップショット や定期的な エクスポート を併用して7日超をカバーします。

📖 関連:02_応用.md の「5.5 データ破損・欠損への備え(BigQueryタイムトラベルは7日固定)」


Q16 🎯 単一選択

あるアプリのキャッシュ層に Memorystore for Redis を使っています。現在は Basic Tier で運用していますが、プライマリ障害時に自動でフェイルオーバーし、キャッシュの可用性を高める要件が新たに加わりました。最も適切な対応はどれですか。

▶ 正解と解説

正解:B

解説: Memorystore for Redis で 可用性(自動フェイルオーバー) を得るには、レプリカを持つ Standard Tier、または大容量・高スループット向けの Redis クラスタ を使います。Basic Tier はレプリカがなく冗長性がない 点がポイントです。

📖 関連:02_応用.md の「5.5 Memorystore (Redis) の冗長」


自己採点

設問 難易度 主テーマ あなたの正誤
Q1 📘 基礎 ephemeral Dataproc + GCS
Q2 📘 基礎 Spot VM はセカンダリワーカー
Q3 🔧 応用 容量ベース(Editions+コミットメント)への移行
Q4 📘 基礎 散発利用はオンデマンド
Q5 🔧 応用 複雑な依存・バックフィルは Composer
Q6 🔧 応用 軽量API連携は Workflows
Q7 🔧 応用(複数選択) 冪等性(WRITE_TRUNCATE / MERGE)
Q8 🔧 応用 予約の用途別分離
Q9 🔧 応用 急がない大量処理はバッチクエリ
Q10 🔧 応用 INFORMATION_SCHEMA.JOBS で分析
Q11 🔧 応用(複数選択) ジョブ失敗は Logging + クォータ
Q12 📘 基礎 ゾーン障害は Cloud SQL HA
Q13 🎯 発展 リージョン障害はクロスリージョンレプリカ
Q14 🎯 発展(複数選択) 復旧カード(タイムトラベル/シーク/スナップショット)
Q15 🎯 発展 タイムトラベル7日固定 + スナップショット
Q16 🎯 発展 Memorystore は Standard Tier / クラスタ

スコア:  /16(目標:13/16 = 約80%)

復習の優先度

特に注意すべきひっかけ(本問題集で扱った頻出パターン)