PDE 合格対策

セクション3:データの保存

ストレージ選定とDWH/データレイク/データプラットフォーム設計を扱います。ストレージ選定は本試験の最頻出。意思決定ツリーを丸暗記するのが合格の近道です。 出題 ~20%

🔑 TL;DR ストレージは5軸(ワークロード/構造化度/スケール/整合性/レイテンシ)でふるい分ける。RDBは3種(Cloud SQL=リージョナル/AlloyDB=PostgreSQL高性能・分析併用/Spanner=グローバル強整合)、NoSQLは2種(Bigtable=大量低レイテンシ/Firestore=ドキュメント同期)。BigQueryは非正規化+ネスト、コスト削減はパーティション+クラスタリング+必要列のみ。横断ガバナンスはDataplex/BigLake
🎯 学習目標0 / 0






3.0 全体像:まず「軸」を頭に入れる 📘

ストレージ選定は5つの軸で考えます。この軸が試験のあらゆる選択問題の土台になります。

① ワークロード : OLTP(更新中心・1行処理) vs OLAP(分析中心・大量集計) ② 構造化の度合い : 構造化(表)/半構造化(JSON等)/非構造化(画像・動画) ③ スケール規模 : GB級 〜 TB級 〜 PB級 ④ 整合性要件 : 強整合(ACID) vs 結果整合(最終的に整合) ⑤ レイテンシ要件 : ミリ秒応答が必須か/秒〜分でよいか
💡 ポイント試験は「最適なものを1つ」選ばせる形式が大半。上の軸でふるい分けると、ほぼ一意に決まります。

3.1 ストレージシステムの選択:各サービスの役割

主要ストレージ早わかり

サービス種別ワークロード整合性キーワード
Cloud Storage (GCS)オブジェクトストレージ強整合(オブジェクト単位)非構造化・データレイク・バックアップ
BigQueryDWHOLAP強整合サーバーレス分析・PB級・SQL
Cloud SQLリレーショナルDBOLTP強整合(ACID)MySQL/PostgreSQL/SQL Server・リージョナル
AlloyDBリレーショナルDBOLTP+分析(HTAP)強整合(ACID)PostgreSQL互換・高性能・分析も速い
Spanner分散リレーショナルDBOLTP強整合(ACID)・グローバル水平スケール・無停止・TrueTime
BigtableNoSQL(ワイドカラム)大量書き込み/読み取り結果整合(単一行は強整合)ミリ秒・時系列・IoT・PB級
FirestoreNoSQL(ドキュメント)OLTP(ドキュメント)強整合モバイル/Web・リアルタイム同期
MemorystoreインメモリキャッシュRedis/Memcached・サブミリ秒
BigLakeストレージエンジンOLAP(レイク上)GCS/他クラウドをBQから統一管理
⚠️ 注意同じ「リレーショナル」でも Cloud SQL / AlloyDB / Spanner は別物。リージョナルか・グローバルか・分析併用かで分かれる(後述)。

① Cloud Storage(GCS)— 非構造化データの土台

オブジェクトストレージ。ファイル(オブジェクト)をバケットに格納する。スキーマを持たず、画像・動画・ログ・Parquet/Avro など何でも置ける。

ストレージクラス(アクセス頻度でコストが変わる。ライフサイクル管理と必ずセット):

クラス想定アクセス頻度最低保存期間主な用途
Standard頻繁(ホット)なし稼働中データ・配信
Nearline月1回程度30日バックアップ・たまに参照
Coldline四半期に1回程度90日アーカイブ(年数回)
Archive年1回未満(コールド)365日長期保管・コンプライアンス保存
⚠️ 注意取り出し(読み取り)コストは Standard→Archive の順に高くなる。保存料は逆に安くなる。「めったに読まないが消せない」→ Coldline/Archive。

② BigQuery — サーバーレスなデータウェアハウス(OLAP)

フルマネージドのDWH。サーバー管理不要で、ペタバイト級のデータに対しSQLで高速集計できる。ストレージとコンピュート(スロット)が分離しているのが特徴。

