レプリケーションの概要

Cloud Bigtable のレプリケーションにより、データを複数のリージョンまたは同じリージョン内の複数のゾーンにコピーして、データの可用性と耐久性を向上できます。さらに、異なるタイプのリクエストを異なるクラスタにルーティングすることで、ワークロードを分離できます。

このページでは、Cloud Bigtable のレプリケーションの仕組みについて説明し、レプリケーションの一般的な使用例をいくつか紹介します。さらに、レプリケーションが有効にされている場合に Cloud Bigtable が使用する整合性モデルについて説明し、一方のクラスタが他方のクラスタにフェイルオーバーする際の処理についても説明します。

  • 一般的なユースケースの実装に使用できる設定の例については、レプリケーション設定の例をご覧ください。
  • レプリケーションを使用するインスタンスの作成方法については、インスタンスの作成をご覧ください。
  • 既存のインスタンスのレプリケーションを有効にする方法については、クラスタの追加をご覧ください。
  • レプリケーションに関連する費用については、料金をご覧ください。

このページを読む前に、Cloud Bigtable の概要を理解する必要があります。

レプリケーションの仕組み

Cloud Bigtable インスタンスでレプリケーションを使用するには、複数のクラスタを持つ新しいインスタンス作成するか、既存のインスタンスに複数のクラスタを追加します。

Cloud Bigtable は、Cloud Bigtable が利用可能な Google Cloud Platform ゾーンにある最大 4 つの複製クラスタをサポートします。インスタンスの各クラスタは、それぞれ異なるゾーン内に存在する必要があります。Cloud Bigtable が利用可能なゾーンであれば、どのゾーンに対しても追加のクラスタを作成できます。クラスタを別々のゾーンまたはリージョンに配置すると、1 つの GCP ゾーンまたはリージョンが利用できなくなった場合でもデータにアクセスできます。

複数のクラスタを持つインスタンスを作成すると、Cloud Bigtable はすぐにクラスタ間でデータの同期を開始し、インスタンスにクラスタが含まれる各ゾーンに個別の独立したデータのコピーを作成します。同様に、既存のインスタンスに新しいクラスタを追加すると、Cloud Bigtable は既存のデータを元のクラスタのゾーンから新しいクラスタのゾーンにコピーし、ゾーン間でデータへの変更を同期します。

Cloud Bigtable は、次のすべてのタイプの変更を含むデータへの変更を自動的にレプリケートします。

  • 既存のテーブルのデータの更新
  • 新しいテーブルと削除されたテーブル
  • 追加および削除された列ファミリー
  • 列ファミリーのガベージ コレクション ポリシーの変更

Cloud Bigtable はインスタンスの各クラスタをプライマリ クラスタとして扱うため、各クラスタで読み取りと書き込みのどちらも可能です。また、さまざまなタイプのアプリケーションからのリクエストがさまざまなクラスタにルーティングされるようにインスタンスを設定することもできます。

ユースケース

このセクションでは、Cloud Bigtable レプリケーションの一般的なユースケースについて説明します。各ユースケースの最適な構成設定とその他のユースケースの実装のヒントについては、レプリケーション設定の例をご覧ください。

バッチ読み取りからサービスを提供するアプリケーションの分離

単一のクラスタを使用して、読み取りと書き込みを組み合わせて実行するアプリケーションと並行して多数の大規模読み取りを実行するバッチ分析ジョブを実行すると、大規模バッチジョブによってアプリケーションのユーザーの処理が遅くなることがあります。レプリケーションでは、単一クラスタ ルーティングのアプリ プロファイルを使用してバッチ分析ジョブとアプリケーション トラフィックを異なるクラスタにルーティングできるため、バッチジョブがアプリケーションのユーザーに影響を与えることはありません。 こうした使用例の実装の詳細については、こちらをご覧ください。

可用性の向上

インスタンスに 1 つのクラスタしかない場合、データの耐久性と可用性は、そのクラスタが存在するゾーンに制限されます。レプリケーションでは、複数のゾーンまたはリージョンにデータの個別のコピーを保存し、必要に応じてクラスタ間で自動的にフェイルオーバーすることで、耐久性と可用性の両方を向上できます。 こうした使用例の実装の詳細については、こちらをご覧ください。

ほぼリアルタイムのバックアップの提供

