インスタンス

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

インスタンスの作成、一覧表示、編集、削除の詳細については、インスタンスの作成と管理をご覧ください。

インスタンスの概要

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

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

インスタンスの構成

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

ノード数

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

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

インスタンスのノード数はインスタンスの作成後も変更できます。ノードの数を変更するには、Google Cloud Platform Console の Cloud Spanner ページまたは gcloud コマンドライン ツールを使用します。

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

ノードとレプリカ

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

リージョン構成

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

有効な構成

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

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

どのリージョン構成についても、Cloud Spanner によって 3 つの読み書きレプリカが維持されます。それぞれのレプリカは、そのリージョン内の異なる Google Cloud Platform ゾーンに維持されます。各レプリカには本番環境のデータベースの完全なコピーが含まれ、読み書きリクエストと読み取り専用リクエストを実行できます。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 つの大陸

構成名 構成のロケーション デフォルトのリーダー リージョン 追加の読み書きリージョン 読み取り専用リージョン
nam3 北アメリカ us-east4 us-east1 なし
nam6 北アメリカ us-central1 us-east1 us-west1
us-west2
eur3 ヨーロッパ europe-west1 europe-west4 なし

3 つの大陸

構成名 構成のロケーション デフォルトのリーダー リージョン 追加の読み書きリージョン 読み取り専用リージョン
nam-eur-asia1 北アメリカ、ヨーロッパ、アジア us-central1 us-central2
(オクラホマ - 非公開の GCP リージョン
europe-west1
asia-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 つのリージョンに配置します。
  • 各リージョンで全体の CPU 使用率を 45% 以下に抑えるため、十分な Cloud Spanner ノードをプロビジョニングします。

パフォーマンス

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

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

マルチリージョン構成 ピーク時の読み取りの概算値(リージョンあたりの QPS) ピーク時の書き込みの概算値(QPS の合計)
nam3 7,000 1,800
nam-eur-asia1 7,000 1,000

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

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

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

フィードバックを送信...

Cloud Spanner のドキュメント