継続的マテリアライズド ビューを作成して管理する

Bigtable の継続的マテリアライズド ビューを使用すると、ソーステーブルから事前計算された集計を自動的に維持することで、分析クエリを高速化できます。

これらのビューは、Google Cloud CLI、 Google Cloud コンソールの Bigtable Studio クエリ エディタ、または Java と Go 用の Bigtable クライアント ライブラリを使用して作成および管理できます。

始める前に

継続的マテリアライズド ビューの概要を確認する。

gcloud CLI を使用する場合は、次の操作を行います。

  1. Google Cloud CLI をインストールします。

  2. 外部 ID プロバイダ(IdP)を使用している場合は、まず フェデレーション ID を使用して gcloud CLI にログインする必要があります。

  3. gcloud CLI を初期化するには、次のコマンドを実行します。

    gcloud init

gcloud CLI が Method not found メッセージを返した場合は、gcloud auth login コマンドを再度実行します。

必要なロール

継続的マテリアライズド ビューの作成と管理に必要な権限を取得するには、インスタンスに対する Bigtable 管理者(roles/bigtable.admin)ロールを付与するよう管理者に依頼してください。それ以外の場合は、実行するオペレーションに応じて、インスタンス レベルで次の権限をリクエストします。

  • 作成: bigtable.materializedViews.create
  • 更新: bigtable.materializedViews.update
  • 削除: bigtable.materializedViews.delete
  • リスト: bigtable.materializedViews.list

継続的マテリアライズド ビューを作成するには、ソーステーブルに対する bigtable.tables.readRows 権限も必要です。

使用可能なロールと権限をすべて確認するには、IAM を使用した Bigtable のアクセス制御をご覧ください。

継続的マテリアライズド ビューを作成する

継続的マテリアライズド ビューを作成する前に、次の操作を行います。

  • 省略可: ベスト プラクティスとして、インスタンス内のクラスタで自動スケーリングを有効にします。これにより、Bigtable が継続的マテリアライズド ビューを処理して同期する際に、必要に応じてスケールアップし、追加のストレージ使用量を処理できます。
  • 省略可: 継続的マテリアライズド ビューをすべてのクラスタで使用できるようにするか、処理とクエリの可用性を単一のクラスタに分離するかを決定します。詳細については、非決定論的 SQL 関数をご覧ください。
  • 継続的マテリアライズド ビューのソースとして使用する、読み取り権限がある Bigtable テーブルを特定します。
  • 継続的マテリアライズド ビューを定義する SQL クエリを準備します。クエリの要件については、継続的マテリアライズド ビューのクエリをご覧ください。

コンソール

  1. Google Cloud コンソールで、Bigtable インスタンスのリストを開きます。

    インスタンスのリストを開く

  2. インスタンスを選択します。

  3. ナビゲーション パネルで [Bigtable Studio] をクリックします。

  4. をクリックして [エディタ] を選択し、新しいタブを開きます。

    1. クエリエディタが表示されたら、クエリを入力します。 クエリが有効な SQL の場合は、[有効] メッセージが表示されます。

    2. 省略可: ステートメントを SQL スタイルでフォーマットするには、[フォーマット] をクリックします。

    3. [実行] をクリックします。クエリの結果が [結果] テーブルに表示されます。

    4. クエリに問題がなければ、[名前を付けて保存] 展開矢印をクリックし、[マテリアライズド ビューとして保存] を選択します。

  5. [マテリアライズド ビューを保存] ダイアログで、ビューの名前を入力し、[保存] をクリックします。

    クエリ エディタの使用の詳細については、Bigtable Studio を使用してデータを管理するをご覧ください。

gcloud

継続的マテリアライズド ビューを作成するには、gcloud bigtable materialized-views create コマンドを使用します。

    gcloud bigtable materialized-views create VIEW \
            --instance=INSTANCE --query=QUERY

次のように置き換えます。

  • VIEW: 継続的マテリアライズド ビューの固有識別子。この ID は、継続的マテリアライズド ビューをクエリするときにテーブル ID として使用します。
  • INSTANCE: 継続的マテリアライズド ビューを作成するインスタンスの識別子。ソーステーブルと同じインスタンスである必要があります。
  • QUERY: 継続的マテリアライズド ビューを定義する有効な SQL ステートメント。

省略可: 削除からの保護を有効にする

継続的マテリアライズド ビューの削除からの保護を有効にするには、コマンドに --deletion-protection=DELETION_PROTECTION を追加します。DELETION_PROTECTION は、true または false のいずれかに置き換えます。

