GCPのストレージサービスについてまとめてみた。

  • このエントリーをはてなブックマークに追加

~Google Cloud Architect取得への道~

「Google Cloud Architect取得への道」第3回です!
今回はGoogle Cloud Platform(以下、GCP)のストレージサービスについてご紹介します。

GCPには様々なストレージサービスがあります。
それぞれのイメージを掴みづらいと感じたので、Google Cloud Storage / Datastore / Bigtable / Cloud SQL の4つのサービスについてまとめてみました。

以下の3つのテーマで書いていきます。

  1. 特徴
  2. 利用料金
  3. 利用イメージ

1.特徴

Google Cloud Storage

Google Cloud Storage(以下、GCS)は、オブジェクトストレージです。
管理がシンプルで、高耐久性、高可用性のストレージを提供します。

利用するためにサービスの概念を知る必要があります。

  • GCPプロジェクト:課金設定の単位
  • バケット:ファイルを格納するコンテナ
  • オブジェクト:格納されるファイル

データを格納するバケットを作成し、作成時にバケット名、データを保存する場所、バケットのデフォルトのストレージクラスを指定します。
(後で、オブジェクトごとのストレージクラスの変更も可能です。)

GCSには4つのストレージクラスがあります。
クラスによって、可用性、最小保存期間、利用料金が異なります。

  可用性 最小保存期間 利用料金(GB/月) アクセス頻度(イメージ)
Multi-Regional 99.95% なし $0.026
データの取得: 無料
頻繁、リージョン間
Regional 99.9% なし $0.023*
データの取得: 無料
頻繁、リージョン内
Nearline 99.0% 30日 $0.016*
データの取得: $0.01/GB
月に1回程度
Coldline 99.0% 90日 $0.01*
データの取得: $0.05/GB
年に1回程度

*利用料金は東京リージョン(asia-northeast1)で計算。

また、どのクラスも共通して以下をサポートしています。

  • 同じツールと API を使用したデータへのアクセス
     (XML API、JSON API、gsutil ツール、GCP Console、クライアント ライブラリ)
  • 同じ OAuth と詳細なアクセス制御によるデータの保護
  • 高い耐久性(99.999999999%(イレブン9)の持続性が維持されるように設計されている。)
  • 低レイテンシ(最初のバイトの転送時間は一般的に数十ミリ秒)
  • 保存時の暗号化を使用した同じデータ セキュリティ

■パフォーマンス

バケットの初期の IO 容量は、およそ毎秒 1,000 件の書き込みリクエストと 5,000 件の読み取りリクエストです。これは、1 MB のオブジェクトについて 1 か月の平均が 2.5 PB の書き込みと 13 PB の読み取りになります。特定のバケットのリクエスト レートが増加すると、Cloud Storage は複数のサーバーにリクエストの負荷を分散して、そのバケットの IO 容量を自動的に増やします。

■アクセス制御

GCSのアクセス制御は知っておく必要があります。以下のオプションを組み合わせて使えます。

  • IAM権限
    プロジェクトのすべてのバケットとオブジェクトに対するアクセスを許可します。IAM の権限ではプロジェクトに対する幅広い制御が可能ですが、個々のバケットやオブジェクトを細かく制御することはできません。
  • アクセス制御リスト(ACL)
    個々のバケットやオブジェクトへの読み取りまたは書き込みアクセスを許可します。ACL は、個々のリソースを細かく制御する必要がある場合にのみ使用します。
  • 署名付きURL
    生成した URL を通じて、オブジェクトへの制限時間付きの読み取りまたは書き込みアクセスを許可します。URL を共有する全員が、Google アカウントを持っているかどうかにかかわらず、指定した時間にオブジェクトにアクセスできます。
  • 署名付きポリシードキュメント
    バケットにアップロードできる内容を指定します。ポリシー ドキュメントでは、サイズ、コンテンツタイプなどのアップロード特性を、署名付き URL よりも細かく制御でき、ウェブサイトの所有者が、訪問者に GCSへのファイルのアップロードを許可するために使うことができます。

Google Cloud Bigtable

