セクション3:データの保存
ストレージ選定とDWH/データレイク/データプラットフォーム設計を扱います。ストレージ選定は本試験の最頻出 。意思決定ツリーを丸暗記するのが合格の近道です。
出題 ~20%
🔑 TL;DR
ストレージは5軸(ワークロード/構造化度/スケール/整合性/レイテンシ) でふるい分ける。RDBは3種(Cloud SQL=リージョナル/AlloyDB=PostgreSQL高性能・分析併用/Spanner=グローバル強整合)、NoSQLは2種(Bigtable=大量低レイテンシ/Firestore=ドキュメント同期)。BigQueryは非正規化+ネスト 、コスト削減はパーティション+クラスタリング+必要列のみ 。横断ガバナンスはDataplex/BigLake 。
📘 基礎
🔧 応用
🎯 要点と暗記
3.0 全体像:まず「軸」を頭に入れる 📘
ストレージ選定は5つの軸 で考えます。この軸が試験のあらゆる選択問題の土台になります。
① ワークロード : OLTP(更新中心・1行処理) vs OLAP(分析中心・大量集計)
② 構造化の度合い : 構造化(表)/半構造化(JSON等)/非構造化(画像・動画)
③ スケール規模 : GB級 〜 TB級 〜 PB級
④ 整合性要件 : 強整合(ACID) vs 結果整合(最終的に整合)
⑤ レイテンシ要件 : ミリ秒応答が必須か/秒〜分でよいか
OLTP (Online Transaction Processing)=在庫更新・決済など、1件ずつ確実に書き込む処理。
OLAP (Online Analytical Processing)=売上集計・BIなど、大量行をスキャンして集計する処理。
💡 ポイント 試験は「最適なものを1つ 」選ばせる形式が大半。上の軸でふるい分けると、ほぼ一意に決まります。
3.1 ストレージシステムの選択:各サービスの役割
主要ストレージ早わかり
サービス 種別 ワークロード 整合性 キーワード
Cloud Storage (GCS) オブジェクトストレージ — 強整合(オブジェクト単位) 非構造化・データレイク・バックアップ
BigQuery DWH OLAP 強整合 サーバーレス分析・PB級・SQL
Cloud SQL リレーショナルDB OLTP 強整合(ACID) MySQL/PostgreSQL/SQL Server・リージョナル
AlloyDB リレーショナルDB OLTP+分析(HTAP) 強整合(ACID) PostgreSQL互換・高性能・分析も速い
Spanner 分散リレーショナルDB OLTP 強整合(ACID)・グローバル 水平スケール・無停止・TrueTime
Bigtable NoSQL(ワイドカラム) 大量書き込み/読み取り 結果整合(単一行は強整合) ミリ秒・時系列・IoT・PB級
Firestore NoSQL(ドキュメント) OLTP(ドキュメント) 強整合 モバイル/Web・リアルタイム同期
Memorystore インメモリ キャッシュ — Redis/Memcached・サブミリ秒
BigLake ストレージエンジン OLAP(レイク上) — GCS/他クラウドをBQから統一管理
⚠️ 注意 同じ「リレーショナル」でも Cloud SQL / AlloyDB / Spanner は別物。リージョナルか・グローバルか・分析併用かで分かれる(後述)。
① Cloud Storage(GCS)— 非構造化データの土台
オブジェクトストレージ 。ファイル(オブジェクト)をバケット に格納する。スキーマを持たず、画像・動画・ログ・Parquet/Avro など何でも置ける。
データレイクの実体 として最も使われる(生データの貯蔵庫)
容量無制限・高耐久(イレブンナイン=99.999999999%の年間耐久性)
パイプラインのステージング領域 やバックアップ先にも
ストレージクラス (アクセス頻度でコストが変わる。ライフサイクル管理と必ずセット):
クラス 想定アクセス頻度 最低保存期間 主な用途
Standard 頻繁(ホット) なし 稼働中データ・配信
Nearline 月1回程度 30日 バックアップ・たまに参照
Coldline 四半期に1回程度 90日 アーカイブ(年数回)
Archive 年1回未満(コールド) 365日 長期保管・コンプライアンス保存
⚠️ 注意 取り出し(読み取り)コストは Standard→Archive の順に高くなる 。保存料は逆に安くなる 。「めったに読まないが消せない」→ Coldline/Archive。
② BigQuery — サーバーレスなデータウェアハウス(OLAP)
フルマネージドのDWH 。サーバー管理不要で、ペタバイト級のデータに対しSQLで高速集計できる。ストレージとコンピュート(スロット)が分離 しているのが特徴。
分析・BI・レポーティングの中心
BigQuery ML(BQML) :SQLだけでML
ストリーミング挿入・連携(federated)クエリにも対応
課金は「オンデマンド(スキャン量)」または「容量ベース(Editions/スロット予約)」
💡 ポイント BigQueryは「書き込みを大量に更新する用途には不向き 」。1行ずつのUPDATE/DELETEを多用するならRDB(OLTP)を選ぶ。
③ Cloud SQL — マネージドな一般RDB(OLTP・リージョナル)
MySQL / PostgreSQL / SQL Server のマネージド版。ACIDトランザクションに対応したリージョナル なRDB。
Webアプリのバックエンド・中小規模のトランザクション
高可用性(HA)構成・リードレプリカ・自動バックアップ
⚠️ リージョン単位 。グローバル分散や無制限の水平スケールは不可 → それが必要なら Spanner
④ AlloyDB — 高性能なPostgreSQL互換(OLTP+分析)
PostgreSQL互換 で、Cloud SQLより高性能。トランザクション(OLTP)と分析クエリの両方が速いHTAP 寄りのDB。
「PostgreSQLのまま、もっと速く、分析も同じDBで」というニーズ
カラムナエンジンを内蔵し、分析クエリを高速化
⚠️ あくまでPostgreSQL互換 。MySQL/SQL Serverは対象外(それは Cloud SQL)
⑤ Spanner — グローバル分散・強整合のRDB
水平スケール しながら強整合のACIDトランザクション をグローバル に提供する唯一のRDB。TrueTime (GPS+原子時計による高精度な時刻同期)で世界規模の一貫性を実現。
グローバル展開・無停止(99.999%)・大規模トランザクションが必要なミッションクリティカル系
例:グローバルな金融・在庫・ゲームのバックエンド
⚠️ 高機能ゆえコストは高め。「リージョナルで十分」なら Cloud SQL/AlloyDB
⑥ Bigtable — 低レイテンシ・高スループットのNoSQL
ワイドカラム型のNoSQL 。ミリ秒のレイテンシで、毎秒数百万件規模の読み書きにスケールする。HBase API互換 。
時系列・IoT・金融ティック・アドテク・モニタリングなど、大量・高速・単純キー参照
行キー(Row Key)で1次元にソート されて格納される(行キー設計が超重要)
ストレージは SSD(低レイテンシ)/ HDD(大容量・低コスト) を選択
⚠️ SQLは限定的 で複雑なJOIN/集計は不向き。それは BigQuery。単一行は強整合だが、結合トランザクションのACIDは不可。
⑦ Firestore — ドキュメント型NoSQL(モバイル/Web向け)
ドキュメント(JSON的)指向のNoSQL 。スケーラブルで、モバイル/Webクライアントとのリアルタイム同期・オフライン対応 が強み。
モバイルアプリ・チャット・リアルタイムコラボのバックエンド
強整合・自動スケール・SDKでクライアント直結
⚠️ 大量の時系列・分析用途ではない(それは Bigtable / BigQuery)
⑧ Memorystore — インメモリのキャッシュ
マネージドな Redis / Memcached 。サブミリ秒の超低レイテンシ。
キャッシュ・セッション管理・ランキング・レート制限
⚠️ 永続的なシステム・オブ・レコード(正本)ではない 。あくまで前段のキャッシュ。
⑨ BigLake — レイクとウェアハウスを橋渡し
GCSや他クラウド上のデータ を、BigQueryから統一的に(細粒度アクセス制御付きで) 扱えるようにするストレージエンジン。
データレイク(GCS/オープンフォーマット)に対し、BigQuery級のガバナンスを適用
オープンフォーマット(Parquet/ORC/Avro/Iceberg)でロックインを回避
⚠️ 「データをコピーせずレイクのまま分析・統制」が狙い(3.3/3.4で深掘り)
3.2 データウェアハウスの利用計画(BigQuery設計の基礎)
DWHは「分析しやすい形 」にデータを整えて保管する。OLTPのRDBとは設計思想が逆になる点が重要です。
正規化 vs 非正規化
正規化 (Normalized) 非正規化 (Denormalized)
狙い 冗長排除・更新の整合性 読み取り(分析)の高速化
JOIN 多い 少ない(事前に結合済み)
向く処理 OLTP(Cloud SQL等) OLAP(BigQuery)
BigQueryは非正規化が基本 。JOINを減らし、1テーブルにまとめる方がスキャン効率が良い。
ただし無闇な平坦化ではなく、ネスト/繰り返しフィールド(STRUCT/ARRAY) で「繰り返す情報」を1行に畳み込むのがBigQuery流。
正規化(RDB流) BigQuery流(ネスト構造)
orders ── order_items orders
│ JOINが必要 ├─ order_id
└─ 1:N └─ items: ARRAY<STRUCT<sku, qty, price>>
(1行に注文明細を内包=JOIN不要)
パーティションとクラスタリング(コスト・性能の要)
機能 何をする 効果
パーティション テーブルを日付/取り込み時刻/整数範囲で物理分割 不要な区画をスキャンせずスキャン量=コスト削減 (プルーニング)
クラスタリング 指定列の値で並べ替えて格納 フィルタ/集計対象を絞り込み、I/Oをさらに削減
パーティション例:WHERE date BETWEEN ... で、その日付の区画だけ読む。
クラスタリング例:customer_id でクラスタ化し、特定顧客の検索を高速化。
両方を併用 するのが定石(まず日付でパーティション → よく絞る列でクラスタ)。
スロット(Slot)
BigQueryのクエリを実行する仮想CPUの計算単位 。クエリは複数スロットで並列処理される。
オンデマンド :スキャンしたバイト量で課金(スロットは自動割り当て)。
容量ベース(Editions/予約) :スロットを確保して定額化(大量・予測可能なワークロード向け)。詳細はセクション5。
🔑 試験ポイント BigQueryでコストを下げる =「スキャン量を減らす」=パーティション+クラスタリング+必要な列だけSELECT (SELECT * を避ける)。
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 :分散した GCS / BigQuery のデータを、物理的に動かさずに論理的な「レイク」「ゾーン」「アセット」 として束ね、横断的にガバナンス・品質・セキュリティを適用する。
Dataplex Catalog :組織全体のメタデータを集約したカタログ 。データの検索・発見・タグ付け・系統(lineage)管理を担う。
Dataplex(論理的なデータ管理レイヤ)
└── レイク(例:販売ドメイン)
├── ゾーン: raw(生データゾーン / GCS)
└── ゾーン: curated(整形済みゾーン / BigQuery)
└── アセット(実体のバケット/データセット)
データメッシュとフェデレーテッドガバナンス
データメッシュ :データを中央集権で持たず、各ドメイン(部門)がデータを「プロダクト」として所有・公開 する分散型の考え方。
フェデレーテッドガバナンス :分散所有でも共通のルール(命名・品質・セキュリティ・相互運用)を全体で守る 統制モデル。Dataplex+Catalogがこれを支える。
💡 イメージ 各部門が自分のデータに責任を持ちつつ(自律)、組織共通のガバナンスは 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 ファイル/レイク 強整合(オブジェクト) 無制限 中 × 非構造化・バックアップ・ステージング
BigQuery OLAP 強整合 PB級 秒(分析) ◎ 大規模分析・BI・BQML
Cloud SQL OLTP 強整合(ACID) リージョナル/垂直 低 ◎ Webアプリ・中小トランザクション
AlloyDB OLTP+分析 強整合(ACID) リージョナル(高性能) 低 ◎(PG) PostgreSQL高負荷・HTAP
Spanner OLTP 強整合(ACID)・グローバル 水平・無制限 低 ◎ グローバル金融/在庫・無停止
Bigtable 大量読み書き 結果整合(単一行は強整合) PB級・水平 ミリ秒 ×(限定) 時系列・IoT・アドテク
Firestore OLTP(ドキュメント) 強整合 自動・水平 低 ×(独自) モバイル/Web・同期
Memorystore キャッシュ — メモリ依存 サブミリ秒 × キャッシュ・セッション
🎯 選定でよく問われる対比 🎯
Cloud SQL vs Spanner :リージョナルで足りる→Cloud SQL/グローバル強整合・無停止スケール→Spanner。「グローバル」「水平スケール」「99.999%」が出たらSpanner。
Bigtable vs BigQuery :ミリ秒のキー参照・大量書き込み→Bigtable/アドホックなSQL分析→BigQuery。同じ「大規模」でも用途が逆。
Bigtable vs Cloud SQL/Spanner :ACIDの複数行トランザクションが要る→RDB/単純キーで超高スループット→Bigtable。
Firestore vs Bigtable :ドキュメント+モバイル同期→Firestore/時系列・ワイドカラム→Bigtable。
Memorystore は正本にしない :永続データの保管先ではなく、前段のキャッシュ。
3.1(続き)コストとパフォーマンス・ライフサイクル管理
🔧 GCS ライフサイクル管理
オブジェクトの年齢や条件に応じて自動でクラス移行・削除 するルール。コスト最適化の定番。
ライフサイクルルールの例:
作成から 30日経過 → Nearline へ移行
作成から 90日経過 → Coldline へ移行
作成から365日経過 → Archive へ移行
作成から 7年経過 → 削除(保持義務終了後)
⚠️ クラスには最低保存期間 があり、早期削除/移行には早期削除料金 が発生(Nearline 30日 / Coldline 90日 / Archive 365日)。「30日で大量に上書きするデータをNearlineに」はアンチパターン。
Autoclass :アクセスパターンを自動学習してクラスを自動最適化。手動ルール設計を避けたい場合に有効。
🎯 アクセスパターン分析からの選定
アクセスパターン 適した選択
書き込み多・1行更新・低レイテンシ OLTP系(Cloud SQL/AlloyDB/Spanner/Firestore)
大量スキャン・集計・アドホック分析 BigQuery
単純キーで超高スループット・ミリ秒 Bigtable
めったに読まないが消せない GCS Coldline/Archive
頻繁な再読み込み・サブミリ秒 Memorystore(キャッシュ層)
⚠️ ひっかけ 「分析クエリが遅い」と言われてBigtableを足す のは誤り。分析はBigQueryへ。Bigtableはキー参照のための低レイテンシストア。
3.2 BigQuery設計のベストプラクティス 🔧 🎯
🔧 非正規化とネスト/繰り返しフィールド
JOINを減らす ためにネスト(STRUCT)・繰り返し(ARRAY)で1行に畳み込む。
巨大ファクト×小ディメンションは、ディメンションをネストして埋め込む か、小さければJOINでも可。
⚠️ 「正規化してJOINを増やせば速くなる」はRDBの発想 。BigQueryでは逆効果のことが多い。
🔧 パーティション+クラスタリングの設計指針
状況 設計
日付で範囲フィルタが多い 日付/タイムスタンプでパーティション
取り込み日で区切りたい 取り込み時刻パーティション(_PARTITIONTIME)
特定列で頻繁に絞り込み/集計 その列でクラスタリング (最大4列)
パーティション列候補が高カーディナリティで範囲も広い 整数範囲パーティション or クラスタリング中心
コスト削減の本丸 =スキャン量削減:パーティションプルーニング+クラスタリング+必要列のみSELECT。
⚠️ パーティションの粒度が細かすぎるとパーティション数上限 や小さすぎる断片で非効率。日次が基本、超大量なら時間単位も。
⚠️ クエリでパーティション列に関数をかける とプルーニングが効かないことがある(例:DATE(timestamp_col) でフィルタする設計に注意)。
🎯 マテリアライズドビュー / BI Engine(詳細はセクション4)
繰り返す重い集計はマテリアライズドビュー で事前計算(自動リフレッシュ)。
BIダッシュボードの低レイテンシ化は BI Engine (インメモリ)。
⚠️ 「BIが遅い」→ まずマテビュー/BI Engine、SELECT *回避、パーティション/クラスタ見直し。
3.1(深掘り)Bigtable設計のベストプラクティス 🔧 🎯
Bigtableは行キーで1次元にソートされて分散格納 される。性能の良し悪しは行キー設計でほぼ決まる 。
🔧 行キー設計の原則
読み取りパターンに合わせて設計 する(よく一緒に読む行を近くに並べる)。
連続スキャン(範囲読み取り)したい単位でプレフィックスを揃える 。
書き込みを多数のノードに分散 させ、ホットスポット(一部ノードへの集中)を避ける。
⚠️ アンチパターン:ホットスポット
アンチパターン なぜ悪い 対策
行キー先頭がタイムスタンプ 最新書き込みが1ノードに集中 (ホット) 先頭に識別子を置く/タイムスタンプを後ろへ
連番・単調増加ID を先頭同上(末尾ノードに集中) ハッシュ化・ソルティングで分散
連番の逆順タイムスタンプ を単独先頭 同上 フィールドプロモーション等と組合せ
🎯 フィールドプロモーション(Field Promotion)
時系列のホットスポットを避ける定番手法。高カーディナリティな識別子を行キーの先頭に「昇格」 させ、その後ろにタイムスタンプを置く。
悪い: 20260528T1200#sensorA ← 先頭が時刻 → 最新が1ノード集中(ホット)
良い: sensorA#20260528T1200 ← 先頭がセンサーID → 書き込みが分散
└ フィールドプロモーション(IDを先頭に昇格)+ 時系列は後置
識別子が少数で偏る場合はソルティング (ハッシュ接頭辞)で更に分散。
⚠️ ただし分散しすぎると範囲スキャンが非効率 になるトレードオフ。読み取り単位とのバランスを取る。
🔧 SSD vs HDD・サイジング
選択 特徴 使いどころ
SSD 低レイテンシ・高IOPS(推奨デフォルト) レイテンシ重視のオンライン参照
HDD 大容量・低コスト・高レイテンシ コールドな大容量バッチ・コスト優先
スループットが足りなければノード追加 でほぼ線形にスケール(CPU使用率を指標に)。
⚠️ ストレージタイプ(SSD/HDD)はインスタンス作成後に変更不可 。
3.1(深掘り)Spanner設計のベストプラクティス 🎯
🎯 TrueTime と強整合
TrueTime =GPSと原子時計で各ノードの時刻誤差を有界化する仕組み。これによりグローバルに外部一貫性(強整合) を実現。
「世界中で強整合なトランザクション」が出たら Spanner一択 。
🎯 インターリーブ(Interleaving)
親テーブルの行に、関連する子テーブルの行を物理的に隣接配置 する機能。
親子を一緒に読む(例:顧客と注文)クエリのJOINを高速化 し、ローカリティを高める。
⚠️ Bigtableの「フィールドプロモーション」とは別概念。Spannerはインターリーブ で覚える。
⚠️ Spannerのホットスポット回避
単調増加する主キー(連番・タイムスタンプ)は避ける (特定スプリットに集中)。
対策:UUID/ハッシュ化主キー 、またはキーの先頭バイトをハッシュ して分散(ビット反転連番など)。
設計の合言葉は「キーを均等に分散させる 」。RDBでありながらBigtable同様にホットスポットを意識する点が頻出。
3.3 / 3.4 レイク・プラットフォームの設計判断 🔧 🎯
🔧 BigLake の使いどころ
GCSや他クラウドのオブジェクトをコピーせず 、BigQueryのSQL・行/列レベルのアクセス制御 で統制したい。
オープンフォーマット(Parquet/Iceberg)でロックイン回避+細粒度ガバナンス を両立。
⚠️ 「外部テーブル」だけでは細粒度のセキュリティが弱い → BigLakeテーブル にすると列/行レベル制御が可能。
🔧 Dataplex によるレイク管理
物理的に散らばったGCS/BigQueryを論理レイク/ゾーン に整理し、横断で品質・セキュリティ・発見性を適用。
Dataplex Catalog でメタデータを集約し、ディスカバリと系統(lineage)を提供 → データスワンプ化を防止 。
🎯 データメッシュ × フェデレーテッドガバナンス
各ドメイン(部門)がデータプロダクトを所有 (自律・スケール)。
一方で共通ルール(命名・品質・セキュリティ・相互運用)を全体に強制 (統制)。
GCPでの実装:ドメインごとのプロジェクト/データセット+Dataplex で横串ガバナンス+Analytics Hub で安全に共有。
⚠️ 「中央チームが全データを抱える」設計はスケールしない → 分散所有+フェデレーテッドガバナンス が現代的な解答。
🎯 トレードオフ早見
トレードオフ 一方 他方
正規化 vs 非正規化 整合性・更新容易(OLTP) 読み取り高速(OLAP/BQ)
強整合 vs 結果整合 正確(Spanner/RDB) 高スループット・低レイテンシ(Bigtable)
SSD vs HDD(Bigtable) 低レイテンシ 大容量・低コスト
パーティション粒度 細 vs 粗 スキャン削減 断片化/上限のリスク
行キー 分散 vs 局所 ホットスポット回避 範囲スキャン効率
GCSクラス ホット vs コールド 読み取り安い 保存安い(取り出し高)
オンデマンド vs 容量予約 散発向き 大量・予測可能向き
🎯 統合シナリオ演習(考え方の練習)
シナリオ:グローバル展開するライドシェア企業
① 世界中の決済・配車トランザクションは強整合 で、無停止・水平スケールが必須。
② 車両から毎秒数百万件のGPSテレメトリ が届き、ミリ秒で直近位置を引きたい。
③ 過去全データをアドホックにSQL分析 してBIダッシュボードを出したい。
④ ドライバーがアップロードする本人確認書類の画像 を保管(数年は保持、めったに参照しない)。
⑤ 取り込み生データはレイクにそのまま 貯め、部門ごとに所有しつつ全社で統制・発見可能にしたい。
設計の骨子(解答例)
グローバル強整合トランザクション → Spanner (TrueTime)。主キーはハッシュ化してホットスポット回避、顧客×注文はインターリーブ 。
大量GPSテレメトリ・ミリ秒参照 → Bigtable (SSD)。行キーは vehicleID#reversed_timestamp 等のフィールドプロモーション で書き込み分散。
アドホック分析・BI → BigQuery 。日付パーティション+vehicleIDクラスタリング 、非正規化+ネスト構造。BIはBI Engine/マテビュー で高速化。
本人確認画像(コールド長期保管)→ Cloud Storage 。ライフサイクルで Standard→Coldline/Archive、保持期間後に削除。
生データレイク(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は?
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を増やせば速い」は誤誘導。
📝 セルフチェック
ストレージ選定早見表を白紙から再現できる
意思決定ツリー(構造化度→OLAP/OLTP→モデル→分散/整合性)を説明できる
Bigtableのホットスポット対策(フィールドプロモーション/ソルティング)を図で描ける
BigQueryのコスト削減3点(パーティション/クラスタリング/必要列のみ)を即答できる
GCSの4クラスと最低保存期間を言える
問題集セクション3 で80%以上取れた