インスタンス

このページでは、Cloud Spanner インスタンス、インスタンス構成、ノードのコンセプトについて説明します。また、リージョン インスタンスとマルチリージョン インスタンスの違い、それぞれのトレードオフについても説明します。Cloud Spanner のレプリケーションについてよくわからない場合は、レプリケーションを先にご覧ください。

インスタンスの概要

Cloud Spanner を使用するには、Google Cloud プロジェクトで Cloud Spanner インスタンスを作成する必要があります。これにより、このインスタンスに作成した Cloud Spanner データベースにリソースが割り当てられます。

インスタンスを作成する場合、インスタンスの構成とノード数を設定します。この 2 つは重要な選択項目です。この設定により、インスタンスのサービス リソースやストレージ リソースの場所と上限が決まります。インスタンスの構成は設定後に変更できませんが、ノード数は必要に応じて変更できます。

インスタンスの構成

インスタンスの構成により、インスタンスのデータベースの地理的な場所とレプリケーションが定義されます。インスタンスを作成する際には、リージョン(すべてのリソースが 1 つの Google Cloud リージョン内に存在します)かマルチリージョン(リソースが複数のリージョンに分散します)のいずれかとして構成する必要があります。インスタンスの構成を選択すると、インスタンスでのデータの格納場所が決まります。以下では、リージョン構成とマルチリージョン構成について詳しく説明します。

ノード数

インスタンスの作成時には、データの保存場所を選択するだけでなく、ノード数(インスタンスに割り当てられるノード数)も選択する必要があります。選択したノード数により、そのインスタンスのデータベースで使用可能なサービス(ストレージ)のリソース量が決まります。

ノード、レプリカ、インスタンスの関係を示した例として、リージョン インスタンス構成の次の図をご覧ください。

リージョンのインスタンス構成で作成された 4 ノード インスタンス

この図は、リージョンのインスタンス構成で作成される 4 ノード インスタンスを示しています。図の各ゾーンには、データベースの完全なレプリカが含まれています。各ゾーンでは、データベースのレプリカが 4 つの処理タスクによって処理されます。

N ノード インスタンスには、インスタンス構成の各ゾーンに N 個の処理タスクがあり、各ゾーンはデータベースの全レプリカを処理します。

1 つのノードで最大 2 TB までのストレージを利用できます。ノードでのピーク時の読み取り、書き込みのスループット値は、インスタンスの構成やスキーマの設計、データセットの特性によって異なります。詳細については、リージョン構成のパフォーマンスマルチリージョン構成のパフォーマンスをご覧ください。

インスタンスを作成した後で、ノードをインスタンスに追加できます。ほとんどの場合、ノードを削除することもできます。ノードを削除できないケースがいくつかあります。

  • ノードを削除するには、インスタンスでノードごとに 2 TB を超えるデータを格納する必要があります。
  • 過去の使用パターンに基づいて、Cloud Spanner はインスタンスのデータのスプリットを多数作成しました。ノードを削除した後はスプリットを管理できません。

ノードを削除するときは、Cloud Monitoring で CPU 使用率とリクエスト レイテンシをモニタリングし、リージョンのインスタンスで CPU 使用率が 65% を下回り、マルチリージョンのインスタンスの各リージョンで 45% を下回らないようにしてください。ノードの削除中に、リクエストのレイテンシが一時的に増大する場合があります。

Cloud Consolegcloud コマンドライン ツール、またはクライアント ライブラリを使用してノードの数を変更できます。

Cloud Spanner に停止モードはありません。Cloud Spanner ノードは専用のリソースで、ワークロードが実行されていないときでも、Cloud Spanner ノードはデータの最適化と保護のため、バックグランド処理を頻繁に実行しています。

ノードとレプリカ

インスタンスのサービス リソースとストレージ リソースをスケールアップする必要がある場合は、インスタンスにノードを追加します。ノードを追加しても、レプリカの数は増加しません(構成ごとに固定)。インスタンス内でレプリカが使用できるリソースが増加します。ノードを追加すると、各レプリカで使用可能な CPU と RAM が増えるため、レプリカのスループットが向上します(つまり、1 秒あたりの読み取りと書き込み数が増えます)。インスタンスのレプリカの Cloud Spanner サーバーの数は、インスタンスのノード数に一致します。したがって、Cloud Spanner インスタンスのサーバーの合計数は、インスタンスのノード数にインスタンス内のレプリカ数を掛けた数になります。