Bigtableは、低レイテンシと高スループットのワークロードに最適なスケーラビリティの高い NoSQL データベースです。
散在して格納されているテーブルであり、数十億行、数千列の規模に拡張可能です。これにより数TB、数PBのデータを格納できます。可用性の高さも特徴的で、テーブルにデータを書き込むと3台以上のサーバーに複製されます。

仕組みをイメージする理解が深まるので図で表してみます。
下の図のように、Bigtableを利用する時、クライアントからのリクエストは、フロントエンドサーバーを経由してBigtableノードに送信されます。(Bigtableノード>Bigtableクラスタ>Bigtableインスタンス) 。各ノードはクラスタに対するリクエストの一部を処理するので、クラスタにノードを追加すると処理できるリクエスト数が増えます。

Bigtableのテーブルは内部的に複数の「タブレット」に分割され、タブレットはGoogleのファイルシステムに格納されます。各タブレットは個々のBigtableノードに関連付けられます。
データはノード自体に保存されるのではなく、各ノードがタブレットのセットに対するポインタを保持しています。そのため、以下が実現されます。

  • ノード間のタブレット移動(再調整)が極めて高速になる。
     →実データがコピーされず、各ノードのポインタを更新するだけ。
  • ノードの障害復旧が極めて高速になる。
     →置換先の新しいノードにメタデータのみを移動すれば済むため。
  • ノードで障害が発生してもデータが失われることはない。

使用するときには、Bigtableインスタンスを作成します。デフォルトでは3ノードとなっていますが、ノードを追加してスループットとQPS(1秒あたりのクエリ数)の容量を増やすこともできます。

Bigtableでは、大規模にスケーラブルなテーブルにデータが格納されます。テーブルは行と列で構成されていて、各行の単一の値がインデックスに登録され、この値が行のkeyになります。keyでスキャンすることはできますが、カラム名でスキャンすることはできません。

また、トランザクションは行単位に限定した処理しかサポートされていません。整合性を確保する範囲を限定することでスケーラブルにサービスを提供します。

■パフォーマンス

全てが問題なく動作している場合、ノードあたりのパフォーマンスイメージです。負荷及び表の各行のサイズに応じて変わる可能性があります。

ストレージの種類 読み取り 書き込み スキャン
SSD 10,000 QPS*
@ 6 ミリ秒
10,000 QPS
@ 6 ミリ秒
220 MB/秒
HDD 500 QPS
@ 200 ミリ秒
10,000 QPS
@ 50 ミリ秒
180 MB/秒

*1 秒あたりのクエリ数(Query Per Second)

Google Cloud Datastore

Datastoreは、アプリケーションのバックエンドで使える、スケーラビリティの高いフルマネージド NoSQL データベースです。シャーディング(データを複数のサーバに分散して格納)とレプリケーションを自動的に処理し、アプリケーションの負荷に合わせて自動的にスケールする、可用性と耐久性に優れたデータベースを提供します。同じく自動でスケールするGAEのデータベースとして使われることが多いです。
Datastoreは、Bigtableのデータストア機能をベースにBigtableに不足している機能を追加したデータストアです。データはバイト配列に変換され、Bigtableに保存されます。

  • ACIDトランザクション
    トランザクションはオプション機能です。Bigtableでは1行しかトランザクションがサポートできないことに比べ、Datastoreでは最大25行に対してオペレーションを実行できます。
  • SQLライクなクエリ
    Datastoreはインデックスを利用して、指定した条件を満たすオブジェクトを取得できます。
    ただし、部分文字列の一致、大文字と小文字を区別しない一致、全文検索をサポートしてない、というようなインデックスクエリを利用していることによる制限もあるので注意が必要です。
  • インデックス
    Datastoreのクエリは、1つ以上のインデックスを使用して結果を計算しています。インデックスは、特定の種類のエンティティのプロパティを、各プロパティの対応する順序で並べたリストに対して定義されます。

Google Cloud SQL

Google Cloud SQLは、GCP上に構築されたフルマネージドのMy SQL とPostgreSQL(ベータ版)のデータベースを提供しています。Cloud SQL インスタンスが提供する MySQL 機能は、ローカルにホストされた MySQL インスタンスが提供する機能とほとんど同じです。