💡 ポイントBigQueryは「書き込みを大量に更新する用途には不向き」。1行ずつのUPDATE/DELETEを多用するならRDB(OLTP)を選ぶ。

③ Cloud SQL — マネージドな一般RDB(OLTP・リージョナル)

MySQL / PostgreSQL / SQL Server のマネージド版。ACIDトランザクションに対応したリージョナルなRDB。

④ AlloyDB — 高性能なPostgreSQL互換(OLTP+分析)

PostgreSQL互換で、Cloud SQLより高性能。トランザクション(OLTP)と分析クエリの両方が速いHTAP寄りのDB。

⑤ Spanner — グローバル分散・強整合のRDB

水平スケールしながら強整合のACIDトランザクショングローバルに提供する唯一のRDB。TrueTime(GPS+原子時計による高精度な時刻同期)で世界規模の一貫性を実現。

⑥ Bigtable — 低レイテンシ・高スループットのNoSQL

ワイドカラム型のNoSQL。ミリ秒のレイテンシで、毎秒数百万件規模の読み書きにスケールする。HBase API互換

⑦ Firestore — ドキュメント型NoSQL(モバイル/Web向け)

ドキュメント(JSON的)指向のNoSQL。スケーラブルで、モバイル/Webクライアントとのリアルタイム同期・オフライン対応が強み。

⑧ Memorystore — インメモリのキャッシュ

マネージドな Redis / Memcached。サブミリ秒の超低レイテンシ。

⑨ BigLake — レイクとウェアハウスを橋渡し

GCSや他クラウド上のデータを、BigQueryから統一的に(細粒度アクセス制御付きで)扱えるようにするストレージエンジン。

3.2 データウェアハウスの利用計画(BigQuery設計の基礎)

DWHは「分析しやすい形」にデータを整えて保管する。OLTPのRDBとは設計思想が逆になる点が重要です。

正規化 vs 非正規化

正規化 (Normalized)非正規化 (Denormalized)
狙い冗長排除・更新の整合性読み取り(分析)の高速化
JOIN多い少ない(事前に結合済み)
向く処理OLTP(Cloud SQL等)OLAP(BigQuery)
正規化(RDB流) BigQuery流(ネスト構造) orders ── order_items orders │ JOINが必要 ├─ order_id └─ 1:N └─ items: ARRAY<STRUCT<sku, qty, price>> (1行に注文明細を内包=JOIN不要)

パーティションとクラスタリング(コスト・性能の要)

機能何をする効果
パーティションテーブルを日付/取り込み時刻/整数範囲で物理分割不要な区画をスキャンせずスキャン量=コスト削減(プルーニング)
クラスタリング指定列の値で並べ替えて格納フィルタ/集計対象を絞り込み、I/Oをさらに削減

スロット(Slot)

BigQueryのクエリを実行する仮想CPUの計算単位。クエリは複数スロットで並列処理される。

🔑 試験ポイントBigQueryでコストを下げる=「スキャン量を減らす」=パーティション+クラスタリング+必要な列だけSELECTSELECT * を避ける)。

3.3 データレイクの利用(GCSとレイク管理の基礎)

データレイク (Data Lake) = 構造化・半構造化・非構造化を問わず、生データをそのまま大量に貯める場所。GCPでは主に Cloud Storage が実体。

データレイク vs データウェアハウス

データレイク(GCS)データウェアハウス(BigQuery)
データ生データ・あらゆる形式整形・統合済みの構造化データ
スキーマスキーマオンリード(読む時に解釈)スキーマオンライト(入れる時に定義)
主な利用者データエンジニア・データサイエンティストアナリスト・BI
コスト安価(保存中心)クエリ性能・分析最適化

レイク管理の3観点

観点内容主な手段
ディスカバリ「どこに何のデータがあるか」を見つけられるDataplex Catalog(メタデータ検索・タグ)
アクセス制御誰がどのデータを読めるかIAM・BigLake(細粒度)・Dataplex
コスト制御安く・無駄なく保管ストレージクラス+ライフサイクル管理
⚠️ 注意レイクは放置するとデータスワンプ(沼)化し、何があるか分からなくなる → カタログ化と監視が必須。

3.4 データプラットフォームの設計(統合ガバナンスの基礎)