リージョン構成

Google Cloud サービスは、北米、南米、ヨーロッパ、アジア、オーストラリアのロケーションでご利用いただけます。ユーザーとサービスが 1 つのリージョン内に存在する場合、最も低いレイテンシで読み取りと書き込みを行うため、リージョン インスタンス構成を選択します。

有効な構成

Cloud Spanner では、インスタンスに次のリージョンを構成できます。

リージョン名 リージョンの説明
南北アメリカ
northamerica-northeast1 モントリオール
southamerica-east1 サンパウロ
us-central1 アイオワ
us-east1 サウスカロライナ
us-east4 北バージニア
us-west1 オレゴン
us-west2 ロサンゼルス
us-west3 ソルトレイクシティ
us-west4 ラスベガス
ヨーロッパ
europe-north1 フィンランド
europe-west1 ベルギー
europe-west2 ロンドン
europe-west3 フランクフルト
europe-west4 オランダ
europe-west6 チューリッヒ
アジア太平洋
asia-south1 ムンバイ
asia-east1 台湾
asia-east2 香港
asia-northeast1 東京
asia-northeast2 大阪
asia-northeast3 ソウル
asia-southeast1 シンガポール
asia-southeast2 ジャカルタ
australia-southeast1 シドニー

どのリージョン構成についても、Cloud Spanner によって 3 つの読み取り / 書き込みレプリカが維持されます。それぞれのレプリカは、そのリージョン内の異なる Google Cloud ゾーンに維持されます。各レプリカには本番環境のデータベースの完全なコピーが含まれ、読み取り / 書き込みリクエストと読み取り専用リクエストを実行できます。Cloud Spanner は、異なるゾーンのレプリカを使用し、1 つのゾーンで障害が発生しても、データベースの可用性を維持します。

レプリケーション

リージョン構成には 3 つの読み取り / 書き込みレプリカが含まれます。Cloud Spanner でのレプリケーションの説明にあるように、Cloud Spanner でミューテーションを保存するには、投票レプリカの過半数を占める書き込みクォーラムが必要になります。リージョン構成では、書き込みクォーラムは、3 つのレプリカのうち 2 つのレプリカから構成されます。

ベスト プラクティス

最適なパフォーマンスを得るには、次のベスト プラクティスに従ってください。

  • スキーマを設計すると、ホットスポットやその他のパフォーマンスに関する問題を回避できます。
  • 重要なコンピューティング リソースを Cloud Spanner インスタンスと同じリージョンに配置します。
  • 全体の CPU 使用率を 65% 以下に抑えるため、十分な数の Cloud Spanner ノードをプロビジョニングします。

パフォーマンス

上記のベスト プラクティスに準拠すると、各 Cloud Spanner ノードは最大 10,000 QPS の読み取りまたは最大 2,000 QPS の書き込み(行ごとに 1 KB データ)を実現できます。

マルチリージョン構成

前述のように、Cloud Spanner リージョン構成では、1 つのリージョン内の複数のゾーン間でデータの複製が行われます。ただし、アプリケーションが地理的に離れた複数の場所からデータを読み取る必要がある場合(たとえば、北アメリカとアジアのユーザーにデータを提供する場合など)、あるいは、読み取りとは異なる場所から書き込みを行う場合(たとえば、北アメリカで大規模な書き込みワークロードを実行し、ヨーロッパで大規模な読み取りワークロードを実行する場合など)、リージョン構成では最適な処理が実行できません。

マルチリージョン構成を使用すると、インスタンス構成の定義に応じて、複数のゾーンや複数のリージョンの異なるゾーンにデータベースのデータを複製できます。この追加のレプリカにより、近くの複数の場所あるいは構成されたリージョン内から低レイテンシでデータを読み取ることができます。しかし、マルチリージョン構成の場合、クォーラム(読み取り / 書き込み)レプリカが複数のリージョンに分散しています。これらのレプリカが相互に通信を行い、書き込みに対する投票を行うため、追加のネットワーク レイテンシが発生する場合があります。つまり、マルチリージョン構成では、書き込みレイテンシを大幅に増やさず、複数の場所から迅速に読み取りを行うことができます。

有効な構成

1 つの大陸

