GCPのストレージサービスは、前回取り上げた、仮想マシンの永続ディスクに加え、「Google Cloud Storage(以下、Cloud Storage)」がある。データベース(DB)のサービスとしては、「Google Cloud Bigtable(以下、Cloud Bigtable)」「Google Cloud Datastore(以下、Cloud Datastore)」「Google Cloud SQL(以下、Cloud SQL)」「Google Cloud Spanner(以下、Cloud Spanner)」の4種がある(表1)。

表1 GCPのストレージ/データベースサービス
[画像のクリックで拡大表示]

 最初に、仮想マシンの永続ディスクを除いて、これらのサービスを簡単に説明する。

 Cloud Storageは、Amazon S3相当のオブジェクトストレージである。S3との違いは、独自のCDN(Content Delivery Network)機能(AWSのCloudFront相当)を備えていることだ。

 データベースのサービス、Cloud BigtableとCloud DatastoreはどちらもNoSQLデータベースに分類される。性能重視のCloud Bigtable、使いやすい機能を備えたCloud Datastoreと考えればよい。

 Cloud BigtableはGoogle検索サービスなどで使われているDBで、高い応答性能やスケーラビリティーを求めるシステムに適している。半面、一般的な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サービスの選択フロー
[画像のクリックで拡大表示]

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

 構造化データ

 格納するデータが画像データやテキストファイルなど、構造化されていない場合はCloud Storageが唯一の選択肢となる。Cloud Storageは99.999999999%(イレブンナイン)の耐久性(1年間にわたって保持される確率)を実現するように設計された容量無制限のストレージサービスで、使い勝手が良い。

 システム内・システム間でのデータの受け渡しや、アプリケーションの配布など、データの保存以外でも多く利用される。

 データ解析

 大きなサイズのデータを保管し、データ解析用途で利用する場合には、Cloud BigtableとBigQueryが候補となる。両サービスともPB(ペタバイト)クラスまで拡張でき、高い検索性能を持っている。

 低レイテンシー

 Cloud BigtableとBigQueryの最大の違いはレイテンシーにある。Cloud Bigtableは同一リージョン内にあるCompute Engineインスタンスからのリクエストであれば、10ミリ秒以内に応答できる。単純なクエリーしか処理できないが、高い応答性能が求められるリアルタイム解析用途ではCloud Bigtableが候補となる。

 ミリ秒単位での応答を必要としない準リアルタイム解析、またはバッチ処理によるデータ解析用途ではBigQueryの採用を推奨する。Cloud Bigtableと異なり、比較的複雑なクエリーを処理できるので使い勝手が良い。

 リレーショナルデータベース(RDB)

 Cloud DatastoreはSQLライクな問い合わせとACIDトランザクション処理をサポートしているが、構造はRDBとは異なり、複数テーブルの結合など複雑なクエリーには対応しない。データストアーとしてRDBが必要となる場合は、Cloud SQLとCloud Spannerが候補となる。

 Cloud Datastoreは、サービス規模が拡大しても自動的にスケールし、処理速度が変化しない。Cloud SQLやCloud Spannerと比較して廉価なので、必ずしもRDBを必要としないケースでは、Cloud Datastoreの検討を推奨する。

 高拡張性

 Cloud SQLには処理負荷に応じてインスタンス数を変更する機能(水平スケーリング)がない。そのため、Read性能が不足した際はリードレプリカによるスケールアウト、Write性能が不足した際はリソースを拡張するスケールアップが必要となる。

 一方、Cloud Spannerは大規模かつグローバルに水平スケーリングするので、高い拡張性が求められるケースで候補となる。ただしCloud SQLと比べ利用する際の制約事項があり、既存RDBの置き換え用途としてはクセのあるサービスであり、注意したい。

 以降ではCloud Storage、Cloud Bigtable、Cloud Datastore、Cloud SQLに関して、特徴と利用上の注意点を解説する。

この先は有料会員の登録が必要です。有料会員(月額プラン)は初月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら