論理ビューを作成して管理する

Bigtable では、論理ビューは、他の SQL クエリでクエリできる仮想テーブルとして機能する SQL クエリの結果です。データはソーステーブルに残ります。

このドキュメントでは、論理ビューと、その作成と操作の方法について説明します。継続的マテリアライズド ビューと承認済みビューとの比較については、テーブルとビューをご覧ください。

論理ビューを使用すると、Bigtable データに対して次の操作を行うことができます。

  • クエリの繰り返しを回避する: 列マッピングとキャスト ロジックを論理ビューに保存して進化させることができます。追加の論理ビューでは、そのロジックをコピーして貼り付ける必要がなく、理解する必要もありません。
  • リレーショナル データベースからの読み取り用に設計されたシステムと統合する: 論理ビューを使用すると、Bigtable データをリレーショナル データベース テーブルや Cassandra テーブルのように読み取ることができます。
  • 多くのテーブルに対して同じ論理ビューを実行する: FROM 句を変更することで、同じビューを使用して Bigtable インスタンス内の任意のテーブルをクエリできます。
  • 一貫性のあるインターフェースを提供する: ソーステーブルが変更されても、アプリケーションは論理ビューを使用できます。
  • 特定の列または行への読み取りアクセスを制限する: テーブル全体へのアクセス権を付与せずに、ユーザーに読み取りを許可するデータのみを公開できます。

論理ビューはインスタンス レベルのリソースです。論理ビューは、Google Cloud CLI または Google Cloud コンソールの Bigtable Studio クエリ エディタを使用して作成できます。論理ビューをクエリするには、Bigtable Studio クエリエディタまたは Bigtable の SQL をサポートするクライアント ライブラリを使用します。

論理ビューには次の特徴があります。

  • Bigtable 用の GoogleSQL でサポートされている SQL 機能を使用する必要があります。
  • 読み取り専用
  • ReadRows の呼び出しではなく、SQL で読み取る必要があります
  • Bigtable の SQL をサポートするクライアント ライブラリを使用してクエリできます。
  • 定義者の権限を使用します。ソーステーブルから読み取る権限がない場合でも、論理ビューから読み取る権限があれば、論理ビューをクエリできます。

論理ビューの定義に使用する行キー、列修飾子、列の値は、サービスデータとして扱われます。そのため、機密情報を含む行キー、列修飾子、列値を使用して論理ビューを作成しないでください。サービスデータの取り扱いについては、Google Cloud のプライバシーに関するお知らせをご覧ください。

始める前に

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

  1. Install the Google Cloud CLI.

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

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

    gcloud init

必要なロール

論理ビューを使用するには、次の権限が必要です。

論理ビューを管理するには:

  • 論理ビューを作成、更新、削除するには、インスタンスに対する Bigtable 管理者(roles/bigtable.admin)ロールが必要です。
  • または、インスタンス レベルで次の権限を付与するよう管理者に依頼することもできます。
    • 作成: bigtable.logicalViews.create
    • 更新: bigtable.logicalViews.update
    • 削除: bigtable.logicalViews.delete

論理ビューを表示してクエリを実行するには:

  • 論理ビューの一覧表示または説明を取得するには、インスタンスに対する Bigtable 閲覧者(roles/bigtable.reader)ロールが必要です。
  • または、インスタンス レベルで次の権限を付与するよう管理者に依頼することもできます。

    • リスト: bigtable.logicalViews.list
    • 説明: bigtable.logicalViews.get
  • 論理ビューにクエリを実行するには、論理ビューに対する bigtable.logicalViews.readRows 権限が必要です。

論理ビューを作成するには:

  • ソーステーブルに対する bigtable.tables.readRows 権限が必要です。

特定のビューに対する読み取りアクセス権を付与するには:

他の Bigtable 権限がない場合でも、特定の論理ビューを読み取る権限をユーザーに付与できます。これを行うには、IAM 条件を使用して、そのビューに対してのみ bigtable.logicalViews.readRows 権限を付与します。

  1. ユーザーにプロジェクトに対する bigtable.reader ロールを付与します。
  2. bigtable.logicalViews.readRows 権限を特定の論理ビューに制限する IAM 条件を作成します。次に例を示します。

    resource.name == projects/PROJECT_ID/instances/INSTANCE_ID/logicalViews/VIEW
    

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

    • PROJECT_ID: Bigtable インスタンスが存在する Google Cloud プロジェクト。
    • VIEW: 新しい論理ビューの ID。最大 128 文字です。ID は、インスタンス内のテーブル ID とビュー ID の間で一意である必要があります。
    • INSTANCE_ID: 論理ビューを作成するインスタンスの ID。

    詳細については、IAM 条件を使用してリソースへのアクセスを管理するをご覧ください。

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

論理ビューを作成する

コンソール

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

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

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

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

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

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

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

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

    4. クエリに問題がなければ、[保存] をクリックして [ビューを保存] を選択します。

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

gcloud