名前 場所 読み取り / 書き込みリージョン 読み取り専用リージョン ウィットネス リージョン
asia1 アジア 東京: asia-northeast1 L2R
大阪: asia-northeast2 2R
なし ソウル: asia-northeast3
eur3 ヨーロッパ ベルギー: europe-west1 L2R
オランダ: europe-west4 2R
なし フィンランド: europe-north1
eur5 ヨーロッパ ロンドン: europe-west2 L,2R
ベルギー: europe-west1 2R
なし オランダ: europe-west4
nam3 北米 北バージニア: us-east4 L2R
サウスカロライナ: us-east1 2R
なし アイオワ: us-central1
nam6 北米 アイオワ: us-central1 L2R
サウスカロライナ: us-east1 2R
オレゴン: us-west1 1R
ロサンゼルス:us-west2 1R
オクラホマ: us-central2
nam7 北米 アイオワ: us-central1 L2R
北バージニア: us-east4 2R
なし オクラホマ: us-central2
nam8 北米 ロサンゼルス: us-west2 L,2R
オレゴン: us-west1 2R
なし ソルトレイクシティ: us-west3
nam9 北米 北バージニア: us-east4 L,2R
アイオワ: us-central1 2R
オレゴン: us-west1 2R サウスカロライナ: us-east1
nam10 北米 アイオワ: us-central1 L2R
ソルトレイクシティ: us-west3 2R
なし オクラホマ: us-central2
nam11 北米 アイオワ: us-central1 L2R
サウスカロライナ: us-east1 2R
なし オクラホマ: us-central2
  • L: デフォルトのリーダーリージョン

  • 1R: リージョン内に 1 つのレプリカ

  • 2R: リージョン内に 2 つのレプリカ

3 つの大陸

名前 場所 読み取り / 書き込みリージョン 読み取り専用リージョン ウィットネス リージョン
nam-eur-asia1 北アメリカ
ヨーロッパ
アジア
アイオワ: us-central1 L2R
オクラホマ: us-central2 2R
ベルギー: europe-west1 2R
台湾: asia-east1 2R
サウスカロライナ : us-east1

利点

マルチリージョン インスタンスの主な利点は次のとおりです。

  • 99.999% の可用性。Cloud Spanner リージョン構成では、99.99% を超える可用性を実現できます。

  • データの分散: Cloud Spanner は、リージョン間でデータを自動的に複製します。これにより、強整合性が保証されます。データが使用場所に保存されるため、レイテンシが減少し、ユーザー エクスペリエンスが改善されます。

  • 外部整合性: Cloud Spanner のレプリカが地理的に離れた場所に分散していても、1 台のマシン上でデータベースを実行している場合と同様に Cloud Spanner を使用できます。トランザクションはシリアル化が保証され、データベース内のトランザクションの順序に従って、commit されたトランザクションがクライアントに表示されます。外部整合性は、一部のサービスで提供されている強整合性よりも確実な保証を行います。この特性の詳細については、TrueTime と外部整合性をご覧ください。

レプリケーション

各マルチリージョン構成には、読み取り / 書き込みリージョンとして設定された 2 つのリージョンが存在し、それぞれのリージョンに 2 つの読み取り / 書き込みレプリカが含まれます。この読み取り / 書き込みリージョンの 1 つがデフォルトのリーダー リージョンになり、ここにデータベースのリーダー レプリカが含まれます。Cloud Spanner では、ウィットネス リージョンという 3 番目のリージョンにウィットネス レプリカが配置されます。

クライアントがデータベースに変異を送信するたびに、デフォルトのリーダー リージョンの 1 つのレプリカと 4 つの投票レプリカの 2 つから書き込みクォーラムが形成されます。投票に参加するレプリカによっては、構成内の 2 または 3 つのリージョンのレプリカからクォーラムが形成される場合があります。この 5 つの投票レプリカ以外に、低レイテンシの読み取りを行う読み取り専用レプリカを構成に追加することもできます。読み取り専用レプリカを含むリージョンを読み取り専用リージョンといいます。

通常、マルチリージョン構成では、投票リージョンが地理的に近い場所(1,600 km 以下)に配置され、高速書き込みを可能にする低レイテンシのクォーラムが形成されます(詳細)。ただし、調整による障害を避けるため、リージョンは少なくとも数百 km 以上離れた場所に配置されています。

以降のセクションでは、これらのリージョンの種類について詳しく説明します。また、書き込みと読み取りのワークロードを配置する場合のガイダンスについても説明します。