省略可: 単一クラスタに分離されたビューを作成する

デフォルトでは、Bigtable はインスタンス内のすべてのクラスタで継続的マテリアライズドを複製します。特定のクラスタのビューのみを保持するには、CLUSTER_ATTRIBUTE を使用してビューを定義し、--ignore-warnings フラグを渡します。

gcloud bigtable materialized-views create VIEW \
  --instance=INSTANCE \
  --query="SELECT ... WHERE CLUSTER_ATTRIBUTE('cluster_id') = 'CLUSTER_ID'" \
  --ignore-warnings

次のように置き換えます。

  • VIEW: 継続的マテリアライズド ビューの固有識別子。この ID は、継続的マテリアライズド ビューをクエリするときにテーブル ID として使用します。
  • INSTANCE: 継続的マテリアライズド ビューを作成するインスタンスの識別子。ソーステーブルと同じインスタンスである必要があります。
  • CLUSTER_ID: ビューを維持するクラスタの識別子。

CLUSTER_ATTRIBUTE はクラスタ間で異なる結果を生成するため、--ignore-warnings フラグを含めて、その違いを認識する必要があります。クエリ構文と要件の詳細については、ビューを単一のクラスタに分離するをご覧ください。

継続的マテリアライズド ビューにクエリを実行する

継続的マテリアライズド ビューがアクティブになったら、 Google Cloud コンソールの Bigtable Studio またはサポートされているクライアント ライブラリを使用して、他のテーブルと同じようにクエリを実行できます。クエリ構文と要件の詳細については、継続的マテリアライズド ビューのクエリをご覧ください。

初期設定が完了する前にビューをテストしてクエリするには、@{allow_incomplete_view=true} クエリヒントを使用します。詳細については、初期設定時のデータの読み取りをご覧ください。

継続的マテリアライズド ビューを更新する

継続的マテリアライズド ビューの削除からの保護を更新できます。継続的マテリアライズド ビューを定義する SQL クエリを更新することはできません。クエリを変更する必要がある場合は、継続的マテリアライズド ビューを削除してから、変更を含む新しいビューを作成する必要があります。

コンソール

コンソールで継続的マテリアライズド ビューを更新することはできません。代わりに gcloud CLI を使用してください。

gcloud

継続的マテリアライズド ビューの削除からの保護を有効または無効にするには、gcloud bigtable materialized-views update コマンドを使用します。

gcloud bigtable materialized-views update VIEW \
        --instance=INSTANCE --deletion-protection=DELETION_PROTECTION

次のように置き換えます。

  • VIEW: 更新する継続的マテリアライズド ビューの一意の識別子
  • INSTANCE: 継続的マテリアライズド ビューを含むインスタンスの識別子
  • DELETION_PROTECTION: true または false

継続的マテリアライズド ビューを削除する

削除からの保護が有効になっていない継続的マテリアライズド ビューは削除できます。この操作は元に戻せません。

コンソール

  1. Google Cloud コンソールで、Bigtable インスタンスのリストを開きます。

    インスタンスのリストを開く

  2. リストからインスタンスを選択します。

  3. ナビゲーション パネルで [Bigtable Studio] をクリックします。

  4. [マテリアライズド ビュー] を開きます。

  5. 削除するビューの横にある more_vert 操作メニューをクリックし、[削除] をクリックします。

gcloud

継続的マテリアライズド ビューを削除するには、gcloud bigtable materialized-views delete コマンドを使用します。

gcloud bigtable materialized-views delete VIEW \
      --instance=INSTANCE

次のように置き換えます。

  • VIEW: 削除する継続的マテリアライズド ビューの一意の識別子
  • INSTANCE: 継続的マテリアライズド ビューを含むインスタンスの識別子

継続的マテリアライズド ビューのリストを取得する

インスタンスの継続的マテリアライズド ビューのリストを表示できます。

コンソール

  1. Google Cloud コンソールで、Bigtable インスタンスのリストを開きます。

    インスタンスのリストを開く

  2. リストからインスタンスを選択します。

  3. ナビゲーション パネルで [Bigtable Studio] をクリックします。継続的マテリアライズド ビューのリストが表示されます。

  4. 省略可: インスタンスの最初の 10 個のビューが一覧表示されます。さらに 10 件を表示するには、[もっと見る] をクリックします。

gcloud

インスタンスのすべての継続的マテリアライズド ビューを一覧表示するには、gcloud bigtable materialized-views list コマンドを使用します。

gcloud bigtable materialized-views list --instance=INSTANCE

INSTANCE は、インスタンス ID に置き換えます。

次のステップ