【正解】C
【0からの解説】
①前提知識
・AlloyDB for PostgreSQL: PostgreSQL と互換性のあるフルマネージド データベースです。標準の PostgreSQL に加えて、適応型の自動 VACUUM(adaptive autovacuum)や自動メモリ管理など、従来 DBA が手作業で行っていたチューニングを自動化する機能を備えています。さらにカラム型エンジンにより、同じデータベース上で分析クエリを高速に実行できます(HTAP)。PostgreSQL 互換なので、既存のスキーマや SQL、ドライバをほぼそのまま利用できます。
・Cloud SQL for PostgreSQL: マネージドな PostgreSQL ですが、VACUUM の設定やメモリ関連のフラグのチューニングは基本的に利用者側で行います。分析専用の高速化機能(列指向エンジン)は持ちません。
・Spanner + PGAdapter: Spanner は水平スケールする分散データベースで、PostgreSQL インターフェースと PGAdapter により PostgreSQL ドライバから接続できますが、PostgreSQL と完全互換ではありません。
②要件と制約の整理
・VACUUM やメモリのチューニングなどのメンテナンス作業の管理オーバーヘッドを削減したい。
・分析のユースケースを同じデータベースに導入したい。
・スキーマとアプリケーションの変更を最小限にしたい(PostgreSQL 互換が必要)。
③正解が要件を満たす理由
AlloyDB は PostgreSQL 互換のため変更を最小限に移行でき、適応型自動 VACUUM と自動メモリ管理によりメンテナンスの手間を減らせます。さらにカラム型エンジンで分析クエリを OLTP と同じデータベース上で効率的に実行できるため、3 つの要件をすべて満たします。
【誤りの選択肢】
A:Spanner の PostgreSQL インターフェースは PostgreSQL の機能の一部のみをサポートしており、データ型や関数、拡張機能、主キーの設計(ホットスポット回避)などでスキーマとアプリケーションの変更が必要になることが多く、「変更を最小限」という要件に反します。
B:Cloud SQL for PostgreSQL は PostgreSQL 互換で移行は容易ですが、VACUUM やメモリのチューニングは利用者が引き続き管理する必要があり、分析を高速化する列指向エンジンもありません。メンテナンス負荷の削減と分析ユースケースの両面で AlloyDB に劣ります。
D:Compute Engine 上のセルフマネージド PostgreSQL では、OS やデータベースのパッチ適用、バックアップ、高可用性、VACUUM、メモリ チューニングなどをすべて自分で行う必要があり、管理オーバーヘッドを削減するという要件と正反対です。
【参考】
AlloyDB の概要 | AlloyDB for PostgreSQLAlloyDB のカラム型エンジンについて | AlloyDB for PostgreSQL