問題集 セクション3:データの保存
Google Cloud「Professional Data Engineer」試験(2024年改訂範囲準拠)対策。 このセクションはストレージ選定が本試験で最頻出です。アクセスパターン・整合性・スケール・レイテンシ・コストの要件から「最適な1つ(または複数)」を選ぶ訓練をします。
使い方
- 各問は実際の試験に近いシナリオ形式です。要件を5軸(① ワークロード OLTP/OLAP ② 構造化度 ③ スケール ④ 整合性 ⑤ レイテンシ)でふるい分けてから解答してください。
- 必ず
▶ 正解と解説まで開いて読むこと。 正解の理由だけでなく「各誤答がなぜ違うか」を理解すると、本番のひっかけに強くなります。 - 目標正答率は 80%以上。間違えた問題は関連リンク先の学習資料に戻って復習しましょう。
問題数・形式
- 全 16問(📘 基礎 4問 / 🔧 応用 8問 / 🎯 発展 4問)
- 単一選択(4択)13問 + 複数選択 3問
- カバー範囲:ストレージ選定(BigQuery / Bigtable / Spanner / Cloud SQL / AlloyDB / Firestore / Memorystore / Cloud Storage / BigLake)、DWH設計(パーティション / クラスタリング / 非正規化・ネスト)、データレイク、Dataplex / データプラットフォーム
Q1 📘 単一選択
ある製造業のIoTプラットフォームで、5万台のセンサーから毎秒数百万件の計測値が届く。要件は「直近のセンサー値をミリ秒で読み出せること」「結果整合性で許容できること」「PB級まで線形にスケールできること」。複雑なJOINや集計分析は別系統で行う。計測値の保存先として最適なものはどれか。
- A. Cloud SQL(PostgreSQL)
- B. BigQuery
- C. Bigtable
- D. Firestore
▶ 正解と解説
正解:C
解説: 「毎秒数百万件の書き込み」「ミリ秒のキー参照」「結果整合性で可」「PB級・水平スケール」は Bigtable の典型的なユースケース(時系列・IoT)です。ワイドカラム型NoSQLとして低レイテンシ・高スループットを満たします。
- ❌ A:Cloud SQL はリージョナルなOLTP用RDB。毎秒数百万件の書き込みやPB級スケールには対応できません。
- ❌ B:BigQuery はOLAP(大量スキャン集計)向きで、ミリ秒のキー参照や高頻度書き込みには不向き。分析は「別系統」と明記されています。
- ❌ D:Firestore はドキュメント型でモバイル/Web同期向き。毎秒数百万件規模の時系列書き込みは想定用途ではありません。
📖 関連:02_応用.md の「ストレージ選定の意思決定ツリー」「アクセスパターン分析からの選定」
Q2 📘 単一選択
スタートアップがWebアプリのバックエンドDBを選定している。要件は「MySQL互換のリレーショナルDBであること」「ACIDトランザクション対応」「単一リージョンで十分(グローバル分散は不要)」「中小規模のトランザクション量」。マネージドで運用負荷を抑えたい。最適なサービスはどれか。
- A. Cloud Spanner
- B. Cloud SQL
- C. AlloyDB
- D. Bigtable
▶ 正解と解説
正解:B
解説: 「MySQL互換」「リージョナルで十分」「中小規模トランザクション」「マネージド」は Cloud SQL の定義そのものです。Cloud SQL は MySQL / PostgreSQL / SQL Server に対応したリージョナルなマネージドRDBです。
- ❌ A:Spanner はグローバル分散・水平スケール・無停止が必要なときの選択。「リージョナルで十分」なら過剰でコストも高い。
- ❌ C:AlloyDB は PostgreSQL互換の高性能DB。MySQL互換が要件なので対象外です(ここがひっかけ)。
- ❌ D:Bigtable はリレーショナル/ACIDトランザクションではなくNoSQL。SQLによる一般的なWebバックエンドには不適。
📖 関連:02_応用.md の「Cloud SQL vs Spanner」「選定でよく問われる対比」
Q3 📘 単一選択
あるアプリの本人確認書類(PDF・画像)を保管する。要件は「法令で7年間の保持が必須」「保管後に参照されるのは年1回未満」「保存コストを最小化したい」。最適な保存方法はどれか。
- A. Cloud Storage の Standard クラス
- B. Cloud Storage の Archive クラス
- C. BigQuery のテーブルに BYTES 型で格納
- D. Cloud SQL の BLOB カラムに格納
▶ 正解と解説
正解:B
解説: 「めったに読まない(年1回未満)が消せない長期保管」「保存コスト最小化」は Cloud Storage の Archive クラスが最適です。Archive は保存料が最も安く、最低保存期間は365日で長期コンプライアンス保管に向きます。
- ❌ A:Standard は頻繁アクセス(ホット)向けで保存料が最も高い。年1回未満のアクセスにはコスト過大。
- ❌ C:BigQuery は分析用DWHであり、非構造化ファイル(PDF・画像)の長期アーカイブ先ではありません。
- ❌ D:Cloud SQL はOLTP用RDB。大容量の非構造化ファイル保管には不向きで割高です。
📖 関連:01_基礎.md の「Cloud Storage のストレージクラス」、03_要点と暗記.md の「Cloud Storage クラスとライフサイクル」
Q4 📘 単一選択
データエンジニアが BigQuery でクエリのスキャンコストを下げたい。最も効果的な基本施策の組み合わせはどれか。
- A. テーブルを正規化して JOIN を増やす
- B. 日付でパーティション分割し、よく絞り込む列でクラスタリングし、必要な列だけ SELECT する
- C. すべてのクエリで
SELECT *を使い、結果をキャッシュする - D. テーブルを Bigtable に移して読み取る
▶ 正解と解説
正解:B
解説: BigQuery のコスト削減=「スキャン量の削減」です。①日付などでパーティション分割(プルーニングで不要区画を読まない)、②よく絞る列でクラスタリング(I/O削減)、③必要な列だけSELECT(SELECT *回避)の3点が基本の打ち手です。
- ❌ A:正規化してJOINを増やすのはRDBの発想。BigQueryでは非正規化が基本で、JOINを増やすとむしろ非効率になりがちです。
- ❌ C:
SELECT *は全列をスキャンしコストが増大します。コスト削減と真逆です。 - ❌ D:分析クエリのコスト問題を Bigtable で解決するのは誤り。Bigtable はキー参照の低レイテンシストアで、アドホック分析には向きません。
📖 関連:01_基礎.md の「パーティションとクラスタリング」、02_応用.md の「パーティション+クラスタリングの設計指針」
Q5 🔧 単一選択
グローバル展開する決済プラットフォーム。要件は「世界中の取引で強整合のACIDトランザクションが必須」「ダウンタイムを許容できず99.999%の可用性」「取引量の増加に応じて水平スケールしたい」。最適なデータベースはどれか。
- A. リードレプリカを各リージョンに置いた Cloud SQL
- B. Cloud Spanner
- C. AlloyDB のマルチリージョン構成
- D. Firestore
▶ 正解と解説
正解:B
解説: 「グローバル」「強整合ACID」「99.999%」「水平スケール」が揃ったらほぼ Spanner 一択です。TrueTime(GPS+原子時計)により世界規模で外部一貫性(強整合)を保ちながら水平スケールできる唯一のRDBです。
- ❌ A:Cloud SQL はリージョナルなRDB。リードレプリカを足してもグローバルな強整合の書き込みトランザクションや無制限の水平スケールは実現できません。
- ❌ C:AlloyDB は高性能なリージョナルPostgreSQL互換DB(HTAP寄り)。グローバル分散の強整合トランザクションが要件なら Spanner です。
- ❌ D:Firestore はドキュメント型NoSQL。グローバル金融取引のリレーショナルな強整合トランザクション基盤には不適。
📖 関連:02_応用.md の「Cloud SQL vs Spanner」「Spanner設計のベストプラクティス(TrueTime)」
Q6 🔧 単一選択
モバイルゲームのバックエンドを構築中。要件は「プレイヤーの状態をリアルタイムに複数端末へ同期」「オフライン時もローカルで動作し再接続時に同期」「ドキュメント指向のデータモデル」「クライアントSDKから直接アクセスしたい」。最適なサービスはどれか。
- A. Bigtable
- B. Firestore
- C. Memorystore for Redis
- D. BigQuery
▶ 正解と解説
正解:B
解説: 「リアルタイム同期」「オフライン対応」「ドキュメント指向」「クライアントSDK直結」はすべて Firestore の強みです。モバイル/Webのリアルタイムコラボやゲームのバックエンドに最適です。
- ❌ A:Bigtable はワイドカラム型で時系列・大量書き込み向け。モバイルのリアルタイム同期やオフライン対応SDKは想定用途ではありません。
- ❌ C:Memorystore はキャッシュ層であり、永続的な正本やオフライン同期の仕組みではありません。
- ❌ D:BigQuery は分析用DWH。クライアント直結のトランザクション/同期バックエンドには使いません。
📖 関連:02_応用.md の「Firestore vs Bigtable」、01_基礎.md の「Firestore」
Q7 🔧 単一選択
ある分析チームが「BIダッシュボードの集計クエリが遅い」と相談してきた。データは BigQuery にあり、アドホックなSQL集計が中心。エンジニアの一人が「Bigtable を追加してそこから読めば速くなる」と提案した。最も適切な対応はどれか。
- A. Bigtable を追加し、集計結果をそこに書き込んでBIから読む
- B. BigQuery のパーティション/クラスタリングを見直し、
SELECT *を避け、繰り返す重い集計はマテリアライズドビューや BI Engine で高速化する - C. データを Cloud SQL に移して JOIN を増やす
- D. データを Firestore に移してリアルタイム同期する
▶ 正解と解説
正解:B
解説: アドホックなSQL分析の遅さは BigQuery 内で解決します。スキャン量削減(パーティション/クラスタリング/必要列のみ)に加え、繰り返す重い集計はマテリアライズドビューで事前計算、BIの低レイテンシ化は BI Engine(インメモリ)が定石です。
- ❌ A:「分析が遅いから Bigtable を足す」は典型的な誤り。Bigtable はキー参照の低レイテンシストアであり、アドホックな集計分析の高速化には使いません。
- ❌ C:Cloud SQL へ移しJOINを増やすのは分析ワークロードのスケールに逆行します。大規模分析はBigQueryが適所。
- ❌ D:Firestore はリアルタイム同期用で、BI集計の高速化とは無関係です。
📖 関連:02_応用.md の「アクセスパターン分析からの選定(分析が遅い→Bigtableは誤り)」「マテリアライズドビュー / BI Engine」
Q8 🔧 単一選択
BigQuery で orders(注文)と order_items(注文明細、1注文に複数明細)を扱う。アナリストが毎回JOINして集計するためクエリが重い。BigQuery のベストプラクティスに沿った設計はどれか。
- A. RDB流に厳密に正規化し、外部キーでJOINを徹底する
- B. 明細を
ARRAY<STRUCT<sku, qty, price>>としてネストし、注文1件を1行に畳み込んで非正規化する - C. 注文と明細を別々の Bigtable テーブルに分割する
- D. すべてを1つのSTRING列にJSON文字列として格納する
▶ 正解と解説
正解:B
解説: BigQueryは非正規化が基本。「1:Nで繰り返す情報」はネスト/繰り返しフィールド(ARRAY<STRUCT>)で1行に畳み込むのがBigQuery流で、JOINを削減しスキャン効率を高めます。
- ❌ A:厳密な正規化+JOID多用はOLTP(RDB)の発想。BigQueryでは逆効果になりがちで、まさにこの問題の原因です。
- ❌ C:分析対象を Bigtable に分割しても、アドホックなSQL集計には向きません。用途が異なります。
- ❌ D:単一STRING列のJSON文字列は、列指向の最適化やスキーマの恩恵を受けられず、
STRUCT/ARRAYでのネストより非効率です。
📖 関連:01_基礎.md の「正規化 vs 非正規化/ネスト構造」、02_応用.md の「非正規化とネスト/繰り返しフィールド」
Q9 🔧 単一選択
Bigtable に車両テレメトリを保存している。行キーを <timestamp>#<vehicleID> の形式(先頭がタイムスタンプ)にしたところ、書き込みスループットが頭打ちになった。原因と最も適切な対策はどれか。
- A. 原因はSSDの容量不足。HDDに変更する
- B. 原因は最新書き込みが単一ノードに集中するホットスポット。フィールドプロモーションで
<vehicleID>#<timestamp>のように高カーディナリティな識別子を先頭に置く - C. 原因はパーティション数の上限。テーブルを日付で分割する
- D. 原因はスキーマ未定義。先に列ファミリーを正規化する
▶ 正解と解説
正解:B
解説: Bigtableは行キーで1次元にソートされて分散格納されます。先頭がタイムスタンプだと「最新の書き込み」が常に同じ末尾ノードへ集中し、ホットスポットになります。対策はフィールドプロモーションで高カーディナリティな識別子(vehicleID)を先頭に昇格し、タイムスタンプを後置して書き込みを分散させることです。
- ❌ A:問題は容量やレイテンシではなく書き込みの偏り。HDD化はむしろレイテンシが悪化します。
- ❌ C:Bigtable に「パーティション分割で日付ごとに区切る」というBigQuery的な概念はありません。行キー設計の問題です。
- ❌ D:ホットスポットの原因は行キー設計であり、列ファミリーの正規化では解決しません。
📖 関連:02_応用.md の「Bigtable設計のベストプラクティス(ホットスポット/フィールドプロモーション)」
Q10 🔧 単一選択
Spanner を使うグローバル在庫システムで、主キーに単調増加するシーケンス番号を採用したところ、書き込み性能が伸びない。最も適切な対策はどれか。
- A. リードレプリカを増やす
- B. UUID やハッシュ化した主キー(またはキー先頭バイトのハッシュ化)を用いてキーを均等に分散させる
- C. テーブルを Cloud SQL に移す
- D. 主キーをさらに連番で密にして局所性を高める
▶ 正解と解説
正解:B
解説: Spanner はキー順にスプリットへ分散します。単調増加キー(連番・タイムスタンプ)は特定スプリットに書き込みが集中しホットスポット化します。対策は UUID/ハッシュ化主キーやキー先頭バイトのハッシュ化で「キーを均等に分散」することです。RDBでありながら Bigtable 同様にホットスポットを意識する点が頻出論点です。
- ❌ A:リードレプリカは読み取りのスケール。書き込みのホットスポットは解消しません。
- ❌ C:要件はグローバル強整合。Cloud SQL(リージョナル)への移行は要件を満たせません。
- ❌ D:連番を密にすると集中がさらに悪化します。分散とは逆の対策です。
📖 関連:02_応用.md の「Spannerのホットスポット回避」、03_要点と暗記.md の「Bigtable / Spanner のホットスポット対策」
Q11 🔧 単一選択
高トラフィックなECサイトで、商品カタログの読み取りがDBに集中しレイテンシが悪化している。データの正本はリレーショナルDBにある。サブミリ秒で頻繁な再読み込みを返す前段のキャッシュ層を追加したい。最適なサービスはどれか。
- A. Memorystore(Redis)をキャッシュ層として追加する
- B. 正本を Memorystore に移し、唯一のデータストアにする
- C. BigQuery にカタログを置いて読み取る
- D. Bigtable を正本として全データを移す
▶ 正解と解説
正解:A
解説: サブミリ秒の超低レイテンシで頻繁な再読み込みを返す前段キャッシュは Memorystore(Redis/Memcached)の典型用途です。正本はRDBに残したまま、キャッシュ層として追加するのが正しい使い方です。
- ❌ B:Memorystore は揮発しうるインメモリキャッシュであり、永続的な正本(システム・オブ・レコード)にしてはいけません。これは頻出のひっかけです。
- ❌ C:BigQueryは分析用で、低レイテンシなカタログ読み取りのキャッシュ用途ではありません。
- ❌ D:Bigtableはキー参照の低レイテンシストアですが、設問は「正本はRDBにあり、前段にキャッシュを足す」状況。正本の全移行は要件と異なります。
📖 関連:01_基礎.md の「Memorystore」、03_要点と暗記.md の「Memorystore を正本にしない」
Q12 🔧 単一選択
データレイクとして Cloud Storage に大量の Parquet ファイルがある。要件は「データをコピーせずそのまま分析したい」「BigQuery のSQLで分析」「行レベル・列レベルのアクセス制御(細粒度ガバナンス)を効かせたい」。最適な手段はどれか。
- A. ファイルを全件 BigQuery のネイティブテーブルにロードする
- B. BigLake テーブルとして定義し、BigQuery から細粒度アクセス制御付きで分析する
- C. 単純な外部テーブル(external table)だけを作成する
- D. Bigtable にインポートして読み取る
▶ 正解と解説
正解:B
解説: 「コピーせず・BQのSQLで・行/列レベルの細粒度ガバナンス」は BigLake テーブルの狙いそのものです。GCS上のオープンフォーマット(Parquet等)をコピーせずに、BigQuery級のガバナンス(行/列レベルのアクセス制御)を適用できます。
- ❌ A:全件ロードは「コピーせず」という要件に反します。
- ❌ C:単純な外部テーブルだけでは行/列レベルの細粒度セキュリティが弱い。細粒度制御には BigLake テーブル化が必要です(ひっかけ)。
- ❌ D:Bigtable はキー参照ストアで、レイク上のParquetをSQL分析・細粒度統制する用途ではありません。
Q13 🔧 複数選択(2つ選択)
あるチームが GCS のライフサイクル管理でコスト最適化を検討している。適切な設計を2つ選べ。
- A. 作成から90日経過したアーカイブログを Coldline へ移行する
- B. 30日ごとに全件が上書きされる短命な作業データを Nearline に保存する
- C. アクセスパターンが読めないデータに対して Autoclass を有効化し、クラスを自動最適化する
- D. 頻繁に配信する稼働中データを Archive クラスに置いて取り出しコストを下げる
▶ 正解と解説
正解:A と C
解説:
A 正しい:四半期に1回程度しか参照しないアーカイブログを Coldline(最低保存90日)へ移行するのは、コスト最適化の定番ライフサイクルルールです。
C 正しい:アクセスパターンが不明なら Autoclass が有効。アクセス頻度を自動学習してクラスを最適化し、手動ルール設計や早期削除料金のリスクを避けられます。
❌ B:Nearline は最低保存期間30日。30日ごとに上書き(実質的に短命)するデータを置くと早期削除/上書きで早期削除料金が発生するアンチパターン。短命データは Standard に。
❌ D:Archive は取り出しコストが最も高いクラス。頻繁に配信するホットデータを置くと取り出しコストが膨らみます。逆です。
📖 関連:02_応用.md の「GCS ライフサイクル管理(早期削除料金・Autoclass)」、03_要点と暗記.md の「Cloud Storage クラスとライフサイクル」
Q14 🎯 複数選択(3つ選択)
グローバルなライドシェア企業の統合データ基盤を設計する。次の各要件に最適なサービスの割り当てとして正しいものを3つ選べ。
- A. 世界中の決済・配車トランザクションを強整合・無停止・水平スケールで処理 → Spanner
- B. 車両から毎秒数百万件届くGPSテレメトリをミリ秒で直近参照 → Bigtable(SSD)
- C. 過去全データをアドホックにSQL分析しBIダッシュボードを出す → BigQuery
- D. ドライバーの本人確認書類画像を数年保管(めったに参照しない) → Bigtable
- E. 直近位置のミリ秒参照を実現するため、テレメトリの正本を Memorystore に置く
▶ 正解と解説
正解:A と B と C
解説: これは統合シナリオで「要件を軸でふるい分け、各サービスへ割り当てる」本番そのものの問題です。
A 正しい:グローバル強整合・無停止・水平スケールは Spanner(TrueTime)。
B 正しい:毎秒数百万件のテレメトリ・ミリ秒参照は Bigtable(低レイテンシ重視ならSSD)。
C 正しい:アドホックなSQL分析・BIは BigQuery(非正規化+パーティション/クラスタリング、BI Engine/マテビュー)。
❌ D:本人確認画像(非構造化・コールド長期保管)は Cloud Storage(Coldline/Archive) が適切。Bigtable はキー参照ストアでアーカイブ用途ではありません。
❌ E:Memorystore はキャッシュであり正本にしてはいけません。テレメトリの正本は Bigtable。Memorystore を正本にする選択肢は典型的な誤りです。
📖 関連:02_応用.md の「統合シナリオ演習」、03_要点と暗記.md の「ストレージ選定 早見表」
Q15 🎯 単一選択
ある企業が PostgreSQL で稼働中の基幹システムを移行する。要件は「PostgreSQL互換のまま」「トランザクション処理(OLTP)が高負荷」「同じDBで分析クエリ(リアルタイム分析)も高速に実行したい(HTAP)」「リージョナルで十分」。最適なサービスはどれか。
- A. Cloud SQL for PostgreSQL
- B. AlloyDB for PostgreSQL
- C. Cloud Spanner
- D. BigQuery
▶ 正解と解説
正解:B
解説: 「PostgreSQL互換」「高負荷OLTP」「同じDBで分析も速い(HTAP)」「リージョナル」は AlloyDB の狙いどころです。カラムナエンジンを内蔵し、トランザクションと分析クエリの両方を高速化します。
- ❌ A:Cloud SQL for PostgreSQL でも互換性はありますが、HTAP(同一DBでの高速分析)や高負荷性能は AlloyDB が優れます。設問は「分析も高速に」が決め手。
- ❌ C:Spanner はグローバル分散の強整合RDB。設問は「リージョナルで十分」かつ「PostgreSQL互換」で、要件に対し過剰かつ方向が異なります。
- ❌ D:BigQuery は分析専用のDWH。高負荷OLTPの基幹トランザクションには不向きです。
Q16 🎯 単一選択
大企業が複数部門のデータ基盤を統合している。要件は「散らばった GCS と BigQuery のデータを物理的に動かさず論理的なレイク/ゾーンに整理」「横断的に品質・セキュリティ・**発見性(ディスカバリ)と系統(lineage)**を効かせる」「各部門がデータを『プロダクト』として所有しつつ全社共通ルールで統制する(データメッシュ)」。中核となるサービスはどれか。
- A. Cloud Storage のバケットを部門ごとに分けるだけ
- B. Dataplex(メタデータの検索・系統は Dataplex Catalog)で論理レイク/ゾーンを構成し横断ガバナンスを適用する
- C. すべてのデータを単一の BigQuery データセットに集約し中央チームが管理する
- D. Memorystore にメタデータをキャッシュして検索する
▶ 正解と解説
正解:B
解説: 「物理的に動かさず論理レイク/ゾーンに整理」「横断ガバナンス(品質・セキュリティ・発見性・系統)」「データメッシュ+フェデレーテッドガバナンス」の中核は Dataplex です。メタデータの検索・発見・系統は Dataplex Catalog が担い、データスワンプ化を防ぎます。
- ❌ A:バケットを部門で分けるだけでは横断ガバナンス・発見性・系統は得られず、データスワンプ化します。
- ❌ C:「中央チームが全データを抱える」設計はスケールせず、データメッシュ(分散所有+フェデレーテッドガバナンス)の考え方に反します。
- ❌ D:Memorystore はキャッシュであり、組織横断のメタデータカタログ/ガバナンス基盤ではありません。
📖 関連:02_応用.md の「Dataplex によるレイク管理」「データメッシュ × フェデレーテッドガバナンス」、01_基礎.md の「Dataplex / Dataplex Catalog」
自己採点
| 項目 | 値 |
|---|---|
| 総問題数 | 16問 |
| 正解数 | ____ / 16 |
| 正答率 | ____ % |
| 目標 | 80%以上(13問以上) |
難易度別チェック
- 📘 基礎(Q1〜Q4):____ / 4
- 🔧 応用(Q5〜Q13):____ / 9
- 🎯 発展(Q14〜Q16):____ / 3
復習メモ(間違えた問題のトピックを書き出す)
- ストレージ選定の意思決定ツリー(構造化度 → OLAP/OLTP → モデル → 分散/整合性)
- Cloud SQL ↔ Spanner の分岐(グローバル・水平スケール・99.999%なら Spanner)
- AlloyDB は PostgreSQL互換限定(MySQL/SQL Server は Cloud SQL)
- Bigtable に分析させない(アドホック集計は BigQuery)
- Bigtable/Spanner の単調増加キー回避(フィールドプロモーション / ハッシュ化)
- Memorystore を正本にしない(前段キャッシュ)
- BigQuery は非正規化+ネスト、コスト削減はパーティション/クラスタリング/必要列のみ
- GCS クラスとライフサイクル(最低保存期間・早期削除料金・Autoclass)
- BigLake(コピーせず細粒度ガバナンス)/ Dataplex(論理レイク・横断統制)
80%に届かなかったトピックは 02_学習資料/03_データの保存 に戻って復習し、再挑戦してください。