Cloud SQLは高パフォーマンスかつスケーラブルで、最大10TBのストレージ容量、25000 IOPS、1インスタンスにつき208GBのRAMを提供します。

バックアップ、レプリケーション、パッチ、アップデートはGoogle側で自動的に行われます。
GCEののインスタンスを利用しているので、ライブマイグレーションにより高い可用性を確保できます。
また、GCEやGAEなどのGCPサービスと簡単に連携できます。

特徴まとめ

  Cloud Storage Bigtable Datastore Cloud SQL
ストレージタイプ オブジェクト(BLOB)ストア No SQL、ワイドカラム No SQL、ドキュメント リレーショナル SQL
格納するデータ型 バイナリデータ、オブジェクトデータ RAW バイト文字列 整数、浮動小数点数、文字列、日付、バイナリデータ 整数、浮動小数点数、文字列、日付、バイナリ、BLOB型など、MySQLが対応するデータ型
レイテンシ 約5ミリ秒未満
(同じリージョン内のロケーションのネットワークレイテンシの場合)
トランザクション管理 × ×
データの保存地域 ・Multi-Regional
(米国/EU/アジア)
・Regional
(米国/EU/アジア)
の2タイプが選択可能。
zoneのみ選択。
(米国/EU/アジア)
・Multi-Regional
(米国/EU)
・Regional
(米国/EU/アジア)
の2タイプが選択可能。
Regional
(米国/EU/アジア)
とzoneを選ぶ
東京リージョンが選択できる ×
(アジアでは台湾のみ)
複雑なクエリ × × ×
データの暗号化

2.利用料金

各サービスを利用した場合、本来は各ストレージの利用料だけではなく、ネットワーク利用料も発生しますが、今回はネットワーク利用料は外して考えます。

Google Cloud Storage

GCSでは、ストレージクラスに寄って利用料金が異なります。

ストレージクラス 利用料金(GB/月)
Multi-Regional $0.026
データの取得: 無料
Regional $0.023*
データの取得: 無料
Nearline $0.016*
データの取得: $0.01/GB
Coldline $0.01*
データの取得: $0.05/GB

*利用料金は東京リージョンで計算。

Google Cloud Bigtable

Bigtableは、次のように課金が発生します。

・インスタンスのタイプとノード数

インスタンスタイプ 料金
本番環境インスタンス ノードあたり $0.65/時間(最小 3 ノード)
各ノードは最大で 10,000 QPS および
10 MB/秒のデータ転送を処理します。
開発インスタンス $0.65/時間

・テーブルで利用しているストレージ量

SSD ストレージ(GB/月) HDD ストレージ(GB/月)
$0.17 $0.026

Google Cloud Datastore

Datastoreには日単位で適用される無料の割り当てがあります。
それを超えた場合、以下の料金が発生します。

  1日あたりの無料枠 無料枠を超えた場合の料金
保存データ(GB/月) 1 GB ストレージ $0.23
エンティティの読み込み数
(/10万エンティティ)
50,000 $0.08
エンティティの書き込み数
(/10万エンティティ)
20,000 $0.23
エンティティの削除数
(/10万エンティティ)
20,000 $0.03
小規模な操作 無料 無料

*日本リージョンで利用した場合の金額です。

Google Cloud SQL

Cloud SQL では以下の料金が発生します。

・インスタンス利用料

インスタンスが実行している間、1 分ごとに課金されます。課金額はマシンタイプに寄って異なり、マシンタイプはGoogle Compute Engineに基づきます。
日本リージョンでの料金はマシンタイプに寄って異なりますが、下のようになります。

  標準利用料 100%の継続使用割引付き
600 MB~208 GB RAM $0.0195 – $5.2312 /時間 $0.0137 – $3.6618 /時間
例:1CPU、メモリ3.75GMの
「db-n1-standard-1」のマシンタイプ
$0.1255/時間 $0.0878/時間

・ストレージ利用料

日本リージョンの場合、以下のストレージ利用料が発生します。

SSD $0.22 /GB・月
HDD $0.12 /GB・月
バックアップ $0.10 /GB・月

利用料金まとめ

  Cloud Storage Bigtable Datastore Cloud SQL
