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

アプリケーション プロファイル(アプリ プロファイル)には、アプリケーションから受信したリクエストを処理する方法を Cloud Bigtable インスタンスに指示するための設定が保存されます。アプリケーションのいずれかが Cloud Bigtable インスタンスに接続すると、アプリ プロファイルを指定できるようになります。Cloud Bigtable は、この接続によりアプリケーションが送信するリクエストに対して、このアプリ プロファイルを使用します。

アプリ プロファイルは、レプリケーションを使用するインスタンスとアプリケーションとの通信方法に作用します。このことから、複数のクラスタを使用するインスタンスには、アプリ プロファイルが特に役立ちます。インスタンスにクラスタが 1 つしかない場合でも、実行するアプリケーションごと、または 1 つのアプリケーション内のコンポーネントごとに一意のアプリ プロファイルを使用できます。この場合、アプリ プロファイルごとに Cloud Bigtable 指標のグラフを表示できます

このページでは、アプリ プロファイルが制御する設定とアプリケーションでのアプリ プロファイルの機能について説明します。一般的なユースケースの実装に使用できる設定の例については、レプリケーション設定の例をご覧ください。アプリ プロファイルの作成と管理については、アプリ プロファイルの構成をご覧ください。

アプリ プロファイルを使用してレプリケーションを構成している場合は、このページを読む前に、Cloud Bigtable レプリケーションの概要を理解する必要があります。

アプリ プロファイルの設定

アプリ プロファイルでは、Cloud Bigtable が使用するルーティング ポリシーが定義されます。また、単一行のトランザクションを許可するかどうかについても設定されます。

ルーティング ポリシー

アプリ プロファイルでは、各リクエストに対して Cloud Bigtable が使用するルーティング ポリシーが指定されます。

  • 単一クラスタのルーティングを指定すると、すべてのリクエストがインスタンス内の 1 つのクラスタにルーティングされます。そのクラスタが使用できなくなった場合、手動で別のクラスタにフェイルオーバーする必要があります。

  • 複数クラスタ ルーティングを指定すると、リクエストが自動的にインスタンス内の最も近いクラスタにルーティングされます。クラスタが利用できなくなった場合、トラフィックは自動的に利用可能な最も近いクラスタにフェイルオーバーされます。Cloud Bigtable では、1 つのリージョン内のクラスタは、ゾーンが異なる場合でも、等距離にあると見なされます。

フェイルオーバーについては、フェイルオーバーをご覧ください。フェイルオーバーを行う方法については、フェイルオーバーの管理をご覧ください。

単一行のトランザクション

Cloud Bigtable では、読み取りと書き込みは常に行レベルでアトミックです。Cloud Bigtable では行レベルより上ではアトミックな処理はできません。たとえば、Cloud Bigtable では複数の行をアトミックに更新するトランザクションはサポートされていません。

一方、Cloud Bigtable では他のデータベースでのトランザクションが必要となる一部の書き込みオペレーションがサポートされています。

  • 読み取り - 変更 - 書き込みオペレーション。インクリメントや追記などが該当します。読み取り - 変更 - 書き込みオペレーションでは、既存の値の読み取り、既存の値へのインクリメントや追加、更新された値のテーブルへの書き込みが行われます。
  • 確認 - 変更オペレーション。条件付き変更または条件付き書き込みとも呼ばれています。確認 - 変更オペレーションでは、Cloud Bigtable は行が所定の条件を満たしているかどうかを確認します。行が条件を満たす場合、Cloud Bigtable は新しい値を行に書き込みます。

実際には、Cloud Bigtable は単一行のトランザクションを使用してこれらのオペレーションを行います。これらのオペレーションには読み取りと書き込みの両方が該当します。すべての読み取りと書き込みがアトミックに実行されますが、この場合でもオペレーションは行レベルでのみアトミックです。

単一行のトランザクション間での競合