リージョンの種類

読み取り / 書き込みリージョン

上記のように、各マルチリージョン構成には 2 つの読み取り / 書き込みリージョンが存在し、それぞれのリージョンに 2 つの読み取り / 書き込みレプリカが含まれます。これらの読み取り / 書き込みリージョンの 1 つがデフォルトのリーダー リージョンになります。リーダーは、各スプリットのデフォルト リーダー リージョン内のレプリカから選択されます。リーダー レプリカに障害が発生した場合、デフォルトのリーダー リージョンのもう一方のレプリカが自動的にリーダーになります。異常が見つかった場合にリーダーを切り換えられるように、リーダーは自身のヘルスチェックを実行します。デフォルトのリーダー リージョンのレプリカが使用可能な通常の状態では、デフォルトのリーダー リージョンにリーダーが含まれ、ここで最初に書き込みが処理されます。

2 番目の読み書きリージョンに存在するレプリカがリーダーの候補になります。まれにデフォルトのリーダー リージョンにあるすべてのレプリカが失われた場合は、2 番目の読み取り / 書き込みリージョンから新しいリーダー レプリカが選択されます。

読み取り専用リージョン

読み取り専用リージョンには読み取り専用レプリカが含まれます。これにより、読み取り / 書き込みリージョンの外にあるクライアントに低レイテンシの読み取りを提供できます。

ウィットネス リージョン

ウィットネス リージョンには、書き込み投票に参加するウィットネス レプリカが含まれます。まれですが、読み取り / 書き込みリージョンが使用不能になった場合、ウィットネスは重要な役割を果たします。

ベスト プラクティス

最適なパフォーマンスを得るには、次のベスト プラクティスに従ってください。

  • スキーマを設計すると、ホットスポットやその他のパフォーマンスに関する問題を回避できます。
  • 最適な書き込みレイテンシを実現するには、書き込みの多いワークロードのコンピューティング リソースをデフォルトのリーダー リージョン内またはその近くに配置します。
  • デフォルトのリーダー リージョン外で最適な読み取りパフォーマンスを得るには、15 秒以上のステイルネスを使用します。
  • ワークロードが単一リージョンに依存しないようにするには、重要なコンピューティング リソースを少なくとも 2 つのリージョンに配置します。1 つのリージョンでの停止がすべてのアプリケーションに影響しないように、2 つの異なる読み取り / 書き込みリージョンの横に配置することをおすすめします。
  • 各リージョンで全体の CPU 使用率を 45% 以下に抑えるため、十分な Cloud Spanner ノードをプロビジョニングします。

パフォーマンス

Cloud Spanner 構成のパフォーマンス特性は、レプリケーション トポロジによって若干異なります。

前述のベスト プラクティスを実施した場合、Cloud Spanner ノードのおよそのパフォーマンスは次のとおりです。

マルチリージョン構成 ピーク時の読み取りの概算値(リージョンあたりの QPS) ピーク時の書き込みの概算値(QPS の合計)
asia1 7,000 1,800
eur3 7,000 1,800
eur5 7,000 1,800
nam3 7,000 1,800
nam6 us-central1us-east1 に7,000
us-west1us-west2 に3,500 [1]
1,800
nam7 7,000 1,800
nam8 7,000 1,800
nam9 7,000 1,800
nam10 7,000 1,800
nam11 7,000 1,800
nam-eur-asia1 7,000 1,000
  • [1]: us-west1us-west2 は、リージョンごとに 2 つのレプリカではなく 1 つのレプリカが存在するため、QPS パフォーマンスの半分のみ提供します。

書き込みガイダンスは構成全体に適用されますが、読み取りガイダンスはリージョンごとに異なります(読み取りはどこからでも処理できるため)。書き込みガイダンスは、1 行に 1 KB のデータを書き込むことを前提としています。

トレードオフ: リージョンとマルチリージョンの構成

構成 可用性 レイテンシ 料金 データの局所性
リージョン 99.99% リージョン内の書き込みレイテンシを低減します。 低コスト。料金をご覧ください。 地域別のデータ ガバナンスを有効にします。
マルチリージョン 99.999% 複数の地理的リージョンからの読み取りレイテンシを低減します。 高コスト。料金をご覧ください。 構成内の複数のリージョンにデータを分散します。

次のステップ