Google Cloud Platform(GCP)のストレージサービスは、第3回で取り上げた、仮想マシンの永続ディスクに加え、「Google Cloud Storage」がある。データベース(DB)のサービスとしては、「Google Cloud Bigtable」「Google Cloud Datastore」「Google Cloud Memorystore for Redis(以下、Cloud Memorystore)」「Google Cloud SQL」「Google Cloud Spanner」の5種がある(表1)。
サービス | Google Cloud Storage | Google Cloud Bigtable | Google Cloud Datastore | Google Cloud Memorystore | Google Cloud SQL | Google Cloud Spanner |
---|---|---|---|---|---|---|
概要 | オブジェクトストレージ | カラム型DB | ドキュメント指向DB | インメモリー型KVS | RDB | グローバルで水平スケーリング機能を備えたRDB |
用途 | 画像、写真、動画/非構造化データ/バックアップ | 低レイテンシーアクセス/高スループット解析 | Key-Valueデータ/App Engineアプリケーションのデータストアー | Key-Valueデータ/キャッシング/Webアプリケーションのセッション管理 | 構造化データ/OLTPトランザクション | 高トランザクション(OLTP)/高い拡張性要件・グローバルトランザクション |
最初に、仮想マシンの永続ディスクを除いて、これらのサービスを簡単に説明する。
Cloud Storageは、Amazon S3相当のオブジェクトストレージである。S3との違いは、独自のCDN(Content Delivery Network)機能(AWSのCloudFront相当)を備えていることだ。
データベースのサービス、Cloud Memorystore、Cloud Bigtable、Cloud DatastoreはいずれもNoSQLデータベースに分類される。インメモリーデータベースのCloud Memorystore、性能重視のCloud Bigtable、使いやすい機能を備えたCloud Datastoreと考えればよい。
NoSQLデータベースのサービスをもう少し解説すると、Cloud MemorystoreはインメモリーデータベースであるRedisをマネージドサービス化したサービスである。基本的にすべてのデータがメモリー上に保持されるため、性能要件の厳しいアプリケーションのバックエンドやキャッシュとして利用できる。
Cloud BigtableはGoogle検索サービスなどで使われているデータベースで、高い応答性能やスケーラビリティーを求めるシステムに適している。半面、一般的なWebアプリケーションで利用するにはハードルが高い面がある。
そこで、Cloud Bigtableをベースに、SQLライクな問い合わせや、ACID(原子性、一貫性、独立性、耐久性)が保証されるトランザクション処理などの機能を備えたのがCloud Datastoreである。JavaやPythonのオブジェクトを永続化する機能を備えたドキュメント指向DBと位置付けられる。
Cloud SQLとCloud Spannerはどちらもリレーショナルデータベース(RDB)に分類される。MySQLやPostgreSQLをサービス化したものがCloud SQLで、大規模向けにグローバルな水平スケーリング機能などを備えたのがCloud Spannerである。
ストレージ/DBサービスの使い分け
これらのストレージ/DBサービスをどのように使い分けたらよいのか。
ストレージ/DBサービスの使い分けについては、データウエアハウスのサービスBigQuery(BigQueryについては別の回で取り上げる)も対象に加えて、GCPの公式サイトにフローチャートが掲載されている。これをベースに、筆者らの経験に基づく使い分け指針を解説する(図1)。
選択の観点は「構造化データ」「データ解析」「低レイテンシー」「リレーショナルデータベース」「高拡張性」の五つである。