データ保存(GB/月)
  • $0.026
    (Multi-Regional)
  • $0.023
    (Regional)
  • $0.016
    (Nearline)
  • $0.01
    (Coldline)
  • $0.17 (SSD)
  • $0.026 (HDD)
$0.23
無料利用枠あり
  • $0.22 (SSD)
  • $0.12 (PD Standard)
  • $0.10 (backups)
読み込み
  • $0.01(Nearline)
  • $0.05(Coldline)
なし $0.08(/10 万エンティティ)
無料枠あり
なし
書き込み なし なし $0.23(/10 万エンティティ)
無料枠あり
なし
インスタンス(/時間) なし $0.65 なし $0.0195 – $5.2312(日本)

3.利用イメージ

Google Cloud Storage

大容量の画像やムービーなど、10 MB の超える大規模な不変 blob を格納する必要がある場合の利用に適しています。

主なワークロードとしては以下です。

  • マルチメディアの保存とストリーミング
  • カスタムデータ分析パイプライン用のストレージ
  • アーカイブ、バックアップ、ディザスタ リカバリ

Google Cloud Bigtable

Bigtable は非構造化キー / 値データ(それぞれの値のサイズが 10 MB 以下)を扱う、非常に高いスループットとスケーラビリティを必要とするアプリケーションに最適です。また、MapReduce の一括オペレーション、ストリーム処理と分析、機械学習アプリケーションといった用途にも優れています。
Bigtable はリレーショナル データベースではありません。したがって、SQL クエリや結合、さらには複数行トランザクションもサポートしていません。ですので、ACID トランザクションのサポートが不要な場合、またはデータが高度に構造化されていない場合に向いています。

また、超大容量のデータ(数テラバイトまたは数ペタバイト)を比較的長期間にわたって処理する場合に性能を発揮します。
少量のデータ(1TB 未満)をほんの短い時間処理するのに適した設計にはなっていません。

主なワークロードとしては以下です。

  • IoT、ファイナンス、アドテック
  • モニタリング
  • 地理空間データセット
  • グラフ

Google Cloud Datastore

Datastoreの利点は「サービス規模がどれだけ拡大しても自動的にスケールし処理速度が変化しない」ことにあります。(データ件数がそこまで多くない場合は、CloudSQLの方が、けた違いに高速にCRUD処理や検索処理を実行できます。)
Datastore は、スケーラブルで大規模な構造化データに依存するアプリケーションに適しています。

また、Google App Engine(GAE)のデータベースとして利用することが多いです。GAEセットで使えば非常に簡単にオートスケールするアプリケーションを作ることが出来ます。

主なワークロードとしては以下です。

  • ユーザー プロフィール
  • プロダクト カタログ
  • ゲームデータ

Google Cloud SQL

SQL を完全にサポートするオンライン トランザクション処理(OLTP)システム向けのリレーショナル データベースが必要な場合に向いています。
また、すでにMySQLやPostgreSQLを利用しているアプリケーションを、GCPへ移行する際にも利用できます。

主なワークロードとしては以下です。

  • ウェブサイト、ブログ、コンテンツ管理システム(CMS)
  • ビジネス インテリジェンス(BI)アプリケーション
  • ERP、CRM、e コマース アプリケーション
  • 地理空間アプリケーション

最後に

いかがでしたでしょうか?
今回は、GCPの4つのストレージサービスについて、特徴、料金、利用イメージの観点からまとめてみました。それぞれの特徴を掴み、GCP上でサービスを作るときのストレージ選択のお手伝いができれば嬉しいです!

次回はGCPのコンピュートサービスについてまとめ記事を書く予定ですので、お楽しみに。

※ 弊社ではクラウドエース(Cloud Ace)というGCPの導入・運用支援サービスを提供しておりますので、ご興味のある方はこちらまでお問い合わせください。GAEに限らず、あらゆるGCPサービスのサポートが可能です。

Google のクラウドサービスについてもっと詳しく知りたい、直接話が聞いてみたいという方のために、クラウドエースでは無料相談会を実施しております。お申し込みは下記ボタンより承っておりますので、この機会にぜひ弊社をご利用いただければと思います。

無料相談会のお申込みはこちら