論理ビューを作成するには、gcloud bigtable logical-views create コマンドを使用します。

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

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

  • VIEW: 新しい論理ビューの ID。最大 128 文字です。ID は、インスタンス内のテーブル ID とビュー ID の間で一意である必要があります。
  • QUERY: Bigtable 用の有効な GoogleSQL クエリ
  • INSTANCE: 論理ビューを作成するインスタンスの ID

オプション:

  • 論理ビューが削除されないように保護するには、コマンドに --deletion-protection フラグを追加します。この設定を適用しない場合、論理ビューは削除できます。--no-deletion-protection を追加して、論理ビューの削除を明示的に許可することもできます。詳細については、このドキュメントの削除保護を変更するをご覧ください。

論理ビューを更新する

コンソール

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

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

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

  3. ナビゲーション パネルで [Bigtable Studio] をクリックします。エクスプローラにビューのリストが表示されます。

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

  5. 更新するビューの横にある more_vert アクション メニューをクリックし、[ビューの定義] をクリックします。

  6. クエリを変更します。

  7. [実行] をクリックします。

  8. 結果ペインにビューに含めるデータが表示されていることを確認したら、[名前を付けて保存] をクリックします。

  9. ダイアログで、変更したビューの ID を入力します。

    既存のビューを上書きする旨の警告メッセージがダイアログに表示されます。

  10. [保存] をクリックします。

gcloud

別のクエリを実行するように論理ビューを更新するには、gcloud bigtable logical-views update コマンドを使用します。

gcloud bigtable logical-views update VIEW  \
    --instance=INSTANCE --query=QUERY

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

  • VIEW: 更新する論理ビューの ID
  • QUERY: 有効な GoogleSQL クエリ
  • INSTANCE: 論理ビューを含むインスタンスの ID

論理ビューを更新して削除保護を変更するには、このドキュメントの削除保護を変更するをご覧ください。

論理ビューを削除する

この操作は元に戻すことができません。

論理ビューで削除保護が有効になっている場合、そのビューを削除することはできません。削除保護が有効になっている論理ビューを削除するには、論理ビューを更新して削除保護を無効にする必要があります。詳細については、このドキュメントの削除保護を変更するをご覧ください。

コンソール

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

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

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

  3. ナビゲーション パネルで [Bigtable Studio] をクリックします。エクスプローラにビューのリストが表示されます。

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

  5. [ビュー] を開きます。

  6. 削除するビューの横にある more_vert アクション メニューをクリックし、[削除] をクリックします。

gcloud

論理ビューを削除するには、gcloud bigtable logical-views delete コマンドを使用します。

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

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

  • VIEW: 更新する論理ビューの ID
  • INSTANCE: 論理ビューを含むインスタンスの ID

インスタンスの論理ビューのリストを取得する

インスタンスの論理ビューのリストを表示できます。

コンソール

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

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

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

  3. ナビゲーション パネルで [Bigtable Studio] をクリックします。エクスプローラにビューのリストが表示されます。

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

gcloud

インスタンスの論理ビューのリストを表示するには、gcloud bigtable logical-views list コマンドを使用します。

gcloud bigtable logical-views list --instance=INSTANCE

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

論理ビューの説明を取得する

論理ビューの詳細を取得するには、gcloud bigtable logical-views describe コマンドを使用します。

  gcloud bigtable logical-views describe VIEW \
      --instance=INSTANCE

ターミナルに次のような詳細が表示されます。

  createTime: '2025-03-07T19:49:56.316578Z'
  etag: W/"/v1/17919275593532352351"
  name: projects/my-project/instances/my-instance/logicalViews/my-view
  query: SELECT street FROM addresses
  updateTime: '2025-03-07T19:49:56.316578Z'
  deletion_protection: true

論理ビューをクエリする

論理ビューを作成したら、通常のテーブルにクエリを実行するのと同じように、SQL を使用してクエリを実行できます。論理ビューは、SELECT ステートメントの FROM 句で使用できます。

クエリエディタで、ビュー名を参照する GoogleSQL クエリを入力します。たとえば、ビューの名前が MyLogicalView の場合:

SELECT *
FROM MyLogicalView
LIMIT 100;

Bigtable で SQL クエリを実行する方法については、クエリエディタで SQL を使用してデータにクエリを実行するをご覧ください。

削除保護を変更する

削除保護により、論理ビューの削除が防止されます。論理ビューの削除保護を有効または無効にするには、必要な権限が必要です。詳細については、このドキュメントの必要なロールのセクションをご覧ください。

gcloud

論理ビューに対する削除保護を有効にするには、gcloud bigtable logical-views update コマンドを実行します。

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

論理ビューの削除保護を無効にするには、次のコマンドを実行します。

gcloud bigtable logical-views update VIEW \
    --instance=INSTANCE \
    --no-deletion-protection

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

  • VIEW: 論理ビューの ID(最大 128 文字)。ID は、インスタンス内のテーブル ID とビュー ID の間で一意である必要があります。
  • INSTANCE: 論理ビューを更新するインスタンスの ID。

次のステップ