複数のレイク・DWHを横断して、一貫したガバナンス(品質・セキュリティ・発見性)を効かせる。

Dataplex / Dataplex Catalog

Dataplex(論理的なデータ管理レイヤ) └── レイク(例:販売ドメイン) ├── ゾーン: raw(生データゾーン / GCS) └── ゾーン: curated(整形済みゾーン / BigQuery) └── アセット(実体のバケット/データセット)

データメッシュとフェデレーテッドガバナンス

💡 イメージ各部門が自分のデータに責任を持ちつつ(自律)、組織共通のガバナンスは Dataplex で横串に効かせる(統制)。
📌 このセクションの基礎まとめ
  • ストレージ選定は5軸でふるい分ける
  • RDBは3種:Cloud SQL(リージョナル)/AlloyDB(PostgreSQL高性能・分析併用)/Spanner(グローバル強整合)
  • NoSQLは2種:Bigtable(大量・低レイテンシ・キー参照)/Firestore(ドキュメント・モバイル同期)
  • BigQueryは非正規化+ネスト構造、コスト削減はパーティション+クラスタリング
  • GCS=レイク/BigQuery=DWH、横断ガバナンスは Dataplex / BigLake、考え方としてデータメッシュ

3.1 ストレージ選定の意思決定ツリー【最重要】 🔧

この試験で最も得点に直結するのがストレージ選定です。次のツリーを丸暗記してください。

Q1. データは構造化されているか? │ ├─ NO(画像・動画・ログ・バックアップ等の非構造化/ファイル) │ └─►【Cloud Storage】(必要ならBigLakeでBQから分析) │ └─ YES(構造化/半構造化) │ Q2. ワークロードは? │ ├─ 分析・集計が中心(OLAP) │ └─►【BigQuery】(レイク上のまま分析したい → BigLake) │ └─ トランザクション・更新が中心(OLTP) │ Q3. データモデルは? │ ├─ ドキュメント指向 + モバイル/Webのリアルタイム同期 │ └─►【Firestore】 │ ├─ ワイドカラム / キー参照で大量・低レイテンシ・高スループット │ └─►【Bigtable】(時系列・IoT・ミリ秒応答・PB級) │ └─ リレーショナル(SQL・ACID) │ Q4. グローバル分散 + 水平スケール + 強整合が必要? │ ├─ YES(グローバル無停止・大規模) │ └─►【Spanner】 │ └─ NO(リージョナルで十分) │ Q5. PostgreSQLで高性能 or 分析も同じDBで(HTAP)? ├─ YES →【AlloyDB】 └─ NO →【Cloud SQL】(MySQL/PostgreSQL/SQL Server) ※ 超低レイテンシのキャッシュが欲しい → 上記の前段に【Memorystore】

サービス特徴比較表(選定の早見)

サービスワークロード整合性スケールレイテンシSQL代表ユースケース
Cloud Storageファイル/レイク強整合(オブジェクト)無制限×非構造化・バックアップ・ステージング
BigQueryOLAP強整合PB級秒(分析)大規模分析・BI・BQML
Cloud SQLOLTP強整合(ACID)リージョナル/垂直Webアプリ・中小トランザクション
AlloyDBOLTP+分析強整合(ACID)リージョナル(高性能)◎(PG)PostgreSQL高負荷・HTAP
SpannerOLTP強整合(ACID)・グローバル水平・無制限グローバル金融/在庫・無停止
Bigtable大量読み書き結果整合(単一行は強整合)PB級・水平ミリ秒×(限定)時系列・IoT・アドテク
FirestoreOLTP(ドキュメント)強整合自動・水平×(独自)モバイル/Web・同期
Memorystoreキャッシュメモリ依存サブミリ秒×キャッシュ・セッション

🎯 選定でよく問われる対比 🎯

3.1(続き)コストとパフォーマンス・ライフサイクル管理

🔧 GCS ライフサイクル管理

オブジェクトの年齢や条件に応じて自動でクラス移行・削除するルール。コスト最適化の定番。