たとえば、古いデータを読み取ることが許されない場合などでは、常に 1 つのクラスタにリクエストをルーティングする必要があります。ただし、1 つのクラスタでリクエストを処理し、別のクラスタをほぼリアルタイムのバックアップとして維持することで、レプリケーションを使用できます。サービスを提供するクラスタが利用できなくなった場合、手動でバックアップ クラスタにフェイルオーバーすることでダウンタイムを最小限に抑えられます。 こうした使用例の実装の詳細については、こちらをご覧ください。

データのグローバル プレゼンスを確保する

世界中の場所にレプリケーションを設定して、データを顧客の近くに配置できます。たとえば、米国、ヨーロッパ、アジアで複製クラスタを持つインスタンスを作成して、アプリケーション トラフィックを最も近いクラスタにルーティングするようアプリ プロファイルを設定できます。 こうした使用例の実装の詳細については、こちらをご覧ください。

整合性モデル

デフォルトで、Cloud Bigtable のレプリケーションは結果整合性があります。この用語は、1 つのクラスタに変更を書き込むと、最終的にその変更を他のクラスタから読み取れることを意味しますが、変更がクラスタ間でレプリケートされた後に限ります。

インスタンスが正常であれば、レプリケーションの遅延は通常数秒か数分で、数時間かかることはありません。ただし、大量のデータをクラスタに書き込んでいる場合や、クラスタが過負荷になったり、一時的に使用不能になったりした場合は、レプリケーションが追いつくために時間がかかることがあります。また、クラスタ間の距離が離れていると、レプリケーションに時間がかかることがあります。その結果、常に書き込まれた最新の値を読み取れることを前提としたり、書き込み後数秒待てば、Cloud Bigtable に変更をレプリケートする十分な時間が与えられるものと想定したりすることは通常安全ではありません。

別の整合性の保証が必要な場合、Cloud Bigtable はレプリケーションが有効な場合に、書き込み後読み取りの整合性を提供することもできます。これにより、アプリケーションは最新の書き込みよりも古いデータを読み取ることがありません。アプリケーションのグループへの書き込み後読み取りの整合性を確保するため、グループ内の各アプリケーションが単一クラスタ ルーティング用に構成されたアプリ プロファイルを使用し、すべてのアプリ プロファイルが同じクラスタにリクエストをルーティングする必要があります。インスタンスの追加のクラスタを同時に他の目的に使用できます。

Cloud Bigtable は、レプリケーションが有効な場合に、強整合性も提供できます。これにより、すべてのアプリケーションで同じ状態のデータを確認できます。強整合性を確保するには、上記の書き込み後読み取りの整合性のための単一クラスタ ルーティング用のアプリ プロファイル構成を使用しますが、別のクラスタにフェイルオーバーする必要がある場合を除いて、インスタンスの追加クラスタは使用しないでください。

アプリケーション プロファイル

インスタンスでレプリケーションを使用する場合、アプリケーション プロファイル(アプリ プロファイル)を使用して、アプリケーションからの受信リクエストを処理するクラスタを制御します。また、アプリ プロファイルは、読み取り - 変更 - 書き込みオペレーション(インクリメントと追加を含む)と確認 - 変更オペレーション(条件付きミューテーションまたは条件付き書き込みとも呼ばれる)を含む単一行トランザクションを実行できるかどうかも決定します。

詳しくはアプリケーション プロファイルをご覧ください。一般的なユースケースの実装に使用できる設定の例については、レプリケーション設定の例をご覧ください。

フェイルオーバー

Cloud Bigtable クラスタが応答しなくなった場合、レプリケーションにより受信トラフィックを同じインスタンスの別のクラスタにフェイルオーバーできます。フェイルオーバーは、アプリケーションが使用しているアプリ プロファイルと、アプリ プロファイルの構成方法に応じて、手動または自動で行えます。

詳しくはフェイルオーバーをご覧ください。

レプリケーションが有効な場合の行範囲の削除

Cloud Bigtable Admin API を使用すると、連続した範囲の行をその行キーに基づいて、テーブルから削除できます。レプリケーションを使用していないインスタンスでは、Cloud Bigtable は行範囲を迅速かつ効率的に削除できます。ただし、レプリケーションが有効にされている場合は、行範囲の削除は著しく遅くなり、大幅に効率が低下します。

次のステップ

このページは役立ちましたか?評価をお願いいたします。

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

Cloud Bigtable ドキュメント