Cloud Bigtable インスタンスのすべてのクラスタは、読み取りと書き込みの両方を受け付けるプライマリ クラスタです。その結果、オペレーションで単一行のトランザクションが必要となる場合、レプリケーションを有効にすると問題が発生することがあります。たとえば、セルに ABC という値が格納されている状態で、2 件の追記オペレーションを異なるクラスタに送信した結果、1 件の追記により値が ABCDEF に変更され、もう 1 件の追記により値が ABCXYZ に変更されるものとします。Cloud Bigtable ではこの競合はどのように解決されるでしょうか。

Cloud Bigtable では、このような問題が発生しないようにするため、各アプリ プロファイルで単一行のトランザクションを許可するかどうかを指定する必要があります。また、これにより、複数クラスタのルーティングを使用するアプリ プロファイルで単一行のトランザクションを有効にできなくなります。これは、両方の機能を同時に有効にする安全な方法がないためです。

Cloud Bigtable では、単一行のトランザクションを 2 つの異なるアプリ プロファイルで有効にすると、その 2 つが単一クラスタのルーティングを使用していて、さらにそれぞれ異なるクラスタを参照している場合、警告が表示されます。このような構成を採用する場合、競合する読み取り - 変更 - 書き込みリクエストや確認 - 変更リクエストを 2 つの異なるクラスタに送信しないようにする必要があります。

アプリ プロファイルの機能

アプリ プロファイルでは、Cloud Bigtable がインスタンスの受信リクエストの処理に使用する設定を指定します。

Cloud Bigtable ユーザーの多くは、同じインスタンスに接続している複数のアプリケーションを使用しています。たとえば、あるアプリケーションでデータを顧客の要求に応じて提供し、別のアプリケーションでは、ときどき発生するバッチジョブを実行してデータを解析します。これらの異なるアプリケーションを操作するには、複数のアプリ プロファイル(少なくとも、アプリケーションごとに 1 つ)を作成し、それぞれのアプリ プロファイルに、当該のアプリケーションに適した構成を指定します。この設定により、1 つのアプリケーションの設定のみを簡単に変更できます。

また、現在のデータの表示や履歴データのクエリなどの複数の機能を 1 つのアプリケーションで実行している場合もあります。これらの各機能を操作するには、機能ごとに 1 つのアプリ プロファイルを作成します。これにより、機能ごとの異なる構成や、1 つの機能の設定のみの更新ができるようになります。

すべてのインスタンスに default アプリ プロファイルがありますが、インスタンスごとにカスタムアプリ プロファイルを作成することもできます。以降のセクションで、default アプリ プロファイルとカスタムアプリ プロファイルについて説明します。

アプリ プロファイルを使用するには、インスタンスへの接続時にコード内で目的のプロファイルを指定します。アプリ プロファイルを指定しない場合、Cloud Bigtable はインスタンスのデフォルトのアプリ プロファイルを使用します。

デフォルトのアプリ プロファイル

インスタンスが作成されると、Cloud Bigtable は自動的にそのインスタンスのデフォルトのアプリ プロファイルを作成します。アプリケーションでアプリ プロファイルが指定されていない場合、またはインスタンスへの接続に HBase シェルを使用している場合、Cloud Bigtable はデフォルトのアプリ プロファイルの設定を使用します。これらの設定の表示と変更はいつでも可能です。

インスタンスのデフォルト アプリ プロファイルの設定は、最初に作成したときにインスタンス内に存在していたクラスタの数によって異なります。

カスタム アプリ プロファイル

インスタンスごとに、多数のカスタム アプリ プロファイルを作成できます。カスタムアプリ プロファイルを使用すると、各アプリケーション、またはアプリケーション内の各機能がインスタンスとどのようにインタラクションするかを制御できます。たとえば、バッチ アプリケーション用のアプリ プロファイルで 1 つのクラスタへのトラフィックを分離できます。また、別のアプリ プロファイルを使用して他のアプリケーションの高可用性を実現することもできます。

次のステップ

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

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

Cloud Bigtable ドキュメント