ライフサイクルルールの例: 作成から 30日経過 → Nearline へ移行 作成から 90日経過 → Coldline へ移行 作成から365日経過 → Archive へ移行 作成から 7年経過 → 削除(保持義務終了後)

🎯 アクセスパターン分析からの選定

アクセスパターン適した選択
書き込み多・1行更新・低レイテンシOLTP系(Cloud SQL/AlloyDB/Spanner/Firestore)
大量スキャン・集計・アドホック分析BigQuery
単純キーで超高スループット・ミリ秒Bigtable
めったに読まないが消せないGCS Coldline/Archive
頻繁な再読み込み・サブミリ秒Memorystore(キャッシュ層)
⚠️ ひっかけ「分析クエリが遅い」と言われてBigtableを足すのは誤り。分析はBigQueryへ。Bigtableはキー参照のための低レイテンシストア。

3.2 BigQuery設計のベストプラクティス 🔧🎯

🔧 非正規化とネスト/繰り返しフィールド

🔧 パーティション+クラスタリングの設計指針

状況設計
日付で範囲フィルタが多い日付/タイムスタンプでパーティション
取り込み日で区切りたい取り込み時刻パーティション(_PARTITIONTIME
特定列で頻繁に絞り込み/集計その列でクラスタリング(最大4列)
パーティション列候補が高カーディナリティで範囲も広い整数範囲パーティション or クラスタリング中心

🎯 マテリアライズドビュー / BI Engine(詳細はセクション4)

3.1(深掘り)Bigtable設計のベストプラクティス 🔧🎯

Bigtableは行キーで1次元にソートされて分散格納される。性能の良し悪しは行キー設計でほぼ決まる

🔧 行キー設計の原則

⚠️ アンチパターン:ホットスポット

アンチパターンなぜ悪い対策
行キー先頭がタイムスタンプ最新書き込みが1ノードに集中(ホット)先頭に識別子を置く/タイムスタンプを後ろへ
連番・単調増加IDを先頭同上(末尾ノードに集中)ハッシュ化・ソルティングで分散
連番の逆順タイムスタンプを単独先頭同上フィールドプロモーション等と組合せ

🎯 フィールドプロモーション(Field Promotion)

時系列のホットスポットを避ける定番手法。高カーディナリティな識別子を行キーの先頭に「昇格」させ、その後ろにタイムスタンプを置く。

悪い: 20260528T1200#sensorA ← 先頭が時刻 → 最新が1ノード集中(ホット) 良い: sensorA#20260528T1200 ← 先頭がセンサーID → 書き込みが分散 └ フィールドプロモーション(IDを先頭に昇格)+ 時系列は後置

🔧 SSD vs HDD・サイジング

選択特徴使いどころ
SSD低レイテンシ・高IOPS(推奨デフォルト)レイテンシ重視のオンライン参照
HDD大容量・低コスト・高レイテンシコールドな大容量バッチ・コスト優先

3.1(深掘り)Spanner設計のベストプラクティス 🎯

🎯 TrueTime と強整合

🎯 インターリーブ(Interleaving)

親テーブルの行に、関連する子テーブルの行を物理的に隣接配置する機能。

⚠️ Spannerのホットスポット回避

3.3 / 3.4 レイク・プラットフォームの設計判断 🔧🎯

🔧 BigLake の使いどころ

🔧 Dataplex によるレイク管理

🎯 データメッシュ × フェデレーテッドガバナンス

🎯 トレードオフ早見

トレードオフ一方他方
正規化 vs 非正規化整合性・更新容易(OLTP)読み取り高速(OLAP/BQ)
強整合 vs 結果整合正確(Spanner/RDB)高スループット・低レイテンシ(Bigtable)
SSD vs HDD(Bigtable)低レイテンシ大容量・低コスト
パーティション粒度 細 vs 粗スキャン削減断片化/上限のリスク
行キー 分散 vs 局所ホットスポット回避範囲スキャン効率
GCSクラス ホット vs コールド読み取り安い保存安い(取り出し高)
オンデマンド vs 容量予約散発向き大量・予測可能向き

🎯 統合シナリオ演習(考え方の練習)

シナリオ:グローバル展開するライドシェア企業 ① 世界中の決済・配車トランザクションは強整合で、無停止・水平スケールが必須。
② 車両から毎秒数百万件のGPSテレメトリが届き、ミリ秒で直近位置を引きたい。
③ 過去全データをアドホックにSQL分析してBIダッシュボードを出したい。
④ ドライバーがアップロードする本人確認書類の画像を保管(数年は保持、めったに参照しない)。
⑤ 取り込み生データはレイクにそのまま貯め、部門ごとに所有しつつ全社で統制・発見可能にしたい。

設計の骨子(解答例)

  1. グローバル強整合トランザクション → Spanner(TrueTime)。主キーはハッシュ化してホットスポット回避、顧客×注文はインターリーブ
  2. 大量GPSテレメトリ・ミリ秒参照 → Bigtable(SSD)。行キーは vehicleID#reversed_timestamp 等のフィールドプロモーションで書き込み分散。
  3. アドホック分析・BI → BigQuery日付パーティション+vehicleIDクラスタリング、非正規化+ネスト構造。BIはBI Engine/マテビューで高速化。
  4. 本人確認画像(コールド長期保管)→ Cloud Storage。ライフサイクルで Standard→Coldline/Archive、保持期間後に削除。
  5. 生データレイク(GCS)を BigLake でBQから細粒度統制しつつ分析、Dataplex/Catalogで論理ゾーン化・発見性確保、部門所有はデータメッシュ+フェデレーテッドガバナンス、共有はAnalytics Hub
💡 学習のコツこの「要件を軸でふるい分け、各サービスへ割り当てる」思考が本番のストレージ設計問題そのものです。
🎯 直前総ざらいこのセクションはストレージ選定が最頻出。下の早見表を白紙から再現できれば合格ラインです。

🔑 暗記必須テーブル

① ストレージ選定 早見表【最優先・丸暗記】

要件・キーワード選ぶサービス
非構造化・画像/動画/ログ・バックアップ・データレイクCloud Storage
大規模分析・BI・アドホックSQL・PB級集計BigQuery
一般的なRDB・Webアプリ・MySQL/PostgreSQL/SQL Server・リージョナルCloud SQL
PostgreSQL互換で高性能・トランザクション+分析(HTAP)AlloyDB
グローバル分散・水平スケール・強整合・無停止(99.999%)Spanner
時系列/IoT・ミリ秒応答・毎秒大量書き込み・キー参照・PB級Bigtable
モバイル/Web・リアルタイム同期・ドキュメントFirestore
キャッシュ・セッション・サブミリ秒(正本ではない)Memorystore
レイク(GCS/他クラウド)をBQから細粒度統制して分析BigLake

② Cloud Storage クラスとライフサイクル

クラスアクセス頻度最低保存期間一言
Standard頻繁なしホット・配信
Nearline月1回30日たまに参照・バックアップ
Coldline四半期1回90日アーカイブ
Archive年1回未満365日長期保管・コンプライアンス

保存料:Standard > … > Archive(Archiveが最安)/取り出し料:逆(Archiveが最高)。早期削除には早期削除料金。自動最適化は Autoclass

③ Bigtable / Spanner のホットスポット対策

DB手法ポイント
Bigtableフィールドプロモーション / ソルティング高カーディナリティな識別子を行キー先頭に、時刻は後置。SSD/HDD選択。作成後タイプ変更不可
Spannerハッシュ化主キー / キー分散単調増加キーを避ける。親子はインターリーブTrueTimeで強整合

✅ 一問一答(確認テスト)

Q1. グローバル規模で水平スケールしつつ、強整合のACIDトランザクションが必要なRDBは?

A. Cloud Spanner(TrueTimeでグローバル外部一貫性を実現)

Q2. 車両IoTから毎秒数百万件の書き込み、ミリ秒で直近値を読みたい。結果整合性で良い。最適なストレージは?

A. Bigtable(ワイドカラムNoSQL・低レイテンシ・高スループット)

Q3. PostgreSQL互換のまま高性能で、トランザクションと分析クエリの両方を同じDBで速く処理したい。選ぶのは?

A. AlloyDB(PostgreSQL互換のHTAP寄り。MySQL/SQL Serverなら Cloud SQL)

Q4. めったに読まないが法令で7年保持が必要な書類画像。最もコストが低い保存方法は?

A. Cloud Storage の Archive クラス(必要ならライフサイクルでStandard→Archive、保持後に削除)

Q5. BigQueryでクエリコストを下げたい。基本的な3つの打ち手は?

A. ①日付等でパーティション ②よく絞る列でクラスタリング ③必要な列だけSELECT(SELECT *回避)。いずれも「スキャン量削減」が狙い。

Q6. BigQueryで注文と注文明細を扱う。RDB流に正規化してJOINを多用すべき?

A. いいえ。非正規化し、明細はネスト/繰り返しフィールド(ARRAY<STRUCT>)で1行に畳み込むのがBigQuery流(JOIN削減)。

Q7. Bigtableで行キーの先頭にタイムスタンプを置いたら書き込みが遅い。原因と対策は?

A. 最新書き込みが単一ノードに集中するホットスポット。対策はフィールドプロモーション(高カーディナリティな識別子を先頭に昇格しタイムスタンプは後置)やソルティングで分散。

Q8. Spannerで主キーに単調増加するシーケンスを使ったら性能が出ない。なぜ?どうする?

A. キーが特定スプリットに集中しホットスポット化するため。UUID/ハッシュ化主キーやキー先頭のハッシュ化で均等分散する。親子テーブルはインターリーブでローカリティ向上。

Q9. モバイルアプリでオフライン対応とリアルタイム同期が必要なドキュメント型DBは?

A. Firestore

Q10. GCS上のParquetデータをコピーせず、BigQueryから列/行レベルのアクセス制御付きで分析したい。使うのは?

A. BigLake(BigLakeテーブルで細粒度のガバナンスを付与)

Q11. 散らばったGCS/BigQueryを論理的なレイク・ゾーンに束ね、横断で品質・セキュリティ・発見性を管理したい。サービスは?

A. Dataplex(メタデータの検索・発見は Dataplex Catalog)

Q12. 各部門がデータを「プロダクト」として所有しつつ、全社共通のルールで統制するモデルは?

A. データメッシュ(フェデレーテッドガバナンス)。GCPでは Dataplex+Catalog で横串、Analytics Hubで共有。

Q13. Webアプリのバックエンドで、リージョナルなMySQLのマネージドDBが欲しい。グローバル分散は不要。選ぶのは?

A. Cloud SQL(グローバル強整合・無停止スケールが要るなら Spanner)

Q14. データベースの前段に置いて、頻繁な読み取りをサブミリ秒で返すキャッシュ層が欲しい。使うのは?

A. Memorystore(Redis/Memcached)。永続的な正本ではなくキャッシュとして使う点に注意。

🎯 ひっかけ注意ポイント

  • Cloud SQL と Spanner の取り違え:「グローバル」「水平スケール」「99.999%」が出たら Spanner。リージョナルで足りるなら Cloud SQL。
  • AlloyDB は PostgreSQL 互換限定:MySQL/SQL Server の話なら Cloud SQL。
  • Bigtable に SQL 分析をやらせない:アドホックなJOIN/集計は BigQuery。「分析が遅いからBigtable追加」は誤り。
  • Bigtable/Spanner の行キー・主キーは単調増加を避ける:Bigtable=フィールドプロモーション、Spanner=ハッシュ化/インターリーブ。
  • BigQueryは大量UPDATE/DELETE向きではない:1行更新が中心なら OLTP(RDB)。
  • GCSクラスの最低保存期間:30日で上書きするデータをNearlineに置くと早期削除料金。短命データはStandard。
  • Memorystore を正本にしない:揮発しうるキャッシュ。
  • 「コピーせず分析・統制」=外部テーブルだけでなく BigLake(細粒度セキュリティ)/越境分析は BigQuery Omni。
  • BigQueryデータセットのロケーションは作成後変更不可。
  • 非正規化が基本:「正規化してJOINを増やせば速い」は誤誘導。

📝 セルフチェック

← 前:S2 取り込みと処理 問題集を解く(S3) 次:S4 分析準備 →