全6429文字
PR

 今回は、Google Cloud Platform(GCP)の五つあるデータベース(DB)サービス、「Google Cloud Memorystore for Redis(以下、Cloud Memorystore)」「Google Cloud Bigtable」「Google Cloud Datastore」「Google Cloud SQL」「Google Cloud Spanner」を解説する。

インメモリーデータベースのCloud Memorystore

 Cloud Memorystore for Redisは、インメモリーデータベースのオープンソースソフト(OSS)の「Redis」をベースにしたPaaSである。2018年9月に一般公開された。

 OSSのRedisと同じく、データ量や負荷に合わせて複数のインスタンスにより分散処理できる。さらに、一般にRedisの運用管理は煩雑になりがちだが、Cloud Memorystore for Redisはマネージドサービスあり、運用管理が一部自動化される。

 Redisプロトコルに完全準拠しているので、Redisを利用しているアプリケーションであれば、改修を最小限に抑えてCloud Memorystore for Redisに移行できる。

 Cloud Memorystore for Redisには「基本階層」と「標準階層」という二つの料金プラン(サービス階層)があり、どちちらかを選ぶ。標準階層のほうが「ゾーン間レプリケーション」「自動フェールオーバー」という機能が使えるうえに可用性99.9%のSLA(Service Level Agreement)が設定されるが、料金は基本階層の約2倍だ。要件に応じて使い分けたい。

 Cloud Memorystore for Redisは、外部IPアドレスを保持しない。そのためRedisインスタンスには、それと同一のプロジェクト、リージョン、VPCネットワーク内に存在するクライアントからのみ接続できる。

基本機能(アクセス制御、暗号化、バックアップ)

 IAMを利用した、プロジェクトレベルのアクセス制御がサポートされる。Redisインスタンスは内部IPアドレスが付与されて配置されるので、その状態ではインターネットからのアクセスが遮断される。

 比較的新しいサービスということもあり、データを永続化してバックアップする機能は提供されていない(2019年3月時点)。今後のバージョンアップで、データの永続化機能やその際の暗号化機能が追加されることを期待したい。

カラム型DBのBigtable

 Cloud Bigtableは、業界標準となっているApache HBase APIを通じてアクセス可能なNoSQLデータベースで、列集計に優れたカラム型のエンジンを備える。Googleのコアサービス(検索エンジン、Google Maps、Google Earth、Gmailなど)を支えている大規模分散DBであり、高性能かつスケーラビリティーが高い。数百PBまでシームレスかつ自動でスケーリングし、1秒間で数千万件を処理する。

 主に大規模、低レイテンシー、高スループットが求められる用途で活用される。HBaseを使用して構築されたシステムの代替としても活用できる。

 ただしSQLクエリー(データの検索など)やテーブルの結合、複数行トランザクションはサポートされない。

基本機能(アクセス制御、暗号化、バックアップ)

 アクセス制御、暗号化、バックアップという基本機能については、まず「Cloud IAM」を利用したプロジェクトレベルとインスタンスレベルでのアクセス制御が可能だ。インスタンスレベルでアクセス制御することにより、開発インスタンスの管理はユーザーに許可するが本番インスタンスの管理は許可しない、といった制御が可能になる。

 全てのデータは、操作中、保存中を問わず自動的に暗号化される。暗号鍵はGoogleが管理しており、ユーザー独自の暗号鍵を指定できない。

 テーブルにデータを書き込むと、3台以上のサーバーに自動でレプリケートされる。ただしユーザーによる誤操作やアプリケーションバグなどによるデータ損失をリカバリーするための論理バックアップ機能(スナップショット機能のようなもの)は提供されていない。テーブルをHadoopシーケンスファイルとしてエクスポートするユーティリティーが提供されているので、論理バックアップが必要な場合は利用するとよい。

ドキュメント指向DBのCloud Datastore

 Cloud Datastoreは、アプリケーションのバックエンドを想定して開発されたスケーラビリティーの高いNoSQLデータベースである。ACIDトランザクション処理、SQLライクなクエリー、インデックスなど一般的なWebアプリケーションで求められる機能を備える。もともとはApp Engine向けのデータストアーで、Cloud Datastoreとして独立させてCompute Engineからも利用可能にした。

 サービス規模が拡大しても自動的にスケールし、処理速度が変化しない。シャーディング(データを複数のサーバーに分散させる機能)とレプリケーション(データを複数のサーバーに複製して同期する機能)を自動実行し、負荷に応じてシームレスかつ自動的にスケールする。

 Cloud DatastoreはApp Engineのデータストアーとして利用されることが多い。App EngineとCloud Datastoreはどちらも自動的にスケールするので、両者を組み合わせることで、システム全体を自動的にスケールさせることができる。