サービスを選ぶ
ストレージとデータベースの選び方
データの形 (オブジェクト、ファイル、ブロック、テーブル、ドキュメント、キーと値) で候補を絞り、規模と一貫性の要件で 1 つに決めます。リレーショナルなら Cloud SQL から始め、性能が足りなければ AlloyDB、グローバルに強い一貫性が要るなら Spanner へ進みます。
置き場は、まずデータの形で候補を 2〜3 個に絞り、次に規模と一貫性で 1 つに決めます。問題文の「グローバルに強い整合性」「時系列を毎秒数百万件」「SQL で分析」のような語が答えを示します。
判断の順序
- 画像、動画、ログ、バックアップのように、ファイルを丸ごと置いて丸ごと取り出すか。はいなら Cloud Storage。
- 複数の VM から NFS で同じファイルを共有するか。はいなら Filestore。1 台の VM のディスクなら Persistent Disk か Hyperdisk。
- 大量のデータを SQL で集計、分析するか。はいなら BigQuery。
- トランザクションと SQL が要るアプリのデータか。はいなら Cloud SQL。PostgreSQL で性能や分析の速さが足りなければ AlloyDB。複数リージョンにまたがる書き込みや、1 台に収まらない規模なら Spanner。
- スキーマが柔軟なドキュメントを、モバイルや Web のアプリから直接読み書きするか。はいなら Firestore。
- 時系列や IoT のように、キーで引く大量のデータを高いスループットで書き込むか。はいなら Bigtable。
- ミリ秒未満で返したいキャッシュやセッションの置き場か。はいなら Memorystore。
SLA はストックホルムのリージョンを除いた値です。
| サービス | 向く要件 | SLA の例 |
|---|---|---|
| Cloud Storage | 画像、動画、バックアップ、データレイク | Standard でリージョン 99.9%、マルチリージョン 99.95% |
| Cloud SQL | 一般的な Web アプリの DB | HA 構成で Enterprise Plus 99.99%、Enterprise 99.95% |
| AlloyDB | 高負荷の PostgreSQL、取引と分析の同居 | HA 構成で 99.99% |
| Spanner | グローバルな取引、在庫、金融 | マルチリージョン 99.999%、リージョン 99.99% |
| Firestore | モバイル、Web アプリのデータ | マルチリージョン 99.999%、リージョン 99.99% |
| Bigtable | 時系列、IoT、広告、大量の書き込み | 構成により 99.9%〜99.999% |
出典は Cloud Storage、Cloud SQL、AlloyDB、Spanner、Firestore、Bigtable です。
Cloud Storage のクラスは取り出す頻度で選ぶ
Cloud Storage はファイルをオブジェクトとしてバケットに置き、容量を事前に決めません。ストレージクラスはどれもミリ秒単位で読み出せ、違うのは料金の構造です。保管料が安いクラスほど最低保存期間と取り出し料があり、最低保存期間より前に消すと残りの期間分の保管料がかかります。
| クラス | 最低保存期間 | 公式の目安 |
|---|---|---|
| Standard | なし | 頻繁に読むデータ、配信するコンテンツ |
| Nearline | 30 日 | 月に 1 回程度読むバックアップ |
| Coldline | 90 日 | 四半期に 1 回程度読むデータ |
| Archive | 365 日 | 年に 1 回も読まない法定保存、DR 用の写し |
金額は料金ページの東京のリージョンの値です (2026 年 10 月 30 日確認)。実際の安さは保管料と取り出し料の合計で決まるので、シミュレーターで比べてください。頻度が読めないデータには、アクセスに応じてクラスを自動で切り替える Autoclass を使えます。
- 「ログは 30 日後に Coldline へ、1 年後に削除」は、ライフサイクルルールで作成からの日数を条件にして、スクリプトなしで実現します。
- 「改ざんできない形で 7 年保存」は、保持ポリシー (最長 100 年) をかけてロックします。ロックすると取り外すことも期間を短くすることもできません。オブジェクトごとに期間を決めるなら Object Retention Lock です。
VM のディスクと共有ファイル
Hyperdisk は容量とは別に IOPS とスループットを決められ、使用中に性能だけを変えられます。Balanced (汎用)、Extreme (最高の IOPS)、Throughput (帯域重視)、ML (多数の VM で読み取り共有) があります。Hyperdisk Balanced High Availability は 2 つのゾーンに同期で複製するので、ゾーン障害のときに別のゾーンの VM へ付け替えられます。
複数の VM や Pod で同じファイルを読み書きするなら Filestore です。Cloud Storage はファイルシステムではないので、ファイルの一部の書き換えやロックを前提にしたアプリには向きません。
リレーショナルは Cloud SQL から
Cloud SQL は MySQL、PostgreSQL、SQL Server のマネージドサービスでです。HA 構成では別のゾーンに待機のインスタンスが置かれ、単一ゾーンのインスタンスは SLA の対象外です。
AlloyDB for PostgreSQL は、コンピュートとストレージを分けてスケールさせる PostgreSQL 互換の DB です。カラム型エンジンにより、取引の DB に分析のクエリを投げても速く返ります。
Spanner は複数のリージョンにまたがって水平にスケールし、強い整合性のトランザクションを提供します。グローバル、水平スケール、強い整合性のどれも要件にないなら、費用が見合わないので Cloud SQL です。
NoSQL、キャッシュ、分析
Firestore は JSON に近いドキュメントを持つサーバーレスの DB で、モバイルや Web から SDK で直接読み書きし、変更をリアルタイムに受け取れます。MongoDB 互換の API も使えます。Bigtable は行キーで引くワイドカラム型で、メトリクスや電力メーターの記録のような時系列に向き、HBase の移行先にもなります。表をまたぐ結合には向きません。データを書くのがアプリのユーザーなら Firestore、機械が大量に書くなら Bigtable です。
Memorystore は Valkey、Redis、Redis Cluster のマネージドサービスで、DB の前のキャッシュやセッションの共有に使います。Memcached 版は非推奨です。BigQuery は SQL で分析するデータウェアハウスで、取引の DB には使いません。データの流し込み方はデータ処理と分析で扱います。
試してみる
Cloud Storage のバケットを作り、30 日後に Coldline へ移し、365 日後に削除するライフサイクルルールを設定します。バケット名は世界で一意にする必要があるので、末尾にプロジェクト ID を付けます。
export BUCKET=gs://lifecycle-demo-$(gcloud config get-value project)
gcloud storage buckets create $BUCKET --location=asia-northeast1
cat > lifecycle.json <<'EOF'
{
"rule": [
{"action": {"type": "SetStorageClass", "storageClass": "COLDLINE"}, "condition": {"age": 30}},
{"action": {"type": "Delete"}, "condition": {"age": 365}}
]
}
EOF
gcloud storage buckets update $BUCKET --lifecycle-file=lifecycle.json
gcloud storage buckets describe $BUCKET --format='default(lifecycle_config)'
コンソールの「ライフサイクル」のタブに 2 つのルールが出ることを確かめたら、削除します。
gcloud storage rm --recursive $BUCKET
rm lifecycle.json
試験で問われる判断
以下は、このカリキュラム用に作った例です。
「世界中の店舗の在庫を 1 つの DB で管理し、どの店舗から見ても常に最新の在庫数を返したい」。答えは Spanner のマルチリージョン構成です。
「1 万台のセンサーの値を毎秒受け、機器 ID で引いて表示する」。答えは Bigtable です。「過去 3 年分を SQL で集計」が加わったら、BigQuery への取り込みを足します。
「監査ログを 7 年間、誰にも削除できない形で保存する。読むのは監査のときだけ」。答えは Archive クラスのバケットに保持ポリシーをかけ、ロックする構成です。
「PostgreSQL のアプリで、夜間の集計が取引の処理を遅くしている」。答えは AlloyDB です。
次のページでは、置き場のあいだでデータを動かし、加工します。