全4726文字
PR

 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)。

表1●GCPのストレージ/データベースサービス
サービス 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)。

図1●ストレージ/DBサービスの選択フロー
図1●ストレージ/DBサービスの選択フロー
出所:Googleの資料(https://cloud.google.com/storage-options/?hl=ja)を基に筆者が追加・修正
[画像のクリックで拡大表示]

 選択の観点は「構造化データ」「データ解析」「低レイテンシー」「リレーショナルデータベース」「高拡張性」の五つである。